Appliquer ce filtre sur toutes les formes d’intertitres
[Erreur...3]Cette dernière nécessite de redéfinir les intertitres en <h2>...</h2>
[Erreur...5]Si le titre comporte des caractères non translittérable, on met ancreX (X étant le numéros de l’intertitre), de même si le titre est de moins de 2 caractères.
function ancres_intertitre($texte) {
$regexp = "/{{{(.*?)}}}/";
$texte = preg_replace_callback($regexp,'remplace_intertitre',$texte);
$texte = avant_propre_ancres($texte); //on est obligé de le refaire ici, parce que dans inc_texte, c'est fait avant l'apel à avant_propre, bizarre.
return $texte;
}
function remplace_intertitre ($matches) {
static $cId = 0;
global $sommaire_intertitre;
$cId++;
$url = translitteration(corriger_caracteres(
supprimer_tags(supprimer_numero(extraire_multi($matches[1])))
));
$url = @preg_replace(',[[:punct:][:space:]]+,u', ' ', $url);
// S'il reste des caracteres non latins, utiliser l'id a la place
if (preg_match(",[^a-zA-Z0-9 ],", $url)) {
$url = "ancre$cId";
}
else {
$mots = explode(' ', $url);
$url = '';
foreach ($mots as $mot) {
if (!$mot) continue;
$url2 = $url.'-'.$mot;
if (strlen($url2) > 35) {
break;
}
$url = $url2;
}
$url = substr($url, 1);
//echo "$url<br>";
if (strlen($url) < 2) $url = "ancre$cId";
}
$sommaire_intertitre[$url] = $matches[1];
return '{{{ ['.$url.'<-] '.$matches[1].' }}}';
}Puis dans le fichier mes_options.php3:
- si la fonction avant_propre n’existe pas, ajouter:
function avant_propre($texte) { $texte = ancres_intertitre($texte); return $texte; } - sinon, ajouter:
$texte = ancres_intertitre($texte);
juste après la ligne
function avant_propre($texte) {
De plus, à placer dans mes_fonctions.php3 cette fois:
[Erreur...11] function compose($tableau)
$texte = ’’;
foreach($tableau as $url => $lien)
$texte .= “
";
return $texte?"
- “.$texte.”
“:”";
[Erreur...13]à revoir : l’utilisation d’une variable globale : éventuellement passer par une static dans une fonction appelée soit pour la composition, soit pour l’affichage. (à la mode de l’agenda_memo)
et aussi. ça marche que si on affiche #TEXTE avant #SOMMAIRE_INTERTITRE, donc, faut trouver une solution plus générique
(Stephane Deschamps) Tu as raison, c’est plus propre, et surtout ça génère du spip-code et pas un truc hybride comme notre contrib. Bien vu.
No discussion
Add a comment
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Follow the comments:
|
