romy.tetue.net

Développement front et conception web
X-HTML, CSS, SPIP, sémantique et accessibilité

Paris-Web 2010, j’y vais ! (du 14 au 16 octobre).

Noisettes conditionnelles

Pour aller plus loin avec les noisettes


22 mai 2006,
par Romy Têtue

Partagez cet article : Voter pour cet artice sur hellocoton.fr Netvibes Yahoo myspace Technorati stumbleupon Digg Del.ico.us

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 à répéter 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, bien é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.

Exemple d’application : le site « Cher 2015 » est construit avec des noisettes conditionnelles. Ses squelettes sont disponibles sur SPIP-Contrib.

[1] La syntaxe pour l’inclusion sera différente selon la version de SPIP utilisée. Voir : INCLURE d’autres squelettes.

[2] Voir la syntaxe des boucles SPIP, tout simplement, en particulier la seconde partie : « Syntaxe complète ».

Vos commentaires

  • Le 22 mai 2006 à 18:41, par alexandra

    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

    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

    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

    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.

Un message, un commentaire ?

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



© 2000-2010 Romy Duhem-Verdière | Certains droits réservés | Qui suis-je ? | Contact | Aide | Top ↑
Vérifiez vous-même la qualité du code de cette page en la soumettant aux validateurs XHTML et CSS.