2
Indiquez l’intérêt que vous portez à cette question
1

[pipelines] surcharge conditionnelle de pre_boucle

Bonjour à tous,

Notre SPIP tourne sur différentes URLs disons A et B.
Sur B, je souhaite appliquer un filtre additionnel à pre_boucle pour n’avoir que les objets marqués d’un mot clé donné.
Ce dernier est appliqué directement à mes_options.php
Ca fonctionne correctement mais le cache me trahit.

- Dossier cache vidé
- Execution du filtre sur B
- Mise en cache de la nouvelle logique
- Nouvelle logique servie aussi sur A

if ($_SERVER['HTTP_HOST'] == 'URL B'){
    $GLOBALS['spip_pipeline']['pre_boucle'] .= '|filter_keyword';
}

function filter_keyword($boucle){
   
    $types = array('articles'=>'article');

    if (array_key_exists($boucle->type_requete, $types)) {
        $object = $types[$boucle->type_requete];
       
        $boucle->from['L10'] = 'spip_mots_liens';
        $boucle->join['L10'][] = "'".$boucle->type_requete."'";
        $boucle->join['L10'][] = "'id_objet'";
        $boucle->join['L10'][] = "'id_".$object."'";
        $boucle->join['L10'][] = "'L10.objet='.sql_quote('".$object."')";
        $boucle->where[] = array("'='", "'L10.id_mot'", '"83"');
    }
   
return $boucle;
}

Connaissez-vous un moyen de n’appliquer ce traitement que sur URL B ?

Dans le pire des cas et tant pis pour la performance, est-il possible de déclarer un autre dossier cache pour une seule URL via la constante DIR_CACHE ?
J’ai quand même l’impression que mes_options.php n’est lu qu’assez rarement et en théorie c’est très bien :)

Merci de votre attention et @u plaisir de vous lire