Salut,
C'est assez délicat les traitements...
Peut-être un truc du genre :
$table_des_traitements['TEXTE'][0] =
str_replace('%s', 'compte_clic(%s)',
$table_des_traitements['TEXTE'][0]
);
Un autre truc à savoir est que, dès que l'on définit un $table_des_traitements['TEXTE']['articles'] pour agir que la balise #TEXTE des articles, alors le traitement global défini par $table_des_traitements['TEXTE'][0] est totalement ignoré...
J'avoue que le Couteau Suisse par exemple ne prend pas (encore?) en compte les traitements des plugins placés avant lui...
C'est bien compliqué car plusieurs lames de ce plugin ciblent les différentes balises grâce à ce système de traitements en post_typo, pre_typo, post_propre ou pre_propre en fonction du contexte...
Sache que si tu utilises le CS, tu peux créer des lames persos. L'utilisation des traitements devient plus simple, mais doit concerner :
- les balises #TEXTE diverses
- les balises #TEXTE d'articles
- les balises #TEXTE de rubriques
Exemple :
// Installation d'une nouvelle lame personnalisee
$GLOBALS['mes_outils']['compte_clic'] = array(
'nom' => 'Compter les clics',
'description' => 'Une lame qui facilite le compte des clics',
'categorie' => 'admin',
'traitement:TEXTE:post_propre,
traitement:TEXTE/articles:post_propre,
traitement:TEXTE/rubriques:post_propre' => 'compte_clic',
);
La compilation des traitements sera automatiquement faite par le plugin pour la "livrer" à SPIP.
Je te signale au passage qu'il n'y a strictement aucun moyen ici de connaitre l'objet qui est traité. Seul le contenu est passé à la fonction 'compte_clic'.
Si tu veux connaitre tout le contexte, alors une nouvelle balise qui travaillera sur le champ 'texte' s'impose probablement.
Pour finir, attention au cache de SPIP... les balises et les traitements associés ne sont pas calculés à chaque hit...
Pat
RastaPopoulos a écrit :
Je n'arrive pas à comprendre un truc qui parait simple : le fonctionnement de la globale table_des_traitements.
Souvent on rencontre cet ajout pour supprimer en permanence les numéros de tri sur les titres :
$GLOBALS['table_des_traitements']['TITRE']= 'typo(supprimer_numero(%s))';
Les deux derniers crochets indiquent en PHP que la valeur *s'ajoute* au tableau. Mais si c'est un *ajout* et pas un *remplacement* pourquoi est-ce qu'il y a à chaque fois la fonction typo() remise (elle est censé déjà y être de base dans SPIP) ?
Moi je voudrais dans un plugin (compte_clic) ajouter un filtre permanent sur les #TEXTE et #NOTES de bas de page. Comment dois-je faire ?
Si c'est bien un truc qui s'ajoute c'est pérenne. Si c'est un truc qui remplace, non, puisque n'importe quel autre plugin venant par dessus écrasera ce que je veux faire...
Merci d'avance.
--
RastaPopoulos