Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

news : afficher le titre de la news comme titre de la page et + encore
#1

Origine : http://forum.cmsmadesimple.org/index.php...75.15.html

Vous désirez que, lorsqu'une news a été cliquée, la page de détail reçoive comme titre celui de la news. Et que cela se répercute sur le breadcrumbs et la balise <h1> (ou h2).

Allons-y :

1° Contenu => Articles => Gabarit du détail article

Placez ce qui suit au tout début du gabarit (par défaut 'Sample'):
Code :
{assign var='pagetitle'  value=$entry->title}
Cela insère le titre de la news dans la variable $pagetitle que nous utiliserons dans le gabarit de la page.

2° Disposition => Gabarits

Ouvrez votre gabarit principal, déplacez {process_pagedata}, ajoutez {capture assign='captured_content'}{content}{/capture} et modifiez la ligne contenant <title> comme suit :
Code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
{process_pagedata}
{capture assign='captured_content'}{content}{/capture}
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr_FR">
<head>
<title>{if isset($pagetitle)}{$pagetitle} - {sitename}{else}{title} - {sitename}{/if}</title>
{* sitename est modifié dans Site Admin/Global settings. {title} est le nom de chaque page *}
{* {$page_name!='news'} 'news' est l'alias, le nom ou l'ID de la page assignée à recevoir le détail des news, modifiez selon vos besoins *}
{if isset($canonical) AND $page_name!='news'}<link rel="canonical" href="{$canonical}" />{elseif isset($content_obj) AND $page_name!='news'}<link rel="canonical" href="{$content_obj->GetURL()}" />{/if}
{/if}
{metadata}
{cms_stylesheet}
    </head>
Ici, nous créons une condition : si la variable $pagetitle existe, affiche les variables sitename et pagetitle, sinon affiche sitename et title.
Pour que nous puissions agir sur le content (qui va être remplacé par le détail de la news), nous devons tout d'abord assigner la variable captured_content à content. C'est réalisé avec {capture assign='captured_content'}{content}{/capture}.

3° Le breadcrumds :

Trouvez la balise breadcrumbs et modifiez-la ainsi :
Code :
{* Start Breadcrumbs *}
   <div class="breadcrumbs">
  {if isset($pagetitle)}{breadcrumbs starttext='Vous êtes ici' root='Home' delimiter='»'} -> {$pagetitle}
{else}
   {breadcrumbs starttext='Vous êtes ici' root='Home' delimiter='»'}
{/if}
4° Le titre du contenu et le contenu:
Code :
{* Start Content Area *}
      <div id="main">
         <h2>{if isset($pagetitle)}{$pagetitle}{else}{title}{/if}</h2>
        {$capturedcontent}<br />
5° Utilisez le paramètre detailpage=news dans l'appel au module dans le gabarit . Ex, si la news est dans la sidebar :
Code :
{* Start Sidebar *}
      <div id="sidebar" class="hascontent">
        {news lang="fr_FR" detailpage="news"} {content block='Sidebar'}
      </div>
      {* End Sidebar *}
6° Créer une page "news" (modifier le nom comme vous le souhaitez mais n'oubliez pas de modifier en conséquence les points 2, 4 et 5)

Placez dans le contenu de la page :
Code :
{news category="General" detailpage="news"}
Adaptez les paramètres selon vos besoins.

EDIT : ajout de canonical au point 2 (pas de canonical dans la page de détail des news)
EDIT 09-08-2010 : modification pour la version cmsms 1.8+ (merci à nicolas-web2)

Have fun Smile
Répondre


Messages dans ce sujet

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)