Voici (tout aussi tardivement) une deuxième méthode que j'ai réussi à
faire fonctionner avec utilisation de tableaux tout SPIP qui est du coup
plus générique.
Il faut par contre installer SPIP Bonux, ce qui la rends dépendante d'un
plugin.
[(#REM)Boucle sur le contenu d'une rubrique et tri par date : articles,
sites, documents
Paramètres du squelette :
- id_rubrique]
[(#REM)-- Initialisation des variables --]
#SET{iteration,10}
#SET{contenus, #ARRAY}
[(#REM)-- Construction des listes de contenus --]
<BOUCLE_art(ARTICLES){id_rubrique}{0,#GET{iteration}}{!par date}>
#SET_MERGE{contenus,#GET{contenus},#ARRAY{#DATEart#ID_ARTICLE,#ARRAY{art,#ID_ARTICLE}}}
</BOUCLE_art>
<BOUCLE_syndic(SYNDIC_ARTICLES){id_rubrique}{0,#GET{iteration}}{!par date}>
#SET_MERGE{contenus,#GET{contenus},#ARRAY{#DATEsynd#ID_SYNDIC_ARTICLE,#ARRAY{synd,#ID_SYNDIC_ARTICLE}}}
</BOUCLE_syndic>
<BOUCLE_doc(DOCUMENTS){id_rubrique}{0,#GET{iteration}}{!par date}>
#SET_MERGE{contenus,#GET{contenus},#ARRAY{#DATEdoc#ID_DOCUMENT,#ARRAY{doc,#ID_DOCUMENT}}}
</BOUCLE_doc>
[(#REM)-- Tri par date et affichage des contenus --]
<BOUCLE_tri(POUR){tableau #GET{contenus}}{!par cle}>
[(#REM)<br />Date : #CLE]
[(#REM)Articles]
<BOUCLE_test_art(POUR){tableau #VALEUR}{cle==art}>
<INCLURE{fond=contenu-detail}{id_article=#VALEUR}{env}>
</BOUCLE_test_art>
[(#REM)Syndic]
<BOUCLE_test_synd(POUR){tableau #VALEUR}{cle==synd}>
<INCLURE{fond=contenu-detail}{id_syndic_article=#VALEUR}{env}>
</BOUCLE_test_synd>
[(#REM)Docs]
<BOUCLE_test_doc(POUR){tableau #VALEUR}{cle==doc}>
<INCLURE{fond=contenu-detail}{id_document=#VALEUR}{env}>
</BOUCLE_test_doc>
</BOUCLE_tri>
Patrick
Patrick VINCENT a écrit :
Je reprends tardivement ce code, merci pour vos réponses.
Il s'agissait effectivement d'une union et non d'une jointure 
Une solution qui fonctionne sur la base l'age relatif :
<BOUCLE_art(ARTICLES){par date}{inverse}{id_rubrique?}>
<BOUCLE_synd_art(SYNDIC_ARTICLES){par
date}{inverse}{id_rubrique?}{age_relatif<0}{doublons syndart}>
SYNDIC : #_synd_art:TITRE / #_synd_art:DATE<br />
</BOUCLE_synd_art>
ARTICLE : #_art:TITRE / #_art:DATE<br />
</BOUCLE_art>
<BOUCLE_synd_art1(SYNDIC_ARTICLES){par
date}{inverse}{id_rubrique?}{doublons syndart}>
SYNDIC : #_synd_art1:TITRE / #_synd_art1:DATE<br />
</BOUCLE_synd_art1>
</B_art>
<BOUCLE_synd_art2(SYNDIC_ARTICLES){par date}{inverse}{id_rubrique?}>
#_synd_art2:TITRE
</BOUCLE_synd_art2>
<//B_art>
Patrick
yoh a écrit :
Tu dois y arriver avec les boucles sur des éléments hétérogènes :
Tu sélectionnes l'article le plus récent et tu affiches les syndic
articles plus récent puis tu affiches l'article etc ...
La dernière boucle permet d'afficher les syndic article les plus vieux
et est là au cas il n'y aurait pas du tou d'article.
L'inconvénient de ce type de boucle, c'est que la pagination est
impossible.
++
<BOUCLE_art(ARTICLES){par date}{inverse}{id_secteur?}{id_rubrique?}>
<BOUCLE_synd_art(SYNDIC_ARTICLE){par
date}{inverse}{id_secteur?}{id_rubrique?}(age_relatif<0}{doublons syndart}>
#_synd_art:TITRE
</BOUCLE_synd_art>
#_art:TITRE
</BOUCLE_art>
</B_art>
<BOUCLE_art2(ARTICLES){par
date}{inverse}{id_secteur?}{id_rubrique?}{doublons syndart}>
#_synd_art:TITRE
</BOUCLE_art2>
<//B_art>
Patrick VINCENT a écrit :
Bonjour à tous,
Je cherche à sélectionner et afficher les 10 éléments les plus récents
des contributions articles et syndic_articles confondues d'un site,
avec un critère de secteur ou de rubrique optionnel.
La boucle suivante fonctionne :
<BOUCLE_liste(syndic_articles syndic articles){par
date}{inverse}{id_secteur?}{id_rubrique?}{0,10}>
<br />#TITRE
</BOUCLE_liste>
...si ce n'est que je n'arrive pas à exploiter les résultats : dans le
corps de la boucle je ne peux pas sélectionner le critère #ID_ARTICLE
ou #ID_SYNDIC_ARTICLE en fonction du contexte de l'occurence et
appeler en fonction un INLCURE, comme je voulais le faire initialement :
<BOUCLE_liste(syndic_articles syndic articles){par
date}{inverse}{id_secteur?}{id_rubrique?}{0,10}>
<BOUCLE1(ARTICLES){id_article}><INCLURE{fond=1}...></BOUCLE1>
<BOUCLE2(SYNDIC_ARTICLES){id_syndic_article}><INCLURE{fond=2}...></BOUCLE2>
</BOUCLE_liste>
J'essaye d'éviter les tableaux, si quelqu'un a une idée.
Merci
Patrick
SPIP : 1.9.3dev - 11227