[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 08/08/2012
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: #1.10.3
#~ Url du site :
#~ Hébergeur / Soft : localhost
#~ Informations Système :
#~ 1.11.1 (JCE)
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~
Bonjour,
Suite à l'upgrade vers 1.11 voici quelques retours d'expérience:
Ceux qui rencontrent des problèmes avec le module News, le tag SocialBookmarking et le module CGFeedBack tireront grand profit de la mise à jour différentielle diffusée par JCE sur son site (un grand merci à JCE de nous faire profiter avec quelques heures d'avance de la dernière Maj).
Sinon la syntaxe "smarty" doit désormais être impeccable... Les UDT (les miens, pas ceux des autres) qui fonctionnaient bien en 1.10.3 causent désormais un certain nombre d'erreurs.
Faites impérativement un upgrade en local avant de tenter l'upgrade sur un site en production sous peine de...
Sinon cette syntaxe ne fonctionne plus (extrait
http://wiki.cmsmadesimple.fr/wiki/Udt_base)
Code :
[== Indéfini ==]
$smarty = cmsms()->GetSmarty();
$smarty_data = "{menu}";
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
echo $_contents;
à cause de la méthode "_compile_source", (erreur
Code :
[== Indéfini ==]
Call of unknown method '_compile_source'.
Error: at line 806 in file C:\wamp\www\wxs\lib\smarty\sysplugins\smarty_internal_templatebase.php
) je n'ai pas trouvé comment réécrire la chose en Smarty3. Il y a bien un thread sur le sujet dans le forum anglais
ici mais la solution ne s'y trouve pas !
Voilà si quelqu'un s'est déjà penché sur ce point...
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 08/08/2012
J'ai rencontré l'erreur (sur
www.su3.fr)
Je n'ai pas encore de solution. Je reste à l'écoute de ce thread
Apparemment la solution sera de repasser par une fonction purement Smarty de compilation (et non une fonction custom interne à cmsms comme c'était le cas avant)
[Résolu]udt et smarty - remplacer méthode _compile_source -
Jean le Chauve - 08/08/2012
De la manière dont les 2 ont répondu à ton post, je me demande si tu vas recevoir une réponse plus efficace.
Te remballer sur smarty.net n'est pas des plus sympas, surtout sans donner de lien précis
C'est pourtant la seule méthode que je connaisse pour incorporer des balises smarty dans une udt.
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 08/08/2012
http://www.smarty.net/docs/en/api.functions.tpl
Notre solution est l'une de ces fonctions, je regarde laquelle correspondrait au mieux à notre besoin : transformer une chaine vers un Objet Template Smarty et ensuite de pouvoir le compiler
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 08/08/2012
regarde de ce côté :
http://www.smarty.net/docs/en/resources.string.tpl
Dans ton UDT "toto":
Code :
$smarty->assign('foo','value');
$template_string = 'display {$foo} here';
$smarty->display('string:'.$template_string); // compiles for later reuse
$smarty->display('eval:'.$template_string); // compiles every time
Dans ton gabarit
Code :
{toto}{include file="string:$template_string"} {* compiles for later reuse *}
{toto}{include file="eval:$template_string"} {* compiles every time *}
[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 08/08/2012
Salut et merci Bess !
Dans mon cas je cherche à appeler un UDT dans un autre UDT (tu parles de gabarit, je dois mal comprendre). Je viens de faire un essai avec cette méthode mais j'ai du en "faire une", cela ne marche pas.
C'est vrai que sur le forum US la réponse faite à "rotezecke" ne fait guère avancer la chose... La doc Smarty, entre nous c'est pas vraiment un modèle de pédagogie hein! :/
[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 08/08/2012
Je ne sais pas comment on modifie le Wiki mais ce serait bien, une fois la solution trouvée et validée, de modifier l'article en question histoire de ne pas laisser de "scories anciennes".
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 08/08/2012
le wiki est en mode "accès écriture sur demande" pour éviter le spam.
Je te créé un compte pour l'occasion
[Résolu]udt et smarty - remplacer méthode _compile_source -
jce76350 - 08/08/2012
Ce serrait pas mieux de déplacer cette discussion dans Modules, Tags, Aide concernant l'utilisation des modules, balises et balises utilisateur car les propos pas grand chose n à voir avec Installation ?
[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 08/08/2012
Bonsoir JCE,
Effectivement cela a plus à voir avec les balises utilisateurs, tu as raison. Je l'ai mis ici car la difficulté n'est rencontrée que lors de l'installation de la 1.11 avec l'adoption de Smarty3 et je pensais que pour les nouveaux utilisateurs de la 1.11 confrontés au problème il n'était pas complètement illogique de consulter cette section.
Merci Bess pour le compte, je n'ai pas encore eu le temps de regarder le problème, mais dès que cela "tourne", je modifie le Wiki.
[Résolu]udt et smarty - remplacer méthode _compile_source -
jce76350 - 09/08/2012
Citation :Effectivement cela a plus à voir avec les balises utilisateurs, tu as raison. Je l'ai mis ici car la difficulté n'est rencontrée que lors de l'installation de la 1.11 avec l'adoption de Smarty3
Oui mais rien a voir avec installation , justes un problème de balises en CMSms 1.11
Donc je déplace dans Modules, Tags
[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 09/08/2012
Merci JCE d'avoir déplacé ce "thread". je n'ai pas encore eu le temps de regarder de plus près les méthodes disponibles que Bess a eu la gentillesse de m'indiquer (a vrai dire j'ai fait une vague tentative puis j'ai été occupé par ailleurs).
[Résolu]udt et smarty - remplacer méthode _compile_source -
kraygoon - 16/08/2012
Je ne sais pas si vous aviez réussi à trouver solution, mais voici la mienne :
Code :
[== PHP ==]
$smarty = cmsms()->GetSmarty();
$smarty_data = "{menu}";
@ob_start();
echo $smarty->display('string:'.$smarty_data) ;
$_contents = @ob_get_contents();
@ob_end_clean();
echo $_contents;
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 16/08/2012
Je confirme Kraygoon : tu as tout bon dans le code, ça fonctionne impec chez moi. Merci pour l'astuce que je reporte dans le WIKI aussitôt
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 16/08/2012
Rectification de Calguy1000
Code :
$smarty = cmsms()->GetSmarty();
$smarty_data = "{menu}";
echo $smarty->display('string:'.$smarty_data) ;
effectivement ^^
[Résolu]udt et smarty - remplacer méthode _compile_source -
kraygoon - 17/08/2012
Désolé pour le « @ob_start() » et la suite. En effet, je n'avais pas rencontré précisément ce code et il fallait que le retour du $smarty->display() me soit fourni dans une variable.
[Résolu]udt et smarty - remplacer méthode _compile_source -
bess - 17/08/2012
aucun soucis, moi même en regardant le code superflu je me suis dis "putain pourquoi je l'avais pas vu celle là"...
j'imagine qu'en ayant démarré de l'ancien code , ça a faussé notre jugement parce que oui clairement il y avait du superflu et qu'aucun de nous ne l'a vu ^^
j'ai mis à jour les docs wiki.
[Résolu]udt et smarty - remplacer méthode _compile_source -
pierrepercee - 17/08/2012
Grand merci à tous. Je n'ai pas eu le temps de me pencher dessus ces derniers jours et mes affinités avec la syntaxe Smarty étant ce qu'elles sont cela aurait sans doute donné un "Brontosaure" à peine bricolé et tout juste fonctionnel.
Merci à Bess d'avoir modifié le Wiki !