SPIP : édito et boucle exclure

samedi 17 février 2007

SPIP

Une question qui revient souvent sur les forums de spip.net :

Comment mettre un article en page d’accueil ?

Il y a déjà des ressources sur le sujet sur le site de SarkaSpip mais le lien semble ne plus fonctionner.

Comme je le disais sur le forum de spip.net, une solution serait de créer un article et de lui attacher un mot clé comme "edito". Ensuite dans le squelette de la page d’accueil, vous créez une boucle qui appelle cet article comme ceci :

<BOUCLE_edito (ARTICLES) {titre_mot="edito"} {doublons} {par date} {inverse} {0,1}>
[(#TEXTE)]
</BOUCLE_edito>

Et après ?

Petite astuce qui peut servir dans certains cas. Supposons que vous avez une rubrique structurée comme ceci :

LA rubrique n°1 (secteur)
 sous-rubrique n°2
    article "edito"
    article 1
    article 2
    ...
    article x
 sous-rubrique n°3
    article "edito"
    article 3
    article 4
    ...
    article x
 ...
sous-rubrique x

Dans ce cas on veut que chaque page sous-rubrique affiche le contenu de l’article edito. Pour cela il suffit de se servir de la boucle citée plus haut. Mais si on veut par la suite créer un squelette qui affichera tous les articles de LA rubrique mère sans afficher les éditos il va falloir utiliser une boucle d’exclusion. En effet si on tente directement de lister tous les articles de LA rubrique avec la boucle ci-dessous cela ne fonctionnera pas.

<BOUCLE_articles_secteur (ARTICLES){id_secteur}{titre_mot!="edito}{par date}{inverse}>
[(#TITRE)]
</BOUCLE_articles_secteur>

Avec cette boucle on tente d’afficher les articles du secteur à condition qu’il ne soient pas attachés au mot clé "edito". L’idée est bonne mais cela ne peut pas pas fonctionner car la boucle retournera seulement les articles qui sont attachés à un mot clé autre que "edito". Donc si les articles de ce secteur ne sont attachés à aucun mot clé, la boucle précédente ne retournera rien.

Pour y arriver il faut utiliser une boucle d’exclusion comme il est indiqué sur SpipContrib :

Exclure selon un mot clé sur SpipContrib

Dans notre cas la boucle à utiliser est celle-ci :

<BOUCLE_exclure (ARTICLES) {titre_mot=edito} {doublons}>
</BOUCLE_exclure>
<BOUCLE_articles_secteur (ARTICLES){id_secteur}{doublons}{par date}{inverse}>
[(#TITRE)]
</BOUCLE_articles_secteur>

La boucle "exclure" va sélectionner les articles attachés au mot clé "edito" et la boucle "articles_secteur" va sélectionner tous les autres articles sauf ceux déjà selectionnés par la boucle ’exclure" grâce au critère {doublons}.

Vos commentaires

  • Maquisard

    Cool. Merci ! Je planchais sur titre_mot != depuis un bon 30 minutes !

    29 avril 2007, 17:10

  • bb

    Pour information, dans la version de développement de SPIP, on peut maintenant sélectionner les articles qui ne sont pas liés à un mot sans boucle exclure de cette façon : {!id_mot=2}.

    Cela retourne bien tous les éléments qui ne satisfont pas a id_mot=2, donc tout ceux qui ne sont pas lie au mot 2, y compris ceux lies a aucun mot.

    Cette syntaxe sera donc disponible dans la prochaine version stable.

    30 janvier 2008, 10:50

Répondre à cet article

Qui êtes-vous ?
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.