Programmer avec SPIP 3.0
Documentation technique sur SPIP 3.0

> > > > pre_liens

pre_liens

Le pipeline « pre_liens » permet de traiter les raccourcis typographiques relatifs aux liens tel que [titre->url]. Il est appelé par la fonction expanser_liens(), elle-même appelée par la fonction propre().

  1. $texte = pipeline('pre_liens', $texte);

SPIP se sert lui-même de ce point d’entrée pour effectuer des traitements sur le texte reçu en intégrant 3 fonctions dans la définition du pipeline dans le fichier ecrire/inc_version.php, définies dans le fichier ecrire/inc/lien.php :

  • traiter_raccourci_liens génère automatiquement des liens si un texte ressemble à une URL,
  • traiter_raccourci_glossaire gère les raccourcis [?titre] pointant vers un glossaire.
  • traiter_raccourci_ancre s’occupe des raccourcis [<-nom de l'ancre] créant une ancre nommée

Exemple

Le plugin « documentation » (qui gère cette documentation), utilise ce pipeline pour ajouter automatiquement un attribut title sur les raccourcis de liens internes comme [->art30], le transformant en [|art30->art30] (ce pis-aller sert à afficher le numéro de la page relative au lien lorsque l’on exporte le contenu de la documentation au format PDF)

  1. function documentation_pre_liens($texte){
  2. // uniquement dans le public
  3. if (test_espace_prive()) return $texte;
  4. $regs = $match = array();
  5. // pour chaque lien
  6. if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) {
  7. foreach ($regs as $reg) {
  8. // si le lien est de type raccourcis "art40"
  9. if (preg_match(_RACCOURCI_URL, $reg[4], $match)) {
  10. $title = '|' . $match[1] . $match[2];
  11. // s'il n'y a pas deja ce title
  12. if (false === strpos($reg[0], $title)) {
  13. $lien = substr_replace($reg[0], $title, strpos($reg[0], '->'), 0);
  14. $texte = str_replace($reg[0], $lien, $texte);
  15. }
  16. }
  17. }
  18. }
  19. return $texte;
  20. }

Télécharger