Imprimer cette page

Smarty

Smarty est le moteur de template utilisé dans CMS Made Simple. Ca marche bien, jusqu'au jour où vous voulez afficher un peu de code source (dans mon cas un bout de awk). L'utilisation des accolades } délimite les balises de template. Aussi dès que vous tapez du code des accolades et que Smarty ne sait pas comment le compiler vous obtenez par exemple :

string(128) "Smarty error: [in content:content_en line 1]: syntax error: unrecognized tag 'dummy' (Smarty_Compiler.class.php, line 593)"

En cherchant un peu, j'ai trouvé une solution de contournement pour afficher ces caractères, il s'agit est d'utiliser le mot clé , il faut taper } .

Aussi, j'ai modifié le code de la classe Smarty_Compiler afin de prendre en charge deux nouveaux symboles : }}}. Il faut ajouter dans la méthode _compile_file les lignes suivantes :

        $pattern[0] = '/}' ;
        $pattern[1] = '/}}}}/' ;
        $replacement[1] = '}' ;
        $source_content = preg_replace($pattern, $replacement, $source_content);

avant les lignes :

       $search = "~}\*(.*?)\*}|}\s*literal\s*}(.*?)}\s*/literal\s*}|}\s*php\s*}(.*?)}\s*/php\s*}~s";

        preg_match_all($search, $source_content, $match,  PREG_SET_ORDER);
 

Page précédente: CMS Made Simple
Page suivante: ChuWiki