Changer le titre de la page dans un plugin

Posté le 26-01-2009

Voici un code assez pratique qui vous permet de changer le titre de la page au sein d’un plugin. C’est d’autant plus pratique que cela peut mettre à jour votre style de page en même temps (si vous avez un typoscript qui affecte à une balise le titre de la page). Ce code peut être intéressant pour répondre aux contraintes d’accessibilité en changeant le titre de la page lorsque l’on navigue entre différents enregistrements. Il est par exemple utilisé dans tt_news.

function changePageTitle ($new_title) {
    // Caution : you do not must be in user_int because it doesn't work 
    $GLOBALS['TSFE']->page['title'] =  $new_title;
    // set pagetitle for indexed search to news title
    $GLOBALS['TSFE']->indexedDocTitle =  $new_title;
}

Attention (très important) : j’ai passé quelque temps au début à essayer ce code sans qu’il ne marche. J’ai alors découvert la raison qui faisait que mon titre ne changeait jamais : mon extension était en USER_INT. Si on souhaite changer le titre de page, l’extension doit obligatoirement être en USER. Si votre plugin est en USER_INT et que vous souhaitez quand même accéder au titre de la page, on peut opérer de la manière suivante (personnellement je déconseille ce type de procédé, mais je le donne à titre informatif)

$GLOBALS['TSFE']->content = preg_replace(
  '@<title>(.+):(.*)</title>@i',
  '<title>$1: '.$my_header.' | $2</title>',
  $GLOBALS['TSFE']->content);
comments powered by Disqus