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()
.
$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)
function documentation_pre_liens($texte){
// uniquement dans le public
if (test_espace_prive()) return $texte;
$regs = $match = array();
// pour chaque lien
if (preg_match_all(_RACCOURCI_LIEN, $texte, $regs, PREG_SET_ORDER)) {
foreach ($regs as $reg) {
// si le lien est de type raccourcis "art40"
if (preg_match(_RACCOURCI_URL, $reg[4], $match)) {
$title = '|' . $match[1] . $match[2];
// s'il n'y a pas deja ce title
if (false === strpos($reg[0], $title)) {
$lien = substr_replace($reg[0], $title, strpos($reg[0], '->'), 0);
$texte = str_replace($reg[0], $lien, $texte);
}
}
}
}
return $texte;
}