La Gestion de Contenu Simplifiée
Faire un module qui agisse sur le titre d'une page
Question : comment faire pour que votre module soit capable d'agir sur la balise La Gestion de Contenu Simplifiée de votre gabarit ? réponses dans cette news :)
Edit 8 Octobre : article mis à jour (il manquait un bout)
Etape n°1 :
Assurez vous que $config['process_whole_template'] = false; dans le fichier de config.php
Etape n°2 :
Dans le gabarit de votre module, assignez à smarty le titre de votre choix :
{assign var='title' value='mon super titre'}
Note : vous pouvez également le faire depuis les classes PHP :
$smarty->assign('title','mon super titre');
Etape n°3:
Dans le gabarit de votre page :
remplacez
{process_pagedata}
par
{*process_pagedata*}{content assign=""capturedcontent""}
remplacez
{content}
par
{*content*}{$capturedcontent}
et enfin remplacez (dans notre exemple)
<title>{$title}</title>
par
<title>{if isset($title)}
{$title}
{else}
{title}
{/if}</title>
Ainsi votre site sera capable d'afficher 'mon super titre' dans la balise <title> dès que votre module sera utilisé. Pratique pour améliorer votre référencement des pages du module
Comment ça fonctionne ?
Le {process_pagedata} à pour but d'interpréter toute la page en smarty avant de faire appel aux modules. Alors forcement avec cette ligne, toute tentative d'insertion dans smarty de valeur personnalisée ne pourrait pas fonctionner, ceci explique donc notre suppression de {process_pagedata}.
Ensuite nous avons mis en place une grosse condition : si la variable $title existe, c'est que nous sommes dans une page qui affiche notre module. Il faut donc afficher $title plutôt que d'appeler la balise title de cmsmadesimple habituellement utilisée.
Mon conseil : utilisez cette astuce pour plein de choses, comme l'inclusion de librairies JS nécessaires uniquement pour vos modules :)