Bruno Bergot a écrit le 12/07/2019 à 16:07 :
Salut,

Comme je le disais sur IRC, je viens de comprendre pourquoi une boucle d'un site ne renvoie plus ce que je lui demande, la source :

"on *considère* que les objets recherchés pour un mot clef ont le mot clef en question ou au moins un des mots clefs de la branche du mot."

https://zone.spip.net/trac/spip-zone/changeset/114363/

En imposant ce comportement, qui ne peut être débrayé, la boucle suivante ne peut plus fonctionner :

<BOUCLE_festival(MOTS){id_groupe=#CONFIG{films/groupe_festivals,4}}{titre == #ENV{annee}}{0,1}> <BOUCLE_progs(MOTS){racine}{par titre, num titre}{id_groupe=#CONFIG{films/groupe_programmes,5}}>
Prog racine : #TITRE
<B_film1>
    <BOUCLE_film1(FILMS){mots 100% #LISTE{#_festival:ID_MOT,#_progs:ID_MOT}}{par ordre_passage}>
     #ID_FILM,
         #TITRE_ORIGINAL,
         #ORDRE_PASSAGE,
         #_progs:TITRE,
         #_progs:TITRE
     </BOUCLE_film1>
     <BOUCLE_prog(MOTS){id_parent=#_progs:ID_MOT}{par titre, num titre}>
     Prog enfant : #TITRE
    <BOUCLE_film2(FILMS){mots 100% #LISTE{#_festival:ID_MOT,#_prog:ID_MOT}}{par ordre_passage}>
         #ID_FILM,
             #TITRE_ORIGINAL,
             #ORDRE_PASSAGE,
             #_progs:TITRE,
             #TITRE
     </BOUCLE_film2></BOUCLE_prog>
     <//B_film1>
</BOUCLE_progs>
</BOUCLE_festival>

Le contexte : on a un groupe de mot arbos qu'on parcourt de manière récursive pour afficher les films (un objet perso) qui sont liés aux programmes. Parfois les mots racines ont des éléments liés, parfois non et ceux sont uniquement les mots enfants (profondeur > 0) qui ont des éléments liés.

En l'état, la boucle film1 affiche tous les films liés aux mots enfant du mot racine, alors qu'on précise bien l'id_mot racine et non ses enfants, ce qui fait que les boucles prog & films2 ne sont jamais exécutées.

On est donc repassé sur la version 4.1.2 du plugin en prod, en attendant que tu proposes un moyen de rendre optionnel ce changement de comportement du critère mots.
OK, je comprends.
Première idée sur laquelle j'aimerais ton avis :
remplacer dans les code de ce commit les
if (function_exists('calcul_branche_mot_in')) {
par
if (function_exists('calcul_branche_mot_in') AND _CRITERE_MOTS_BRANCHE) {

Avec le define à false par défaut qui va bien.

Comme ça, on revient au comportement par défaut précédent.
Et il suffit de faire un define de _CRITERE_MOTS_BRANCHE à true pour avoir la recherche dans la branche.

Si meilleur idée de nom, je prends ;-)

--
RealET


----
spip-zone@rezo.net - https://listes.rezo.net/mailman/listinfo/spip-zone

Répondre à