Champs extras — utilisation dans les squelettes

Cet article explique comment utiliser des Champs Extra dans les squelettes.

Valeur d’un champ

Les champs extras sont comme les autres champs d’une table SQL, interrogeables en utilisant #NOM_DU_CHAMP.

Pour afficher donc le résultat d’un champ il suffit d’utiliser son nom. Le champ est d’autre part éditable avec la classe CSS #EDIT{nom_du_champ} si vous avez le plugin Crayons :

<p class='#EDIT{documentation}'>#DOCUMENTATION</p>

Valeur d’un champ multiple (cases à cocher, boutons radios,...))

Pour afficher la liste des valeurs de cases à cocher saisies par l’utilisateur, vous pouvez utiliser la balise #LISTER_VALEURS{nom_du_champ} :

#LISTER_VALEURS{hobbies} : Musique, Danse, ...
#LISTER_VALEURS{hobbies, ' / '} : Musique / Danse / ...
#LISTER_VALEURS**{hobbies} : tableau des résultat à exploiter par exemple avec une boucle POUR

Les valeurs affichées sont les valeurs lisibles par les humains, et non pas les valeurs informatiques brutes.

Pour afficher la liste des possibilités qu’il y avait de saisies, vous pouvez utiliser de la même manière #LISTER_CHOIX{nom_du_champ}

#LISTER_CHOIX{hobbies} : Musique, Danse, ...
#LISTER_CHOIX{hobbies, ' / '} : Musique / Danse / ...
#LISTER_CHOIX**{hobbies} : tableau des résultat à exploiter par exemple avec une boucle POUR

Informations sur une saisie

Enfin, vous pouvez récupérer n’importe quelle information sur la saisie associées au champ en utilisant la balise #CHAMP_EXTRA{nom_du_champ}. Elle récupère tout le tableau d’information connue sur le champ extra. Cependant, elle est surtout utile pour afficher un des éléments #CHAMP_EXTRA{nom_du_champ, element} tel que le label :

#CHAMP_EXTRA{documentation,label}
#CHAMP_EXTRA{hobbies,label}
#CHAMP_EXTRA{hobbies,explication}

Discussion

3 discussions

  • 3

    Bonjour, je suis vraiment surpris de voir comment a bien évolué ce super plugin... particulièrement avec la mise en onglet des groupes de champs et la gestion du plier/déplier...

    Je souhaiterais afficher à l’aide d’un squelette le label du choix des cases cochées pour un champs
    la balise #LISTER_VALEURS{champs} ne me retourne que la/les clés et non le/les label/s renseigné/s.

    Pouvez-vous me mettre sur la piste ?

    Merci.

    • Pour récupérer les valeurs humaines de mon champ case à cocher multi dans un squelette, j’ai dû passer par deux boucles, une qui contient un tableau avec les valeurs informatiques et humaines, une autre avec les valeurs informatiques retournées par le champ case à cocher multi.

      Cela est assez fastidieux surtout si je dois ensuite ajouter une nouvelle option dans le champ case à cocher multi... Je devrai revoir ma page squelette et ajouter dans la première boucle cette nouvelle option...

      N’y a-t-il pas un moyen plus simple pour lire les valeurs humaines de la case à cocher multi et les afficher si elles sont cochées ?

      Merci

    • Ce serait effectivement pertinent. Pour autant de ce que je peux voir actuellement, ce n’est pas prévu dans le code.

      Peut tu ouvrir un ticket ?

    • Heu, en fait si ca existe. Désolé je rentre d’un long voyage et je suis encore un peu dephasée.

      Et c’est même documenté ici : c’est le comportement attendu de LISTER_VALEURS. Et de facto chez moi ca marche TM. Donc : faudrait voir un peu plus pour savoir pourquoi chez toi LISTER_VALEURS te donne les clés et pas les valeurs humaines.

    Répondre à ce message

  • 8
    Emmanuel CURIS

    Bonjour,
    J’aimerais dans un squelette avoir un texte différent qui s’affiche suivant qu’une case à cocher d’un champ extra (auteur) est cochée ou non.
    J’ai essayé le code suivant :

    [(#COTISATION|oui)<span class="cotisation_ok">Cotisation à jour</span>][(#COTISATION|non)<span class="cotisation_non">Attention, votre cotisation n'est pas à jour&thinsp;!</span> — #COTISATION]]

    mais cela ne fonctionne pas et quelle que soit la valeur de la case, #COTISATION semble ne rien contenir et le texte « votre cotisation n’est pas à jour » s’affiche…
    Je précise que le champ s’appelle cotisation ; je vous joins la configuration de cette case.
    Comment pourrais-je faire ?
    Merci beaucoup pour votre aide,

    • Il me semble qu’il faudrait avoir

      [(#COTISATION|=={oui}|oui)|?{
      <span class="cotisation_ok">Cotisation à jour</span>
      ,
      <span class="cotisation_non">Attention, votre cotisation n'est pas à jour&thinsp;!</span> — #COTISATION
      })]
    • Emmanuel CURIS

      Ça n’a pas l’air, cette fois rien ne s’affiche, quel que soit le statut de la case…. Il y a une parenthèse fermante en plus dans l’exemple de code, mais je ne suis pas sûr de comprendre si elle est en trop ou où manque l’ouvrante...
      Une autre info sur la configuration, pour les valeurs « d’affichage » (mais qui ne s’affichent pas), si cela aide…
      Merci quand même !

    • Emmanuel CURIS

      Une question qui me vient : quand je mets

      #COTISATION

      , comment sait-il de quel auteur on parle ? Faut-il le placer dans une boucle sur l’auteur courant pour avoir une chance d’avoir une réponse ? J’ai postulé bêtement que c’était celui connecté, puisque dans mon code cela suit un

      (#SESSION{id_auteur}|oui)

      , mais c’est sans doute très optimiste ?

    • Elle en trop, pardon.
      Il faut la retirer, et il y avait une erreur de syntaxe

      [(#COTISATION|=={oui}|?{
      <span class="cotisation_ok">Cotisation à jour</span>
      ,
      <span class="cotisation_non">Attention, votre cotisation n'est pas à jour&thinsp;!</span> — #COTISATION
      })]
    • La balise ne pourra s’afficher que dans une boucle auteur.

    • Emmanuel CURIS

      OK, ça marche quand la case n’est pas cochée, à part que la virgule dans le 2e texte semble poser un souci (texte tronqué après « Attention, »).
      En revanche, quand la case est cochée, cela affiche toujours qu’il n’y a pas de cotisation.
      Mais la version d’origine semble fonctionner correctement, je mets le code complet du bloc pour être sûr qu’il n’y a pas d’erreur :

      <div class="bienvenue">
        [(#SESSION{id_auteur}|non)Bienvenue sur le site de l'ABIOPM&thinsp;!]
        <BOUCLE_auteur(AUTEURS){id_auteur=#SESSION{id_auteur}}{tout}>
          #NOM,  bienvenue sur le site de  l'ABIOPM&thinsp;! —
          [(#COTISATION|oui)<span class="cotisation_ok">Cotisation à
            jour</span>]
          [(#COTISATION|non)<span class="cotisation_non">Attention, votre
          cotisation n'est pas à jour&thinsp;!</span>&thinsp; #COTISATION]
        </BOUCLE_auteur>
      </div>

      Merci beaucoup !

    • Il faudrait avoir la valeur de

      #COTISATION

      quand la case est cochée.

      Pour cela, il faut l’afficher dans la boucle, pour l’identifier et adapter le test.

    • Emmanuel CURIS

      Apparemment, elle serait à « on », valeur technique interne. Bien que les valeurs d’affichage soient renseignées, cf. capture d’écran plus haut.
      Bon, comme ça a l’air de marcher comme ça, je crois que je ne vais pas explorer davantage.
      Un immense merci pour votre aide !

    Répondre à ce message

  • 5
    mathieu

    Bonjour,

    Je viens de mettre à jour les plugins :
    « Champs Extras » (de la version 3.12.1 à 3.14.2)
    « Champs Extras (Interface) » (de la version 3.5.8 à 3.5.9)

    Première chose que je constate, c’est que mes champs extras de type « selection multiple » ne sont plus éditables... Cela me renvoie des :
    « Warning : array_walk_recursive() expects parameter 1 to be array, null given in C :\wamp64\www\test\plugins\auto\saisies\v3.53.2\formulaires\construire_formulaire.php on line 183 »

    Est-ce qu’il y avait une manipulation à faire avant de procéder à la mise à jour ?

    Ensuite, pour ces « selection multiple », que j’ai copié dans des « Liste déroulante (ou sélection) », lorsque je veux afficher les valeurs dans une boucle avec #LISTER_VALEURS{cextra}, cela m’affiche « sous-groupe : valeur » alors qu’avant ça ne m’affichait que « valeur », ce qui me convenait très bien.

    Est-ce qu’il y a un argument à ajouter pour ne pas afficher le « sous-groupe » ?

    Pour mieux comprendre, voici ce que contient mon champs extra :

    *Sous-groupe 1
    1|valeur 1
    2|valeur 2
    *Sous-groupe 2
    3|valeur 3
    4|valeur 4
    • C’est un gros gros debat la question du sous-groupe ou pas.

      Voir ici pour les discussions sur les propositions de réglages

      https://git.spip.net/spip-contrib-extensions/saisies/issues/20

      en attendant tu peux modifier la chaine de langue saisies_aplatir_tableau_montrer_groupe et/ou modifier la vue de la saisie (prend plutot l’option modifier la chaine de langue, a priori)

      pour les champs extra selection multiple non editable, je pense que le commit que j’ai fait aujourd’hui sur la branche master de saisies a corrigé le chose. Peux tu tester cette version là https://git.spip.net/spip-contrib-extensions/saisies/archive/master.zip

      a priori c’est parce que les saisies « selection multiple » sont désormais obsolètes, et que je m’étais foiré dans la gestion des saisies obsolètes

    • mathieu

      Merci beaucoup pour ce retour.

      Je veux bien tester la version de saisie mais je suis plutôt novices sur pas mal d’aspects et je ne voudrais pas faire de boulette. Que faut-il faire pour l’inclure dans mes plugins ?

      Je fais un back-up (copier / coller) de mon dossier « site\plugins\saisies » et ensuite je remplace par le contenu du master ?

      EDIT : J’ai modifié la chaine de langue saisies_aplatir_tableau_montrer_groupe en copiant le fichier dans le dossier ...\squelettes\lang et ça fonctionne parfaitement donc un grand merci pour cet astuce en attendant une éventuelle intégration d’une case à cocher pour afficher ou non le sous-groupe.

    • exactement. Sachant que de toute facon la version officiellement stable du plugin reste disponible.

      Par contre sur la chaine de langue : tu peux ne pas surcharger l’ensemble du fichier de langue. Autrement dit dans squelettes/lang/saisies_fr.php, tu peux n’avoir que la chaine de langue que tu surcharge. Cela te permet de profiter des éventuelles corrections sur les autres chaînes.

    • mathieu

      Merci beaucoup Maïeul pour les retours.

      J’ai testé le master de « saisies » et effectivement mes « selection multiple » sont de nouveau éditables et qui plus est sans « messages warning ».

      Pour la surcharge, en effet ! Ça paraît tellement évident maintenant que je suis devant le fait accompli. J’en prends bonne note et puis ça permet d’y voir plus clair dans les modifs apportées.

      Encore un grand merci en tout cas pour l’aide ! C’est super sympa !

    • Super,

      bon tout cela sera publié en bonne et dûe forme ce week-end, dès fois qu’entre temps j’ai d’autres correctifs à faire ailleurs.

    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