Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 05/11/2014 16:54:31

Steve
Petit nouveau
Inscription : 05/11/2014
Messages : 4

[Résolu] smarty et balise {php}

#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.11
#~ Url du site : local
#~ Hébergeur / Soft : lamp php 5.3.27
#~ Informations Système :
#~      ----------------------------------------------
#~      Cms Version: 1.11.11
#~      Installed Modules:
#~          CMSMailer: 5.2.2
#~          CMSPrinting: 1.0.5
#~          FileManager: 1.4.5
#~          MenuManager: 1.8.6
#~          MicroTiny: 1.2.7
#~          ModuleManager: 1.5.8
#~          News: 2.14.4
#~          Search: 1.7.11
#~          ThemeManager: 1.1.8
#~          OpenStatisticsCommunity: 0.2.0
#~          TemplateExternalizer: 1.3
#~          Archiver: 0.2.4
#~          TinyMCE: 2.9.11
#~          FrontEndUsers: 1.18.1
#~          CGExtensions: 1.31
#~          CGCalendar: 1.10.0.1
#~          CustomContent: 1.8.3
#~          FormBuilder: 0.7.3
#~          NewsSlides: 1.2
#~          JQueryTools: 1.1.1
#~          CGContentUtils: 1.3.3
#~          Showtime: 3.2
#~          Statistics: 1.1.3
#~          CGFeedMaker: 1.0.16
#~          CGJobMgr: 1.2.7
#~          NMS: 2.5.6
#~      Config Information:
#~          php_memory_limit:
#~          process_whole_template:
#~          max_upload_size: 100000000
#~          url_rewriting: none
#~          page_extension: .html
#~          query_var: page
#~          image_manipulation_prog: GD
#~          auto_alias_content: true
#~          locale:
#~          default_encoding: utf-8
#~          admin_encoding: utf-8
#~          set_names: true
#~      Php Information:
#~          phpversion: 5.3.27
#~          md5_function: On (True)
#~          gd_version: 2
#~          tempnam_function: On (True)
#~          magic_quotes_runtime: Off (False)
#~          E_STRICT: 2048
#~          E_DEPRECATED: 8192
#~          memory_limit: 1024M
#~          max_execution_time: 1200
#~          output_buffering: 4096
#~          safe_mode: Off (False)
#~          file_uploads: On (True)
#~          post_max_size: 100M
#~          upload_max_filesize: 100M
#~          session_save_path: /tmp (0777)
#~          session_use_cookies: On (True)
#~          xml_function: On (True)
#~          xmlreader_class: On (True)
#~      Server Information:
#~          Server Api: cgi-fcgi
#~          Server Db Type: MySQL (mysql)
#~          Server Db Version: 5.0.77
#~          Server Db Grants: Found a "GRANT ALL" statement that appears to be suitable
#~          Server Time Diff: No filesystem time difference found
#~      ----------------------------------------------
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~



Salut à tous,

Nous avons migré de la version 1.10.3 à la dernière version.
Nous avons des menus avec des balises {php} et voici l'erreur :


Error: at line 62 in file /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php:

Syntax error in template "globalcontent:menu"  on line 62 "
HOME
" unknown tag "echo"


#0 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(575): Smarty_Internal_TemplateCompilerBase->trigger_template_error('unknown tag "ec...', 62)
#1 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templateparser.php(2383): Smarty_Internal_TemplateCompilerBase->compileTag('echo', Array)
#2 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templateparser.php(3093): Smarty_Internal_Templateparser->yy_r37()
#3 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templateparser.php(3191): Smarty_Internal_Templateparser->yy_reduce(37)
#4 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_smartytemplatecompiler.php(111): Smarty_Internal_Templateparser->doParse(25, ';')
#5 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templatecompilerbase.php(273): Smarty_Internal_SmartyTemplateCompiler->doCompile('??global $gCms;...')
#6 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_template.php(186): Smarty_Internal_TemplateCompilerBase->compileTemplate(Object(Smarty_Internal_Template))
#7 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templatebase.php(149): Smarty_Internal_Template->compileTemplateSource()
#8 /usr/local/apache/htdocs/nmtripy/lib/classes/class.Smarty_CMS.php(326): Smarty_Internal_TemplateBase->fetch('globalcontent:m...', 'p15', NULL, NULL, false, false, false)
#9 /usr/local/apache/htdocs/nmtripy/plugins/function.global_content.php(23): Smarty_CMS->fetch('globalcontent:m...')
#10 /usr/local/apache/htdocs/nmtripy/tmp/templates_c/e47747a9d075f96463f3d893a106f66f740181e5.tpl_body.23.php(27): smarty_function_global_content(Array, Object(Smarty_Internal_Template))
#11 /usr/local/apache/htdocs/nmtripy/lib/smarty/libs/sysplugins/smarty_internal_templatebase.php(182): content_545a2c635bbc69_10240138(Object(Smarty_Internal_Template))
#12 /usr/local/apache/htdocs/nmtripy/lib/classes/class.Smarty_CMS.php(326): Smarty_Internal_TemplateBase->fetch('tpl_body:23', 'p15', NULL, NULL, false, false, false)
#13 /usr/local/apache/htdocs/nmtripy/index.php(240): Smarty_CMS->fetch('tpl_body:23')
#14 {main}

le echo se fait entre les balises {php} {/php}

Avez-vous une idée ?

Merci à vous.

Edit : Je précise que normalement, cela devrait fonctionner vu que vous utilisez SmartyBC et il y a un registerPlugins('block', 'php', 'smarty_php_tag').
J'ai fait un var_dump dans cette function et elle n'est pas appelée. J'imagine qu'il y a un problème suite à votre override ?

Dernière modification par Steve (06/11/2014 09:31:39)

Hors ligne

 

#2 05/11/2014 17:19:00

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 051
Site Web

Re : [Résolu] smarty et balise {php}

la réponse est dans ta question : " unknown tag "echo"
tu as une balise echo inconnue
http://wiki.cmsmadesimple.fr/wiki/Udt_base
http://docs.cmsmadesimple.org/tags/user … ting-a-udt

et je déplace dans le bon forum Modules, Tags


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#3 05/11/2014 17:31:01

Steve
Petit nouveau
Inscription : 05/11/2014
Messages : 4

Re : [Résolu] smarty et balise {php}

Salut,

Merci pour la réponse rapide mais echo n'est pas une balise mais une fonction php :

Admin => Content => Global Content Blocks

Menu :

[== Indéfini ==]
{php}
global $gCms;

$manager =& $gCms->GetHierarchyManager();

$var = 'root_page_id';
if( isset($params['assign']) && $params['assign'] != '' )
{
  $var = $params['assign'];
}
$result = "NO RESULT";
$thisPage = $gCms->variables['content_id'];
$currentNode = &$manager->sureGetNodeById($thisPage);
while( isset($currentNode) && $currentNode->getLevel() >= 0 )
{
    $currentContent =& $currentNode->getContent();
    $result = $currentContent->Hierarchy();
    $currentNode =& $currentNode->getParentNode();
}

/*
echo $result;
*/



switch ($result) {

case "":
    $home = true;
    break;	
	
case 1:
    $home = true;
    break;	
case 2:
    $project = true;
    break;		
    
case 3:
    $partners = true;
    break;
    
case 4:
    $library = true;
    break;
        
case 5:
    $contact = true;
    break;
    
 default:
  $home = true;
   break; 
}
/*
echo $gCms->variables['page_name'];
*/
{/php}
<div id="header_bottom">
  <ul class="nav">
    <li ><a href="index.php?page=home" class="bouton_menu{php} if ($home == true){echo "_current"; }  {/php}"  onmouseover ="javascript:ak_hidelayer('sm_1');ak_hidelayer('sm_2');ak_hidelayer('sm_3')" >HOME</a></li>
    <li><a href="index.php?page=project" class="bouton_menu{php} if ($project == true){echo "_current"; }  {/php}"  onmouseover ="javascript:ak_showlayer('sm_3');ak_hidelayer('sm_1');ak_hidelayer('sm_2')">PROJECT</a>
      <ul class="submenu" id="sm_3" onmouseout="ak_hidelayer('sm_3')" >
<li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=committees">Management Committees</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=project">MIP-DILI Project</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-1">Work package 1</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-2">Work package 2</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-3">Work package 3</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-4">Work package 4</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-5">Work package 5</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-6">Work package 6</a></li>
        <li  onmouseover ="javascript:ak_showlayer('sm_3')"><a href="index.php?page=work-package-7">Work package 7</a></li>
    </li>
      </ul>
    <li ><a href="index.php?page=partners"class="bouton_menu{php} if ($partners == true){echo "_current"; }  {/php}" onmouseover="javascript:ak_showlayer('sm_1');ak_hidelayer('sm_2');ak_hidelayer('sm_3')" >PARTNERS</a>
      <ul class="submenu" id="sm_1"  onmouseout="ak_hidelayer('sm_1')">
        <li onmouseover ="javascript:ak_showlayer('sm_1')"><a href="index.php?page=partners&menu=efpia">EFPIA Members</a></li>
<li onmouseover ="javascript:ak_showlayer('sm_1')"><a href="index.php?page=partners&menu=academics">Academics</a></li>
<li onmouseover ="javascript:ak_showlayer('sm_1')"><a href="index.php?page=partners&menu=smes">SMEs</a></li>
  
        <!-- <li><a href="index.php?page=job-announcements">Job Announcements</a></li>-->
      </ul>
    </li>
    <li ><a href="index.php?page=library" class="bouton_menu{php} if ($library == true){echo "_current"; }  {/php}" onmouseover="javascript:showlayer('sm_2');ak_hidelayer('sm_1');ak_hidelayer('sm_3')" >LIBRARY</a>
      <ul class="submenu" id="sm_2"  onmouseout="ak_hidelayer('sm_2')">
        <li onmouseover ="javascript:ak_showlayer('sm_2')"><a href="index.php?page=library">News & Publications</a></li>
        <li onmouseover ="javascript:ak_showlayer('sm_2')"><a href="index.php?page=archives">Archives</a></li>
        <li onmouseover ="javascript:ak_showlayer('sm_2')"><a href="index.php?page=glossary">Glossary</a></li>
<li onmouseover ="javascript:ak_showlayer('sm_2')"><a href="index.php?page=links">Links</a></li>
      </ul>
    </li>
    <!--  <li  ><a href="index.php?page=news" class="bouton_menu{php} if ($news == true){echo "_current"; }  {/php}">NEWS</a></li>--> 
    <!--    <li><a href="index.php?page=events" class="bouton_menu{php} if ($events == true){echo "_current"; }  {/php}">EVENTS</a></li>-->
    <li ><a href="index.php?page=contact" class="bouton_menu{php} if ($contact == true){echo "_current"; }  {/php}" onmouseover ="javascript:ak_hidelayer('sm_1');ak_hidelayer('sm_2');ak_hidelayer('sm_3')">CONTACT</a></li>
  </ul>
</div>

Les erreurs viennent de ceci :

{php} if ($home == true){echo "_current"; }  {/php}

alors que normalement :

SmartyBC.class.php :

[== Indéfini ==]
    public function __construct(array $options=array())
    {
        parent::__construct($options);
        // register {php} tag
        $this->registerPlugin('block', 'php', 'smarty_php_tag');
    }


/**
 * Smarty {php}{/php} block function
 *
 * @param array   $params   parameter list
 * @param string  $content  contents of the block
 * @param object  $template template object
 * @param boolean &$repeat  repeat flag
 * @return string content re-formatted
 */
function smarty_php_tag($params, $content, $template, &$repeat)
{
    eval($content);

    return '';
}

Le PHP devrait être eval, non parsé.

Hors ligne

#4 05/11/2014 17:38:30

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 051
Site Web

Re : [Résolu] smarty et balise {php}

{php} if ($home == true){echo "_current"; }  {/php}

ça se trouve à quel endroit ce code


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#5 05/11/2014 17:45:38

Steve
Petit nouveau
Inscription : 05/11/2014
Messages : 4

Re : [Résolu] smarty et balise {php}

Dans un block de contenu, ici : Admin => Content => Global Content Blocks
Cela fonctionnait sans souci, avant le passage vers la nouvelle version

Hors ligne

#6 05/11/2014 17:51:21

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 051
Site Web

Re : [Résolu] smarty et balise {php}

Cela fonctionnait sans souci, avant le passage vers la nouvelle version

ha oui mais il y a eu des modifications wink
lire les 2 liens donnés sur les balises plus haut


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#7 05/11/2014 17:56:39

jissey
Administrateur
Lieu : Volx
Inscription : 30/10/2009
Messages : 2 532
Site Web

Re : [Résolu] smarty et balise {php}

Bonjour,
utiliser une UDT.


Inscrivez-vous à notre Newsletter sur le site (colonne de droite, en bas).
Vous appréciez CMSMS et l'aide qui vous est fournie ici, aidez-nous en participant au projet.
Formation CMS Made Simple | Création de site CMS Made Simple.

C'est en se plantant qu'on devient cultivé.
J'ai un string dans l'Array (Paris Hilton)

Hors ligne

#8 05/11/2014 17:59:22

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 051
Site Web

Re : [Résolu] smarty et balise {php}

{php}{/php}  supprimé en  1.11 voir le changelog Removed the use_smarty_php_tags config variable
et lire http://www.cmsmadesimple.fr/forum/viewtopic.php?id=5350


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

#9 05/11/2014 18:32:28

bess
Administrateur
Lieu : Rennes
Inscription : 16/12/2008
Messages : 6 094
Site Web

Re : [Résolu] smarty et balise {php}

Pas mieux que mes collègues : il te faut passer par une balise utilisateur. En gros tu copie colle le contenu de l'ancien {php}{/php} et tu adapte le code

exemple :

avant : {php} if ($home == true){echo "_current"; }  {/php}
après dans l'udt "toto" :  if ($home == true){echo "_current"; } 
et l'appel à l'udt dans ton gabarit : {toto}


+sécurisé
+propre pour la factorisation de code
++ simple car 100% php et non plus un mix entre php / smarty

Hors ligne

#10 06/11/2014 09:28:20

Steve
Petit nouveau
Inscription : 05/11/2014
Messages : 4

Re : [Résolu] smarty et balise {php}

Salut à vous,

Cela fonctionne, un très très grand merci pour votre aide et la rapidité !

Bonne journée,
Steve.

Hors ligne

Pied de page des forums

  Flux Rss Twitter FaceBook