Supposons que nous syndiquions un grand nombre de sites de façon systématique, et que nous voulions afficher une liste des derniers articles parus sur nos sites « favoris ».
Pour ceux qui n’ont pas le temps : la solution, pour les autres, suivre les tentatives peut être instructif...
A priori, on se dit qu’il suffit d’associer le mot clef « favori » à nos site, d’ajouter un critère <tt><b>{titre_mot=favori}
à une boucle et hop, le tour est joué.
pourquoi ce n’est pas si simple
C’est en fait plus compliqué. La documentation de la boucle SYNDIC_ARTICLES nous rappelle que l’on peut indiquer les critères {id_secteur}
, {id_rubrique}
et j’en passe, mais pas {titre_mot}
ou {id_mot}
.
On ne peut donc pas faire
<BOUCLEn(SYNDIC_ARTICLES){titre_mot=favori}>
Si l’on fait une première boucle pour selectionner les sites favoris
<BOUCLEn(SYNDIC){titre_mot=favori}>
<BOUCLEn(SYNDIC_ARTICLES)>
Deux problèmes :
- les articles obtenus seront classés par sites (nous les voulons par date)
- on ne pourra pas contrôler le nombre global d’articles à afficher.
Pour pouvoir selectionner {par date}{inverse}{0,10}
il faudra avoir une boucle qui s’applique à l’ensemble des articles des sites favoris.
Il faudra donc au préalable exclure par une boucle ou une combinaison de boucles les articles syndiqués des sites non favoris en utilisant {doublons}
Avant SPIP 1.8
Problème, avant [SPIP 1.8] {doublons}
ne s’applique pas aux articles syndiqués... Pour les versions antérieures, on ne pourra avoir qu’une solution approchée : une boucle sur l’ensemble des articles syndiqués, et pour chaque article trouvé, vérification s’il appartient à un site favori. On ne pourra pas contrôler exactement le nombre d’articles affichés.
<BOUCLE_articles_syndiques(SYNDIC_ARTICLES){par date}{inverse}>
<BOUCLE_sites_syndiques(SITES){id_syndic}{titre_mot=Espéranto}>
[- (#TITRE) <br>]
</BOUCLE_sites_syndiques>
</BOUCLE_articles_syndiques>
SPIP 1.8
Première idée : il faut exclure les articles liés aux sites qui n’ont pas le mot clef « Favori », puis faire une boucle sur tous les autres articles.
<BOUCLE_sites_syndiques_excl(SITES){titre_mot != Favori}>
<BOUCLE_articles_syndiques_excl(SYNDIC_ARTICLES) {doublons}>
</BOUCLE_articles_syndiques_excl>
</BOUCLE_sites_syndiques_excl>
<B_articles_syndiques>
<ul>
<BOUCLE_articles_syndiques(SYNDIC_ARTICLES) {doublons} {par date} {inverse} {0,10}>
[<li>(#TITRE)</li>]
</BOUCLE_articles_syndiques>
</ul>
</B_sites_syndiques>
Ce qui ne donne pas le résultat voulu pour plusieurs raisons :
- le critère
{titre_mot != Favori}
exclue l’ensemble des sites qui n’ont pas de mot clefs associés, il signifie parmis les sites qui ont au moins un mot clef, selectionne ceux qui ont un mot clef différent de Favori - du coup, si parmis nos sites favori certains ont un autre mot clef associé comme par exemple spip, logiciel libre, ... ils seront eux aussi selectionnés dans la première boucle et donc exclus !
Pour réaliser la négation {titre_mot != Favori}
il faut en fait passer par une première boucle {titre_mot = Favori}{doublons}
pour exclure nos site favoris et seulement eux de la boucle suivante...
Solution
Utilisation (massive) des doublons :
- une première boucle sélectionne les sites favoris,
- une seconde boucle passe en revue l’ensemble des autres sites, puis les articles syndiqués de chacun de ces sites.
- enfin une troisième boucle nous permet de passer en revue tous les autres articles syndiqués : ceux qui sont liés aux sites « favori » !
<BOUCLE_sites_syndiques_gardes(SITES){doublons}{titre_mot = favori}>
</BOUCLE_sites_syndiques_gardes>
<BOUCLE_sites_syndiques_exclus(SITES){doublons}>
<BOUCLE_articles_syndiques_exclus(SYNDIC_ARTICLES) {id_syndic} {doublons}>
</BOUCLE_articles_syndiques_exclus> </BOUCLE_sites_syndiques_exclus>
<ul>
<BOUCLE_articles_syndiques(SYNDIC_ARTICLES) {doublons} {par date} {inverse} {0,10}>
[<li>(#TITRE)</li>]
</BOUCLE_articles_syndiques>
</ul>
Aucune discussion
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |