Programmer avec SPIP 3.0
Documentation technique sur SPIP 3.0

> > > > affichage_final

affichage_final

Ce pipeline est appelé au moment de l’envoi du contenu d’une page au navigateur. Il reçoit un texte (la page HTML le plus souvent) qu’il peut compléter. Les modifications ne sont pas mises en cache par SPIP.

  1. echo pipeline('affichage_final', $page['texte']);

C’est un pipeline fréquemment utilisé par les plugins permettant une grande variété d’actions. Cependant, comme le résultat n’est pas mis en cache, et que le pipeline est appelé à chaque page affichée, il faut être prudent et le réserver à des utilisations peu gourmandes en ressources.

Exemple

Le plugin « XSPF », qui permet de réaliser des galeries multimédias, ajoute un javascript uniquement sur les pages qui le nécessitent, de cette façon :

  1. function xspf_affichage_final($page) {
  2. // on regarde rapidement si la page a des classes player
  3. if (strpos($page, 'class="xspf_player"')===FALSE)
  4. return $page;
  5.  
  6. // Si oui on ajoute le js de swfobject
  7. $jsFile = find_in_path('lib/swfobject/swfobject.js');
  8. $head = "<script src='$jsFile' type='text/javascript'></script>";
  9. $pos_head = strpos($page, '</head>');
  10. return substr_replace($page, $head, $pos_head, 0);
  11. }

Télécharger

Le plugin « target » lui, ouvre les liens extérieurs dans une nouvelle fenêtre (oui, c’est très mal !) :

  1. function target_affichage_final($texte) {
  2. $texte = str_replace('spip_out"', 'spip_out" target="_blank"', $texte);
  3. $texte = str_replace('rel="directory"', 'rel="directory" class="spip_out" target="_blank"', $texte);
  4. $texte = str_replace('spip_glossaire"', 'spip_glossaire" target="_blank"', $texte);
  5. return $texte;
  6. }

Télécharger

Pour ne pas effectuer de traitement sur une page non HTML (XML, JSON ou autre), par exemple le squelette du fil RSS du site, on peut ajouter le code suivant au début de la fonction.

  1. if (!$GLOBALS['html']) return $page;