Amusons nous avec des boucles SPIP et les petits nouveaux #GET, #SET et #ARRAY
- Date de publication
- 22/janv.
2008 - Commentaires
- 12 commentaires
- Tags
Je suis tombé il y a quelque temps sur une problématique que je n’avais jamais rencontrée au cours de mes nombreuses expériences avec SPIP, et il s’avère qu’une solution très élégante est possible en n’utilisant que la syntaxe de SPIP, là où il aurait fallu, il n’y a pas si longtemps que cela, utiliser du code PHP dans le squelette. Suivez le guide...
Imaginez que vous ayez dans votre site de nombreux sites référencés, avec la syndication activée, et des mots clefs thématiques associés à ces sites. Cela peut vous rappeler Sedna, sauf que les mots clefs peuvent être multiples pour un site alors que Sedna utilise des rubriques, forcément uniques pour chaque site.
Imaginez maintenant que vous souhaitiez afficher dans une page les dernières nouveautés de tous les sites ayant un mot clef donné.
La solution simple — qui fonctionne depuis longtemps avec SPIP — est de lister les sites qui ont le mot clef, et de lister pour chacun les derniers articles syndiqués. Le problème de cette solution, c’est que vous devez vérifier chaque site pour savoir s’il y a du nouveau. Le problème est encore plus grave si vous souhaitez utiliser une pagination, puisqu’elle sera nécessairement sur les sites plutôt que sur les articles syndiqués.
Ma problématique du jour était donc de lister tous les articles syndiqués dans leur ordre chronologique, donc sans devoir passer par les sites au préalable, et voici la solution :
#SET{sites,#ARRAY}
<B_sites>
<BOUCLE_sites(SITES){id_mot}>
[(#SET{sites,[(#GET{sites}|push{#ID_SYNDIC})]})]
</BOUCLE_sites>
<B_derniers_liens>
#ANCRE_PAGINATION
<dt><span>Actualité du Web</span></dt>
<dd id="actu-web">
[(#PAGINATION{accessible})]
<dl>
<BOUCLE_derniers_liens(SYNDIC_ARTICLES){id_syndic IN #GET**{sites}}{pagination 5}{par date}{inverse}>
<dt>#TITRE</dt>
<dd class="origine">Sur <a href="#URL_ARTICLE">#NOM_SITE</a></dd>
<dd class="date">[(#DATE|affdate)]</dd>
[<dd class="auteur"><cite>(#LESAUTEURS)</cite></dd>]
[<dd><blockquote><p>(#DESCRIPTIF)</p></blockquote></dd>]
</BOUCLE_derniers_liens>
</dl>
[(#PAGINATION{accessible})]
</dd>
</B_derniers_liens>
</B_sites>
<//B_sites>
</BOUCLE_mot_courant>
Ce code fonctionne avec SPIP 1.9.2c1, mais ne devrait plus être nécessaire avec SPIP 1.9.3, la boucle SYNDIC_ARTICLES acceptant maintenant le paramètre {id_mot_syndic}2 !
- Notes
[1] A condition d’ajouter le filtre « push », dont voici le code :
function push($array, $val) {
if($array == '' OR !array_push($array, $val)) return '';
return $array;
}[2] Voir le commit SVN 11019.
Commentaires
Backtweets
Avec un tag commun
- Une arborescence dynamique et contextuelle
- Le même agenda que Gastero Prod avec SPIP
- Gastero Prod 4, les standards et l’accessibilité
- La galerie SPIP, pour réutiliser facilement les images et documents
- Un site valide et accessible avec SPIP, c’est (de plus en plus) possible !
Derniers billets
-
Quelques petits ajustements...
Vous l’avez peut-être remarqué vous même si vous faites partie des rares à venir de temps en temps sur le site, mais certainement pas si vous me lisez via le flux RSS, j’ai fait quelques ajustements, notamment sur la page d’accueil.
- Date de publication
- 11/mars
2010 - Commentaires
- 2 commentaires
- Tags
-
Les spammeurs s’y connaissent en CSS
Un p’tit malin qui se fait appeler Sylvain a laissé un commentaire très sympathique sur mon billet précédent. Mais il a aussi glissé subrepticement un lien vers un site de poker fashion...
- Date de publication
- 1/mars
2010 - Commentaires
- 5 commentaires
- Tags
-
Tumblr aime mes méduses
Vous avez sans doute déjà vu ma belle photo de méduses fluorescentes — une de mes préférées — que ce soit ici, sur Flickr, JPG Magazine, deviantArt ou plus récemment sur RedBubble. Et bien elle vient d’être publiée en série sur de nombreux micro blogs Tumblr, lui apportant une énorme visibilité.
- Date de publication
- 25/fév.
2010 - Commentaires
- aucun commentaire
- Tags

Derniers commentaires
ventrea sur Quelques petits ajustements... : Sympa les polices. Juste un petite remarque, dans les textes le lissage des caractères est assez (...)
NiKo sur Les spammeurs s’y connaissent en CSS : Vérifie très vite, car effectivement tu es vulnérable aux XSS en l’état.
Cédric sur Les spammeurs s’y connaissent en CSS : Ça fait quelques temps déjà que ce genre de message fleurit dans les commentaires. La parade très (...)
Rik sur Les spammeurs s’y connaissent en CSS : Comme le dit un certain edas, autoriser l’attribut style c’est s’exposé à de belles XSS. Plus (...)
NiKo sur Un Netbook comme videur de cartes amélioré ? : C’est pour ça que perso je pré-derushe mentalement en ne déclanchant que si j’estime cela vraiment (...)
NiKo sur Un Netbook comme videur de cartes amélioré ? : A part de céder à la tentation d’un nouvel achat techno, je vois vraiment pas l’intérêt d’acheter (...)
NiKo sur Google Chrome sur Mac, bilan mitigé : > Pas de barre de titre, donc je ne connais pas le nom de la page dès que j’ai plus de 5 onglets (...)
Sur Commentaires désactivés temporairement : Un commentaire sur la 2.2.0 svn !
Frank Taillandier sur Google Chrome sur Mac, bilan mitigé : Avec la version 5.0.322 du canal de dev le drag’n’drop dans la barre de signet « marche » sauf (...)
Xavier sur Google Chrome sur Mac, bilan mitigé : Pour speed tracer, il faut lancer chrome avec le parametre —enable-extension-timeline-api (...)