Noisettes conditionnelles

Pour aller plus loin avec les noisettes

22 mai 2006,
par Romy Têtue

Mots-clefs associés à cet article :

Une noisette sert à placer à part le code SPIP de tel ou tel bloc affiché à l’identique en plusieurs endroits différents du site, pour éviter d’avoir à dupliquer ce code à l’identique dans chaque squelette. Mais il arrive plus souvent que l’on aie besoin d’afficher le même bloc « partout… sauf ici ».

Par exemple, votre première rubrique contient les éditos du site. Vous souhaitez que les premières lignes du dernier édito s’affichent sur toutes les pages du site, sauf sur la page même de cet édito, évidemment.

Vous avez donc créé une noisette prénommée inc-edito.html et l’avez incluse dans chaque squelette. Et après ?

La première solution consiste à créer un squelette spécifique, ici appelé rubrique-1.html (et/ou article-1.html), qui contient exactement la même chose que rubrique.html (et/ou article.html), à cette seule différence près que vous n’y incluez pas la noisette.

Pour éviter la multiplication de squelettes spécifiques, tous semblables à un détail près, faites des noisettes conditionnelles ! C’est-à-dire des noisettes qui s’afficheront, ou pas, selon le contexte.

1. Inclure la noisette dans tous les squelettes, de cette façon [1] :

<INCLURE(page.php3){fond=inc-edito}{id_rubrique}>

en n’oubliant pas de passer l’élément en cours en critère (soit {id_rubrique} et/ou {id_article}), qui permet à la noisette de savoir où elle se trouve.

2. Coder la noisette correspondante, inc-edito.html, de cette façon :

<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{id_rubrique=1}> </BOUCLE_rubrique>

<BOUCLE_edito(ARTICLES){id_rubrique=1}{!par date}{0,1}>
<h2><a href="#URL_ARTICLE">#TITRE</a></h2>
<div class="texte">#INTRODUCTION</div>
</BOUCLE_edito>

<//B_rubrique>

C’est-à-dire : la boucle « rubrique » vérifie quelle est la rubrique en cours. Si celle-ci est la rubrique 1, la boucle s’arrête à </BOUCLE_rubrique> [2] et… n’affiche donc rien. Sinon, on passe à la suite, en l’occurrence la boucle « edito » qui affiche le dernier article de la rubrique 1.

Vos commentaires

  • Le 22 mai 2006 à 18:41, par alexandra En réponse à : Noisettes conditionnelles

    Merci Romy pour cette article. Notre écureuil préféré va être content de toutes ses belles noisettes :-)

  • Le 23 mai 2006 à 16:50, par Miss Mopi En réponse à : Noisettes conditionnelles

    Uhuh Je suis à fond dans les noisettes conditionnelles en ce moment.

    Mais j’ai remonté le test dans le squelette et non dans la noisette et j’ai géré des noisettes différentes. A réfléchir... (<- c’est à moi que je dis ça.) Je me demande si ce n’est pas parce que je passe deux critères ou un seul en fonction du contexte.

  • Le 26 juillet 2006 à 08:07, par opessin(at)gmail.com En réponse à : Noisettes conditionnelles

    J’utilise personellement des mots pour activer/désactiver certaines fonctionnalités optionelles de mes articles ... comme un mode « album photo » pour les documents.

    Ainsi, l’activation au niveau des articles par exemple peut ensuite se faire via l’interface d’admin, sans toucher aux squelettes.

    Je regrette au passage qu’il n’y ait pas un champ identifiant (une sorte de clé) entre du nom (trop vague) et du id_mot (qui me forcerait à hardcoder une valeur donnée de champ auto incrémentable)

    Je me pose aussi la question des performances lorsqu’on a beaucoup de boucles... j’imagine que ça doit generer pas mal de requêtes SQL... (bon, il se trouve que mon hébergeur est peu recommandé). Heureusement, il y a le cache...

  • Le 20 mars 2008 à 19:37, par Aurélia En réponse à : Noisettes conditionnelles

    Merci infiniment pour cet article éclairant, simple, accessible et permettant de construire des variantes de design sans multiplier les pages article- ou rubrique=.

    Bravo !
    Aurélia.

Répondre à cet article

Qui êtes-vous ?

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 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.

Suivre les commentaires : RSS 2.0 | Atom