Mes premières boucles (spécial débutants)

SPIP a beau être facile quand on est débutant on s’arrache les cheveux à trouver les bonnes boucles, car on ne comprend pas toujours tout.

Alors voici toutes mes boucles avec leurs explications.

Utilisateurs confirmés passez votre chemin ;-)

I. RUBRIQUES :

Boucle qui liste toutes les rubriques du site (ordre alphabétique) :

<BOUCLE_sommaire_rubriques(RUBRIQUES){racine}{par titre}>
<a ref="#URL_RUBRIQUE" >#TITRE</a><br />
</BOUCLE_sommaire_rubriques>

Boucle qui liste toutes les rubriques du site même les vides (ordre alphabétique) :

<BOUCLE_sommaire_rubriques(RUBRIQUES){tout}{par titre}>
<a href="#URL_RUBRIQUE">#TITRE</a><br />
</BOUCLE_sommaire_rubriques>

Boucle qui liste toutes les rubriques du site sauf une (ordre alphabétique) :

<BOUCLE_sommaire_rubriques(RUBRIQUES){racine}{par titre}  {id_rubrique!=ici le numéro de la rubrique à exclure}>
<a href="#URL_RUBRIQUE">#TITRE</a><br />
</BOUCLE_sommaire_rubriques>

Boucle qui liste une seule rubrique du site :

<BOUCLE_sommaire_rubriques(RUBRIQUES){id_rubrique=ici le numéro de la rubrique}>
<a href="#URL_RUBRIQUE">#TITRE</a><br />
</BOUCLE_sommaire_rubriques>

Boucle qui liste une rubrique spécifique et ses sous-rubriques (ordre alphabétique) :

<BOUCLE_sommaire_rubriques(RUBRIQUES){id_secteur=ici le numéro de la rubrique}{par titre}>
<a href="#URL_RUBRIQUE">#TITRE</a><br />
</BOUCLE_sommaire_rubriques>

Dans la page des rubriques :

<BOUCLE_rubrique_principal(RUBRIQUES){id_rubrique}> 

tout en haut de la page avant tout et

</BOUCLE_rubrique_principal>

après tout à la fin.


II. ARTICLES

A. Le sommaire

<BOUCLE_premier_article(ARTICLES){doublons}{par date}{inverse}{0,3}>
<a href="#URL_ARTICLE">[(#LOGO_ARTICLE|right||image_reduire{100,100})]</a>
<BOUCLE_rubriques2(HIERARCHIE){id_article}>
<a href="#URL_RUBRIQUE"><strong>[(#TITRE|majuscules)]</strong></a>
</BOUCLE_rubriques2><br />
<a href="#URL_ARTICLE">
<strong>#TITRE</strong><br />
[(#INTRODUCTION|couper{300})</div><a href="#URL_ARTICLE">Lire la suite</font></a>]
</BOUCLE_premier_article></td>

Cette boucle liste 3 articles (pour changer le nombre il suffit de changer {0,3} en {0,le nombre voulu} ex : {0,5} pour 5 articles.

{doublons} évite que le même article revienne plusieurs fois.

Il est nécessaire d’utiliser ce critère dans TOUTES les boucles qui ne doivent pas comporter de doublons ; ici, la boucle premier_article ci-dessus et la ou les boucles de type ARTICLE suivantes (cf : les critèrescommuns à toutes les boucles)

{par date} {inverse} les articles sont classés par dates du plus récent au plus vieux.

#URL_ARTICLE est utilisé pour faire un lien vers l’article, ici placé aussi sur le logo de l’article

#LOGO_ARTICLE affiche le logo joint à l’article
|right le place à droite
|left le mettera à gauche, |center au centre.

||reduire_image{100,100})
Permet de réduire les images à la taille voulue largeur,hauteur pour éviter que les pages se déforment si un auteur met un trop gros logo. Pour spip 1.9 la nouvelle dénomination est image_reduirelargeur, hauteur (pour voir les nouvelles possibilités allez ici)

(les deux chiffres 100 sont à remplacer par la grandeur maximale que vous voulez pour vos imageslargeur,hauteur)

La boucle HIERARCHIE suivante permet d’afficher la rubrique dans laquelle se trouve l’article. On affiche son titre avec #TITRE et si on veut qu’il soit toujours en majuscules on rajoute le filtre |majuscules.

On affiche ensuite l’introduction, le filtre couper permet de limiter le nombre de caractère (on est sur la page d’accueil, on veut juste donner envie au lecteur de lire la suite !).Bien sûr vous pouvez le changer. Sans filtre ça met les 600 premiers caractères.

Moi je mets ensuite un petit « lire la suite » mais vous pouvez faire comme vous voulez exemple : (...)

Si vous voulez n’afficher que les articles d’une rubrique :
dans la première boucle

<BOUCLE_premier_article(ARTICLES){doublons}{par date}{inverse}{0,3}>

rajoutez {id_rubrique=le numéro de votre rubrique}  
exemple {id_rubrique=29} pour afficher tous les articles de la rubrique 29

Pour affichez les articles d’une rubrique et de ses sous rubriques :
{id_secteur=29}(29 pour notre exemple mettez le numéro de votre rubrique)

Pour ne pas afficher les articles d’une rubrique :
{id_rubrique!=29}

Pour ne pas afficher les articles d’une rubrique et de ses sous rubriques :
{id_secteur!=29}


B. la page article

Dans la page des articles :

<BOUCLE_article_principal(ARTICLES) {id_article}>

tout en haut de la page avant tout et

</BOUCLE_article_principal>

après tout à la fin.

Puis

#TITRE<br>[(#LOGO_ARTICLE|center||reduire_image{200,200})]
<br /><br />
- Publié le [(#DATE|nom_jour)] [(#DATE|jour)] [(#DATE|nom_mois)] [(#DATE|annee).]<br /><br />
<strong>[(#CHAPO|justifier)]</strong>
[(#TEXTE*|reduire_image{300,300}|justifier)]
#PS<br /><br />article vu :#VISITES fois
[<a href="forum.php?(#PARAMETRES_FORUM)"<strong>Ajouter un commentaire</strong></a>]

<B_sujets>
<br /><strong>Il y a #TOTAL_BOUCLE [(#TOTAL_BOUCLE|>{1}|?{' commentaires',' commentaire'})]</strong><br /><br />
#ANCRE_PAGINATION
<BOUCLE_sujets(FORUMS){id_article}{par date}{inverse} {pagination}>
[(#TEXTE|justifier)]
<i>[ <:par_auteur:> </i><a ref="mailto:#EMAIL"><strong>(#NOM)</strong></a>]<i>
[le (#DATE|affdate{'d-m-Y'})][ à (#DATE|heures) ][.(#DATE|minutes) ]</i>
[<a href="forum.php?(#PARAMETRES_FORUM)">&nbsp;&nbsp;R&eacute;pondre &agrave; ce message</a>]
<br /><br />

<BOUCLE_sujets2(FORUMS){id_parent}{par date}{inverse}>
[(#TEXTE|justifier)]<i>[ <:par_auteur:> </i>
<a href="mailto:#EMAIL"><strong>(#NOM)</strong></a>]<i>
[le (#DATE|affdate{'d-m-Y'})][ à (#DATE|heures) ][.(#DATE|minutes) ]</i>
[<a href="forum.php?(#PARAMETRES_FORUM)">&nbsp;&nbsp;R&eacute;pondre &agrave; ce message</a>]<br /><br /><br />
</BOUCLE_sujets2>

#PAGINATION
</BOUCLE_sujets>
</B_sujets>

Ici pas besoin de mettre la boucle (ARTICLES) puisqu’elle est déjà mise en haut et en bas de page

On retrouve les mêmes choses que pour la partie rubriques mais ici le logo de l’article s’affiche grâce à #LOGO_ARTICLE

On affiche la date de publication : ici au format nom du jour ,jour, nom du mois , année. On peut bien sûr le changer.
par exemple :
[le (#DATE|affdate{'d-m-Y'})][ à (#DATE|heures) ][.(#DATE|minutes) ] affiche la date sous la forme de : le 20-07-2006 à 13 .05

#CHAPO pour afficher le chapeau

#TEXTE pour afficher le texte de l’article avec un filtre pour redimensionner toutes les images de l’article comme expliqué plus haut.

#PS pour afficher le post-scriptum

#VISITES permet d’afficher le nombre de fois où l’article a été vu

la suite permet aux visiteurs de commenter l’article, et le nombre de commentaires s’affiche (si il y en a ) grâce à #TOTAL_BOUCLE (avec une petite boucle pour mettre un ’s’ à commentaire s’il le faut)

le nom de l’auteur s’affiche avec un lien vers son mail, la date s’affiche sous la forme de : le 20-07-2006 à 13 .05

La boucle sujets2 permet de poster un message en réponse au premier commentaire.

Il y a également le filtre pagination (spip 1.9) , qui permet de couper en plusieurs pages les forums s’ils deviennent trop importants, avec #ANCRE_PAGINATION , pagination (dans la partie où l’on veut l’utiliser) et #PAGINATION

Il faut rajouter un chiffre correspondant au nombre de messages souhaité avant pagination ex : {pagination  6} pour 6 messages.

N.B Avant spip 1.9 pour avoir une pagination il faut utiliser un filtre :
le filtre pagination


III. AUTEURS

La boucle auteurs :

Pour mettre simplement l’auteur de l’article avec un lien vers sa page auteur (expliquée plus bas) :

<BOUCLE_auteurs(AUTEURS){id_article}{par nom}>
<i><a href="#URL_AUTEUR">#NOM</a></i>
</BOUCLE_auteurs> 
 

La boucle auteurs pour la page auteurs :

<BOUCLE_auteur_principal(AUTEURS) {id_auteur}>

la mettre tout en haut de la page sur la page auteurs

<h2><strong>#NOM</strong></h2>
[(#LOGO_AUTEUR|right||reduire_image{150,150})]
[<strong>Sa bio:</strong><br />(#BIO)]
[<br /><strong>Son site:</strong>
<a href="(#URL_SITE)">#NOM_SITE</a><br /><br />]

<B_nombretotal><BOUCLE_nombretotal(ARTICLES){id_auteur}>
</BOUCLE_nombretotal><i>#NOM a écrit #TOTAL_BOUCLE articles </i>
</B_nombretotal>

<!-- Articles de l'auteur -->
<h5>Tous ses articles</h5>
<div class="liste-articles">
<BOUCLE_articles(ARTICLES) {id_auteur}{par date}{inverse}{debut_page,25}>
<a href="#URL_ARTICLE" [title="(#DESCRIPTIF|textebrut|entites_html)"]><strong>#TITRE</strong></a>
[(#DATE|nom_jour)] [(#DATE|affdate)]<br />
</BOUCLE_articles>
</BOUCLE_auteur_principal>

( la mettre tout en bas de la page sur la page auteur)

Cette boucle affiche le nom d’un auteur, on arrive sur cette page après avoir cliqué sur le nom de l’auteur clicable sur l’article (etc..)

On affiche son nom, son logo ("LOGO_auteur), sa bio #BIO (s’il n’a pas rempli son profil ça ne s’affiche pas), un lien vers son site

La boucle BOUCLE_nombretotal calcule le nombre d’articles écrit par cet auteur.

Enfin on liste tous les articles de cet auteur.

On peut bien sûr se servir des filtres expliqués plus haut pour ne mettre que les articles d’une rubrique ou pour exclure les articles d’une rubrique.


IV. LES PLUS

Tous les articles classés par popularité

<BOUCLE_page(ARTICLES) {par popularite}{inverse}{doublons}>
<a href="[(#URL_ARTICLE)]">#TITRE</a><br />popularité:  #POPULARITE %</font><br /><br />
</BOUCLE_page>

Tous les articles classés par visites

<BOUCLE_page(ARTICLES) {par visites}{inverse}{doublons}>
<a href="[(#URL_ARTICLE)]">#TITRE</a><br>#VISITES visites</font><br /><br />
</BOUCLE_page>

CONSEILS :

*Si vous utilisez plusieurs fois la même boucle dans une page il faut lui donner un autre nom !

exemple :

Un tableau de deux colonnes avec les 6 derniers articles d’une même rubrique, le logo de l’article et le titre de chaque article, le tout clicable vers l’article.
Dans cet exemple j’ai choisi d’afficher la rubrique numéro 13 mais sur mon site la balise est
<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique} > car ce tableau me sert dans la page de mes rubriques (rubrique.html), cette boucle est donc tout en haut de ma page et la boucle de fermeture tout en bas.

Remarquez la boucle_resum qui est la même mais change de nom.

<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique=13}>
<div align="center">

<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>

<td width="50%">      
<table>
<tr>
<BOUCLE_resum(ARTICLES){id_rubrique}{doublons}{par date}{inverse}{0,1}>
<td width="40%" align="right" valign="top"> 
<a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br /><br /></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a></td>
</BOUCLE_resum>
</tr>
<tr>
<BOUCLE_resum2(ARTICLES){id_rubrique}{doublons}{par date}{inverse}{0,1}>
<td width="60%" align="right" valign="top"><a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br /><br /></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a></td>
</BOUCLE_resum2>
</tr>
<tr>
<BOUCLE_resum3(ARTICLES){id_rubrique}{doublons}{par date}{inverse}{0,1}>
<td width="40%" align="right" valign="top"><a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br /><br /></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a></td>
</BOUCLE_resum3>
</tr>
</table>
</td>
      
<td width="50%">
<table>
<tr>
<BOUCLE_resum4(ARTICLES){id_rubrique} {doublons}{par date}{inverse}{0,1}>
<td width="40" align="right" valign="top"><a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br /><br /></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a></td>
</BOUCLE_resum4>
</tr>
<tr>
<BOUCLE_resum5(ARTICLES){id_rubrique} {doublons}{par date}{inverse}{0,1}>
<td width="40" align="right" valign="top"><a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br /><br /></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a></td>
</BOUCLE_resum5>
</tr>
<tr>
<BOUCLE_resum6(ARTICLES){id_rubrique} {doublons}{par date}{inverse}{0,1}>
<td width="40" align="right" valign="top"><a href="[(#URL_ARTICLE)]">[(#LOGO_ARTICLE||reduire_image{50})]<br><br></td>
<td width="60%" align="left" valign="top">#TITRE<br /></a>
</td>
</BOUCLE_resum6>
</tr>
</table>
</td>

</tr>
</table>
</div>
</td>
</tr>
</table>
</div>
</BOUCLE_rubrique_principal>

Voir la documentation officielle sur les balises :

-  hierarchie
-  rubriques
-  articles
-  auteurs
-  forums
-  les critères communs à toutes les boucles

Discussion

12 discussions

  • Bonjour,
    J’ai téléchargé le dernier spip 3.0.7 et je l’ai installé en local sur un mac avec mamp.
    Ma question est :
    Je souhaiterai sur ma page d’accueil afficher uniquement les 3 derniers articles les plus récents, alors j’ai cherché où modifier ce paramètre et je ne trouve pas.
    Pouvez-vous m’aider ?
    merci

    Répondre à ce message

  • 1

    Ben moi ça m’aide pas, à quoi ça sert ? c’est où que ça se met . Il est où « spip pour les nuls » ???

    Répondre à ce message

  • Bonjour

    je souhaiterai modifier l’affichage en fonction des champs renseignés dans une rubrique donnée. Dans mon cas, si un article possède uniquement un lien URL_SITE alors celui-ci sera affiché sinon il faut afficher URL_ARTICLE.

    (#REM)

    J’ai écris cela mais cela me fait une double boucle. Je n’ai pas trouvé la syntaxe correcte, pourriez-vous m’aiguiller je vous remercie.

    Valérie

    Répondre à ce message

  • 1

    bonjour,

    où doit-on mettre ces boucles ? Dans un fichier ?? Et lequel ?

    • regardez par ici je pense que cela vous aiderait : http://www.spip.net/fr_article879.html

      vous placez vos boucles dans des squelettes. Chaque squelette correspond à un type de page : par exemple il y a un squelette pour la page d’acceuil (sommaire.html), un autre pour les pages d’articles (article.html), un squelette pour la page d’une rubrique (rubrique.html) et un squelette pour la page http://adressedusite.tld/spip.php?page=nomdelapage nomdelapage.html

      c’est squelettes sont à placer dans un dossier squelettes à créer à la racine de votre site (à coté de ecrire, config etc.)

    Répondre à ce message

  • 2

    bonjour

    j’essaie de créer une boucle qui affiche les rubrique dans un ordre précis non alphabétique.
    j’ai vu sur les forums qu’on pouvait numéroter les rubriques dans la partie privé et créer une boucle qui évite l’affichage du numéro dans la partie publique en procédant ainsi :

    #LOGO_RUBRIQUE [

    (#TITRE|supprimer_numero)

    ]

    Etant débutant, je cherche le fichier dans lequel insérer cette boucle. Je les ai tous ouvert mais je ne trouve pas de « boucle liste rubrique ». Je trouve uniquement des « boucles rubriques ».

    • jpspip

      Bonjour,

      Je suis débutant avec SPIP, je cherche à numéroter les rubrique dans SPIP 2, avez vous eu une réponse à votre message, je serai intéressé par la marche à suivre.

      Jean Pierre

    Répondre à ce message

  • 1
    Arcanod

    Cet article est manifestement un très bon aide-mémoire, mais ça ne m’explique pas comment faire pour que quand on clique sur une rubrique, on arrive directement sur la page d’un article. Car chaque rubrique ne compte qu’un article...
    Merci de m’éclairer car je commence à désespérer devant tous ces sites qui traitent de SPIP mais qui ne proposent qu’une doc bord***que.

    Répondre à ce message

  • Bonjour
    d’excellentes aides que je vais m’empresser d’utiliser,à ce sujet si je peux me permettre, pourrais tu me dire où placer id_rubrique !=x pour éviter d’avoir sur ma page d’accueil les liens des articles et en colonne centrale les mêmes articles entiers.
    En fait juste une page avec des liens un edito et des brèves.
    Encore merci pout ton aide.
    Kamel
    http://espacemus.free.fr

    Répondre à ce message

  • 2

    Excellent aide mémoire pour les débutants et un peu moins débutants

    • C’est grâce à ce genre d’initiative que l’on peut souligner la fierté de faire partit de la race humaine !

      Un gros merci pour votre générosité !

      Yan.

    • Loiseau2nuit

      8 lettres : P.A.S. M.I.E.U.X !!!

      Je n’avais pas encore vu cet article mais c’est tout simplement génial :)

      Merci !

    Répondre à ce message

  • Bonjour,

    je vais poser une question sans doute un peu idiote, mais où doit-on mettre ces boucles ? Dans un fichier ?? Et lequel ? Et si l’on utilise un squelette, comment s’y retrouver ??

    Merci beaucoup d’une éventuelle réponse ...

    Répondre à ce message

  • 2

    Merci pour cet article :). Pourrait-on compléter avec des boucles concernant les archives ??

    je cherche à faire afficher une liste des 6 derniers mois ( type juin, etc ) pour lesquels il y a eu des articles mais hélas tous mes tests se sont avérés infructueux.

    En gros je voudrai un affichage comme ça :

    mars
    janvier
    décembre
    octobre
    septembre
    aout

    comme sur le blog spip mais avec uniquement les 6 derniers mois.

    • marholyne

      Il y a un filre « age » :
      http://www.spip.net/fr_article900.html
      paragraphe Affichage en fonction de la date

    • Déjà essayé sans succès :) Je vais finir par faire du php je perdrai moins de temps :) qu’à chercher à faire fonctionner des boucles bancales :S. Même problème avec le plugin minical et les boucles associées snif snif ouin ouin :(

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom