SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

288 Plugins, 197 contribs sur SPIP-Zone, 185 visiteurs en ce moment

Accueil > Squelettes > Outils pour squelettes > switchcase > Balises #SWITCH et #CASE

Balises #SWITCH et #CASE

20 mai 2016 – par JLuc – commentaires

18 votes

Ce plugin introduit dans SPIP les balises #SWITCH, #CASE et #CASE_DEFAULT qui reproduisent le fonctionnement des switch... case... default... du php et du C.

Utilisation

Les balises #SWITCH, #CASE et #CASE_DEFAULT permettent de comparer un élément à de multiples cas valeurs, et de renvoyer une expression selon le cas satisfait.

L’utilisation se fait donc en 2 ou 3 parties

  1. Un appel initial à #SWITCH permet de spécifier quelle expression est testée. L’expression est évaluée et sa valeur est mémorisée.
  2. De multiples appels à #CASE permettent de tester la valeur mémorisée avec plusieurs valeurs candidates. En cas d’égalité, la balise #CASE renvoie une valeur non vide (un espace) et les parties conditionnelles avant et après sont affichées.
  3. Un éventuel appel à #CASE_DEFAULT, qui renvoie une valeur vraie si aucun des #CASE n’a été satisfait.

À tout moment, il est possible d’accéder à la valeur testée et mémorisée par le #SWITCH avec le GET suivant : #GET{_switch_}.

Exemple

  1. #SWITCH{#ENV{couleur}}
  2. [(#CASE{bleu}) Wouah, ma couleur favorite !]
  3. [(#CASE{rouge}) Ouh, c'est chaud !]
  4. [(#CASE{vert}) L'avenir et l'espoir.]
  5. [(#CASE_DEFAULT) Une couleur indicible...]

Télécharger

On peut insérer d’autres éléments de HTML ou balises spip entre les différents appels, et appeler les #CASE dans une boucle.

  1. #SWITCH{#ENV{id_choix}}
  2. <BOUCLE_case(ARTICLES)>
  3. <span [class="(#CASE{#ID_ARTICLE}|?{choisi,pas_choisi})"]>#TITRE</span>
  4. </BOUCLE_case>
  5. <span [class="(#CASE_DEFAULT|?{choisi,pas_choisi})"]>Autre</span>

Télécharger

Exemple d’usage

Vous souhaitez ranger toute une panoplie de squelettes json (calendrier.json, lesfestivals.json, programmation.json... ) dans un sous répertoire json, mais vous souhaitez pouvoir y accéder via ajax. Or, les squelettes rangés dans un sous répertoire ne peuvent être accédés que par un webmestre. Pour ajax, vous pouvez passer par un squelette d’aiguillage à la racine, qui prend un argument « squel » et dont le code serait :

  1. #SWITCH{#SQUEL})
  2. [(#CASE{calendrier}) <INCLURE{json/calendrier.json,mois=#MOIS}>]
  3. [(#CASE{lesfestivals}) <INCLURE{json/lesfestivals.json,region=#REGION}>]
  4. [(#CASE{programmation}) <INCLURE{json/programmation.json,groupe=#GROUPE}>]

Télécharger

Particularités

-  Si plusieurs #SWITCH se succèdent, la valeur d’un nouveau #SWITCH remplace la valeur du précédent.
-  Les structures #SWITCH #CASE sont plates : pas d’emboîtement possible à l’intérieur d’un même squelette. Si vous voulez vraiment emboîter 2 switch, il faut le faire dans un squelette inclu.

Un luxe

De même que de les filtres |oui, |non ou |sinon et d’autres balises SPIP, ces balises ne sont pas absolument nécessaires car il est possible d’écrire vos squelettes autrement, sans elles, avec des balises et filtres plus élémentaires. Mais c’est bien pratique de pouvoir les utiliser, et le code est plus lisible...

Voir en ligne : http://plugins.spip.net/switchcase

Dernière modification de cette page le 28 juin 2017

Retour en haut de la page

Vos commentaires

  • Le 28 juin à 16:30, par JLuc En réponse à : Balises #SWITCH et #CASE

    La doc est complétée par un Exemple d’usage :

    Vous souhaitez ranger toute une panoplie de squelettes json (calendrier.json, lesfestivals.json, programmation.json... ) dans un sous répertoire json, mais vous souhaitez pouvoir y accéder via ajax. Or, les squelettes rangés dans un sous répertoire ne peuvent être accédés que par un webmestre. Pour ajax, vous pouvez passer par un squelette d’aiguillage à la racine, qui prend un argument « squel » et dont le code serait :

    1. #SWITCH{#SQUEL})
    2. [(#CASE{calendrier}) <INCLURE{json/calendrier.json,mois=#MOIS}>]
    3. [(#CASE{lesfestivals}) <INCLURE{json/lesfestivals.json,region=#REGION}>]
    4. [(#CASE{programmation}) <INCLURE{json/programmation.json,groupe=#GROUPE}>]

    Télécharger

    Répondre à ce message

  • Le 19 septembre 2016 à 20:50, par JLuc En réponse à : Balises #SWITCH et #CASE

    Nouvelle version 0.3.0, marquée stable : la balise #DEFAULT est renommée #CASE_DEFAULT par anticipation des potentiels conflits de nommage pouvant survenir dans un futur hypothétique impossible à tout à fait exclure.

    Répondre à ce message

  • Le 4 septembre 2016 à 09:55, par Valéry En réponse à : Balises #SWITCH et #CASE

    N’est-ce pas déjà parfaitement réalisable avec les filtres de test de SPIP ?

    • Le 4 septembre 2016 à 21:36, par JLuc En réponse à : Balises #SWITCH et #CASE

      Si, mais de même que de nombreux filtres ou balises ne sont pas strictement nécessaires et servent simplement à simplifier la vie, c’est plus simple, plus lisible et plus agréable à coder certains squelettes avec ces balises.

    Répondre à ce message

  • Le 4 juin 2016 à 23:03, par JLuc En réponse à : Balises #SWITCH et #CASE

    Mis à jour : il y a maintenant aussi la balise #DEFAULT pour clore le triptyque habituel.

    Répondre à ce message

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 Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Mise à jour automatique des plugins

    5 octobre 2009 – 156 commentaires

    Une nouvelle lame du Couteau Suisse permet de visualiser les plugins nécessitant une mise à jour, tout comme SPIP lui-même ! Présentation Rendons à César ce qui est à César, voici un extrait de la présentation du Couteau Suisse pour sa lame « Mise (...)

  • Plugin Modèles media

    25 avril 2011 – 170 commentaires

    Les modèles , et produisent chacun un résultat différent et ce résultat, pour les images, dépend du fait qu’elle soit dans le portfolio ou non. Ce plugin propose une nouvelle série de modèles ayant un comportement unifié et indépendant du mode des (...)

  • Refonte de l’identité graphique

    10 juillet – 68 commentaires

    Lors de la SPIP Party 2017 à Toulouse, un nouveau contributeur est venu nous présenter son travail sur une refonte du logo. Au delà de la refonte du logo, c’est une toute nouvelle identité graphique pour SPIP que Jordan nous propose. Voici une (...)

  • Mailsubscribers

    16 janvier 2013 – 306 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes (...)

  • Saisies

    27 mars 2010 – 490 commentaires

    Introduction Créer un formulaire est une tâche toujours un peu répétitive : les champs ont souvent les mêmes propriétés, le même accompagnement (message d’erreur, explication, ...) et la même structure HTML. Ce plugin est un outil pour les développeurs (...)

Ça spipe par là