Smarty assign scope global - Version imprimable +- Forum CMS Made Simple FR (https://www.cmsmadesimple.fr/forum) +-- Forum : Général (https://www.cmsmadesimple.fr/forum/forum-3.html) +--- Forum : Modules, Tags (https://www.cmsmadesimple.fr/forum/forum-14.html) +--- Sujet : Smarty assign scope global (/thread-3995.html) |
Smarty assign scope global - bobjo - 09/03/2017 Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~ Bonjour, Sur un site j'utilise CGBlog. Dans le gabarit de détail des article je passe le titre à une variable smarty afin de l'utiliser dans mon gabarit principal pour l'intégrer dans la balise title. Assignation du titre de l'article : Code : [== Indéfini ==] Intégration dans la balise title du gabarit principal : Code : [== Indéfini ==] Je suis entrain d'intégrer des microdata dans mes pages et j'ai besoin du titre de mon article. Étrangement, lorsque je met ma variable {$actu_title} en dehors de la balise head je n'ai rien qui s'affiche... Code : [== HTML ==] J'ai testé en mettant la variable juste avant la fermeture de la balise head, j'ai bien le titre de mon article. J'ai testé en mettant la variable entre la fermeture de ma balise head et l'ouverture de la balise body, rien. J'ai testé en mettant la variable juste après l'ouverture de la balise body, rien. Je ne comprend pas pourquoi ma variable se vide (ou est détruite) après la fermeture de la balise head. Si vous avez des réponses ou des solutions merci d'avance Cordialement bobjo Smarty assign scope global - Jean le Chauve - 09/03/2017 Je crois qu'écrire ton code comme ceci devrait te permettre de rendre la variable disponible dans le body et les autres gabarits : Code : {assign var='actu_title' value=$entry->title} Smarty assign scope global - bobjo - 09/03/2017 Bonjour, Merci de me répondre. Je viens de tester ta solution mais cela ne change rien. Cordialement bobjo Smarty assign scope global - Jean le Chauve - 09/03/2017 Ok, alors essaye ceci dans ton body : Code : [== Indéfini ==] Smarty assign scope global - Azam - 09/03/2017 Bonjour, La solution ci-dessous fonctionne chez moi. Gabarit de détail CGBlog Code : [== Indéfini ==] Gabarit de page Code : [== Indéfini ==] Bonne soirée Smarty assign scope global - bobjo - 10/03/2017 Bonjour, @Jean le Chauve : Je viens de tester la seconde solution que tu me propose. Mais je ne comprend pas bien ce que je dois mettre dans mon gabarit. Dans un premier temps j'ai mis ça : Code : [== Indéfini ==] Dans un deuxième temps j'ai mis ça : Code : [== Indéfini ==] Dans troisième temps j'ai mis ça : Code : [== Indéfini ==] Puis j'ai essayé ça dans le gabarit du détail article: Code : [== Indéfini ==] @Azam : J'utilise le même système que toi pour afficher le title dans mon gabarit est cela fonctionne temps que je reste dans la balise head. Le problème c'est lorsque je veux utiliser ma variable dans la balise body il semble qu'elle soit vidée ou supprimée. Tu peux essayer sur ton site. Tu place ta variable {$titre} dans la balise body de ton gabarit rien ne sera affiché. Merci à vous de prendre du temps pour mon problème. Cordialement bobjo Smarty assign scope global - Azam - 10/03/2017 Bonjour, Je viens de faire le test, ça fonctionne aussi dans le body. Cordialement, Smarty assign scope global - Jean le Chauve - 10/03/2017 Effectivement, modulecall doit être remplacé par le nom du module qui est ainsi assigné à la variable $foo, ce qui permet de pouvoir faire plusieurs appels à ce module dans le même gabarit, sans devoir requêter la BD à chaque appel. Mais, j'ai été trop vite pour te proposer cela, et n'est pas utile dans ce cas. C'est quoi, la version de ton cms ? Parce qu'Azam a raison, ta variable devrait être disponible partout. Sinon, essaye ceci dans ta head : Code : [== Indéfini ==] Smarty assign scope global - bobjo - 10/03/2017 Bonjour, Ma version de CMSMS est 2.1.3 (c'est précisé dans le premier poste) J'ai trouvé une solution en mettant le type de microdata dans la balise html au lieu de la balise body. Ainsi je peux mettre ma variable dans la balise head. Mais je ne sais pas dans quelle mesure cela est une bonne pratique (j'ai suivie les exemples que fourni google et schema.org pour l'intégration des microdata) bien que l'outil de teste de google ne retourne pas d'erreur. Je vais tester ta dernière solution et je vous tiens au courant. Encore une fois merci. Cordialement bobjo |