SPIP - Contrib

SPIP - Contrib

[ar] [en] [es] [fr] [it]

59 visiteurs en ce moment

fontsizeup fontsizedown
Accueil du site > Contribs > Navigation > Tris conditionnels > Selectionner les x derniers articles syndiqués suivant un mot (...)
[3 commentaires]

Selectionner les x derniers articles syndiqués suivant un mot clef

vendredi 25 mars 2005, par guayacan, mortimer

  • Digg
  • Del.icio.us
  • Facebook
  • Google
  • Technorati

Si l’on syndique beaucoup de sites classés par mots clefs, comment obtenir la liste chronologique des 10 derniers articles de nos sites favoris parmi cet ensemble de sites ?

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

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.

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.

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 » !

P.-S.

Nous résumons ici une réflexion sur la liste des utilisateurs de spip qui a permis grâce à Pierre Andrews d’aboutir à une solution au problème.

Retour en haut de la page

3 Messages de forum

Voir toute la discussion

Répondre à cet article

Retour en haut de la page

Ça discute par ici

SPIP | Squelette | | Plan du site | Suivre la vie du site RSS 2.0