Garder le résultat d'une boucle dans un tableau

Bonjour
Je voudrais garder le résultat d'une boucle dans un tableau pour la réutiliser dans une autre boucle.
L'idée est donc de remplir un tableau

J'ai essayé :
#SET{mes_articles,#ARRAY}
<BOUCLE_art(ARTICLES){id_article=1}>
[(#SET{mes_articles,[(#GET{mes_articles}|push{#ID_ARTICLE})]})]
</BOUCLE_art>

test de récupération de mes articles
<BOUCLE_art_recup(ARTICLES){id_article IN #GET{mes_articles}}>
#ID_ARTICLE
</BOUCLE_art_recup>

avec le filtre push :
function push($array, $val) {
        if($array == '' OR !array_push($array, $val)) return '';
        return $array;
}

Et bien çà fonctionne; mais quand la première boucle est dans un inclure on ne récupère pas le tableau dans le squelette appelant.
Comment faire remonter l'info sur le tableau?

jo a écrit :

Et bien çà fonctionne; mais quand la première boucle est dans un inclure on ne récupère pas le tableau dans le squelette appelant.
Comment faire remonter l'info sur le tableau?

cette question a déjà été posée récemment
et en explorant les archives tu trouveras une réponse.

Je me souviens que ma réponse avait été : regarde la balise #TMP

Il me semble aussi me souvenir que ce n'était pas forcément
la meilleure réponse...
JL

JLuc a écrit :

jo a écrit :
  

Et bien çà fonctionne; mais quand la première boucle est dans un inclure on ne récupère pas le tableau dans le squelette appelant.
Comment faire remonter l'info sur le tableau?
    
cette question a déjà été posée récemment
et en explorant les archives tu trouveras une réponse.

Je me souviens que ma réponse avait été : regarde la balise #TMP
Nouvelle balise : exemple avec #TMP - SPIP-Contrib

Il me semble aussi me souvenir que ce n'était pas forcément
la meilleure réponse...
JL

Merci JLuc oui je vois que c'est assez complexe

jo wrote:

Bonjour
Je voudrais garder le résultat d'une boucle dans un tableau pour la
réutiliser dans une autre boucle.
L'idée est donc de remplir un tableau

J'ai essayé :
#SET{mes_articles,#ARRAY}
<BOUCLE_art(ARTICLES){id_article=1}>
[(#SET{mes_articles,[(#GET{mes_articles}|push{#ID_ARTICLE})]})]
</BOUCLE_art>

test de récupération de mes articles
<BOUCLE_art_recup(ARTICLES){id_article IN #GET{mes_articles}}>
#ID_ARTICLE
</BOUCLE_art_recup>

avec le filtre push :
function push($array, $val) {
        if($array == '' OR !array_push($array, $val)) return '';
        return $array;
}

Et bien çà fonctionne; mais quand la première boucle est dans un
inclure on ne récupère pas le tableau dans le squelette appelant.
Comment faire remonter l'info sur le tableau?
_______________________________________________

Pour ce qui est de faire remonter c'est une autre chose...

Mais pour la première partie il y a plus simple.

C'est d'utiliser le doublons "négatif".
Le doublons étant un critère négatif par défaut, en dissant {!doublons},
dans ta seconde boucle, au lieu d'exclure les articles lister dans le doublons,
tu sélectionne ces derniers.

<BOUCLE_art(ARTICLES){id_article=1} {doublons} >
</BOUCLE_art>

<BOUCLE_art_recup(ARTICLES){!doublons}}>
#ID_ARTICLE
</BOUCLE_art_recup>

C'est utile par ce que tu peux, par exemple sélectionner des articles dans plusieurs boucles différentes,
par exemple pour sélectionner le plus récent dans 4 rubriques différentes.
Puis, ensuite trier dans une nouvelle boucle ces derniers selon un autre critère.
Par exemple ne garder que les 4 plus récents des 8.

Tu peux même faire plusieurs listes différentes en utilisant les doublons nommés.

Si ça peut t'aider...

iago