Lien canonical et page détail modules -
Jean le Chauve - 13/02/2013
Bonjour,
Astuce tirée de la lecture de ce post :
http://forum.cmsmadesimple.org/viewtopic.php?f=13&t=63929
J'utilise le module CGCalendar.
Dans une page "Agenda", j'ai donc placé {cms_module module="CGCalendar" display="upcominglist" limit="7"}
Dans cette page "agenda" je vois la liste des événements prochains.
Dans les préférences du modules j'ai choisi la page Agenda pour afficher le détail (Page par défaut qui contient le calendrier. Cette page doit contenir la balise smarty qui appelle le calendrier. Nécessaire si vous utilisez les "pretty URLs".
.
Le détail d'un événement s'affiche donc dans cette page avec une url du type :
www.duventdanslescordes.be/agenda/96/24-HLaiMe-A-Travers-Chants
Magnifique, ça marche, sauf que le code source affiche
<link rel="canonical" href="www.duventdanslescordes.be/agenda" />
au lieu de
<link rel="canonical" href="www.duventdanslescordes.be/agenda/96/24-HLaiMe-A-Travers-Chants" />
Solution : ouvrez le gabarit de détail de l'événement du module et placez ce code au début :
Code :
[== Indéfini ==]
{capture assign='canonicalModule'}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}{/capture}
Et dans votre gabarit principal, remplacez
Code :
[== Indéfini ==]
{if isset($canonical)}<link rel="canonical" href="{$canonical}" />
{elseif isset($content_obj)}<link rel="canonical" href="{$content_obj->GetURL()}" />{/if}
par
Code :
[== Indéfini ==]
{if isset($canonicalModule)}<link rel="canonical" href="{$canonicalModule}" />
{else}{if isset($canonical)}<link rel="canonical" href="{$canonical}" />
{elseif isset($content_obj)}<link rel="canonical" href="{$content_obj->GetURL()}" />{/if}{/if}
News incorpore déjà son propre système et vous n'avez donc pas besoin de faire cette modif.
Il semble que cela devrait fonctionner pour CGBloc et autres modules utilisant un gabarit de détail.
Et voilà, la prochaine fois que vous appelerez un blog ou un événement spécifique, le lien canonical sera celui de l'événement
Have fun