Champs Extras (Interface)

Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP depuis l’espace privé de SPIP. Il s’appuie sur le plugin Champs Extras, dont il n’est qu’une simple interface graphique.

Screencast

Vous n’aimez pas lire ? Écoutez pendant 20mn !

Cette capture présente Champs Extras 3 avec son interface graphique [1]. Elle est présente sur medias.spip.net où vous pourrez voir la vidéo en plus grand format.

Introduction : séparation de l’API et de l’interface graphique

Il existe deux plugins distincts :

  • le premier, «Champs Extras» (lire «Champs Extras — introduction») donne accès aux fonctions de création, de gestion et d’affichage des champs. Il est ne constitue qu’un outil de développement. Il nécessite le plugin «Saisies». Un exemple (Titre Court sur les rubriques) dans le dossier extensions montre comment créer un plugin offrant des champs prédéfinis.
  • le second, «Champs Extras (Interface)» profite des points d’entrées et des fonctions du plugin «Core» pour proposer une interface graphique de gestion et de création de ces champs supplémentaires. Ce plugin nécessite quand à lui évidemment «Champs Extras (API)» et «Saisies», mais également «Le plugin YAML» et «Vérifier». C’est ce plugin qui est documenté ici.

Présentation de l’interface

Lorsque le plugin d’interface est activé, le menu de configuration permet d’aller sur la page de configuration des Champs Extras (?exec=champs_extras).

Cette page présente :

  • la liste des objets sur lesquels on peut insérer des champs extras, indiquant pour chaque objet le nombre de champs extras présents,
  • puis, si c’est le cas, un cadre se trouve dessous indiquant pour certains objets que certaines colonnes SQL ne sont gérées ni par SPIP ni par un plugin, et que Champs Extra peut éventuellement les gérer.
Liste des objets éditoriaux exploitables

On le remarque sur l’image, ici seul l’objet Articles a 1 Champs Extra. De plus, dans le second cadre, on voit que le champ «openid» peut être géré. Ce champ provient du plugin «OpenId» qui avait du être installé mais n’est actuellement pas actif sur le site. Comme il n’avait pas été désinstallé (mais seulement désactivé), le champ est resté dans la table SQL des auteurs.

Créer un nouveau champ via l’interface

Seuls les webmestres du site ont accès à ce panneau de configuration.

Pour ajouter un élément dans un des objets, il faut cliquer sur le nom de l’objet souhaité.
Nous allons créer un champ dans la table des articles, nous cliquons donc sur leur nom.

Cela nous amène sur une autre page (du même fonctionnement donc que le plugin Formidable), qui présente :

  • les Champs Extras présents sur l’objet (que l’on peut déplacer, modifier, dupliquer ou supprimer),
  • puis la liste des types de champs que l’on peut ajouter.
Présentation du formulaire d’édition d’un objet

Il suffit de cliquer un des types de champs pour ajouter cet élément dans la liste des champs présents. Cet élément se placera automatiquement en fin de liste. Nous ajoutons ici des cases à cocher.

On peut le voir sur l’image suivante, un message indique alors que le formulaire est modifié par rapport à son état normal. On a trois possibilités offertes :

  • Continuer nos modifications, autant qu’on en souhaite,
  • Annuler toutes nos modifications en «Réinitialisant le formulaire»
  • Valider nos modifications en «Enregistrant le formulaire» en bas de page.
Des champs de type Cases ajoutés aux articles

Nous allons déplacer les cases ajoutées en premier, pour cela, on survole les «cases à cocher», clique en gardant enfoncé notre bouton l’icône de déplacement (la première, des flèches bleues), et on monte la souris vers le haut, au dessus du premier champ. Un cadre jaune apparaît à l’endroit ou se placera le champ déplacé. On peut alors relâcher le bouton de la souris. Si la manœuvre vous paraît périlleuse, n’ayez crainte : cette façon de faire n’est qu’un raccourcis. On peut également définir l’emplacement du champs extra en le modifiant.

C’est d’ailleurs modifier le Champ Extras des cases que nous allons faire maintenant. Pour cela, on clique la seconde icône. Un formulaire détaillé apparaît alors :

Édition de cases à cocher

On peut observer que les options sont nombreuses et divisées en onglets pour plus de clarté. Décrivons sommairement ce que sont ces onglets :

  • Description : concerne essentiellement les textes qui seront affichés ainsi que le nom technique du champ (le nom de la colonne SQL)
  • Utilisation : concerne des options sur le type de code HTML généré
  • Affichage : permet de compléter les descriptions du champ, par exemple par un message d’avertissement
  • Validation : indique le type de vérification à effectuer sur le contenu saisi
  • Restriction : permet de limiter l’affichage des champs à certaines personnes ou parties du site.
  • Technique : représente la liste des options liées à SPIP, à la base de données. Il permet également de modifier de type de saisie (pour passer de cases à radio par exemple).

À noter que les éléments affichés dans chaque onglet peuvent différer d’un type de saisie à une autre. Un champ «Ligne de texte» n’affiche pas les mêmes possibilités de configuration qu’un champ «Cases à cocher».

On comprend vite ainsi que lorsqu’on crée un nouveau champs extra, la première chose à faire est de changer les informations présentes dans l’onglet «Description» et en particulier son nom technique, le «nom du champ». Effectivement, cela nous évitera d’appeler le champ #CHECKBOX_1 dans un squelette, qui ne reflète pas une information sémantique, mais technique. On peut par exemple modifier le champ en le nommant «hobbies» (ce qui permettra d’utiliser #HOBBIES), et modifier son libellé et valeurs. Cela donnerait ensuite, après validation du formulaire de configuration de la case à cocher, la prévisualisation suivante :

Cases à cocher modifiées

Pour valider nos changements, il faut alors enregistrer le formulaire de champs extras. Ceci fait, on peut ensuite se rendre sur un article, nous être satisfait de voir nos deux champs présents, à la fois sur le formulaire d’édition et sur la vue du texte. Voici dans le formulaire des articles ce que cela donne :

Deux champs en plus sur les articles

Footnotes

[1Cette interface a évolué depuis la prise de cette vidéo ; cependant le fonctionnement est relativement identique

Discussion

257 discussions

  • Bonjour, je me heurte subitement à une, semble-t-il, quasi impossibilité avec les champs extras. Voilà : j’ai créé un champ extra, type liste déroulante, avec deux choix, pour chacun desquels il y a une paire cle/valeur.
    J’arrive facilement à récupérer sur ma page la valeur choisie, là pas de problème. Mais c’est une autre paire de manches pour récupérer la clé !! J’ai regardé la table spip_documents, et ai constaté qu’il n’y a qu’une seule information saisie, la valeur.
    Mais alors, où se trouve la clé ? Et y a-t-il un moyen de récupérer cette clé pour l’afficher ? Je voudrais pouvoir ainsi renommer une balise css en fonction de celle-ci.
    Merci de m’indiquer si cela est faisable avec spip.
    Cordialement. Marc

    Reply to this message

  • Une petite remarque (parce que j’ai galéré sur ce problème) :

    La balise #CHAMP_EXTRA n’affiche rien si elle est contenu dans une boucle CONDITION

    Pour créer une condition, il ne faut pas utiliser cette boucle, mais plutôt :

    <BOUCLE_nomboucle(MON_OBJET_AVEC_CHAMPS_EXTRAS){id_objet}{si ma_condition}>
    ...
    </BOUCLE_nomboucle>

    Voila ...

    Reply to this message

  • 2

    Merci pour cet outil formidable qui permet de personnaliser aisément son site et d’ajouter de nouvelles fonctionnalités. J’utilise ce plugin pour gérer une variable supplémentaire id_parent dans la table des MOTS, ce qui permet de lier les mots-clés et d’avoir des arborescences cliquables au sein des groupes de mots (qui eux, ne sont pas cliquables). Une suggestion d’amélioration toutefois : l’interface de gestion du plugin attribue par défaut le type “champ texte” à tout nouveau champ y compris lorsque le champ est déjà créé et paramétré en base. Ca n’a pas d’incidence sur le paramétrage “en dur” dans la base mais c’est un peu déroutant. On ne peut pas choisir le type “numérique” dans la liste des types de champ (sauf erreur de ma part), et la saisie manuelle du type tel que BIGINT(21) ne semble pas avoir d’effet. Pour ma part j’avais créé et paramétré directement le champ dans la base auparavant et non via l’interface du plugin-in. Egalement, et pour ce qui concerne l’ajout d’un champ dans les mots-clés: l’attribution par défaut de la valeur “0” (même si rien n’est défini dans l’interface du plugin-in) au lieu du paramétrage “pas de valeur par défaut” - qui du coup, est écrasé en base. C’est pénible pour les mots-clés et d’autant plus que le comportement est différent selon que l’on crée un nouveau mot-clé ou qu’on modifie un mot existant : en cas de modification, la valeur 0 est attribuée par défaut et s’ensuit un message d’erreur et nécessite qu’on efface le 0 avant de pouvoir enregistrer - on prend le pli, ce n’est pas trop gênant. Par contre, en cas de création d’un mot au sein d’un groupe de mots-clés, c’est la valeur du groupe de mots-clés qui est attribuée par défaut et là c’est problématique parce que la numérotation des groupes de mots est indépendante de celle des mots : donc un mot et un groupe peuvent avoir le même ID et un ID du mot n’a rien à voir avec un ID du groupe. Ce qui est gênant c’est qu’à moins de vérifier avant enregistrement du nouveau mot, il n’y a aucun message d’avertissement et donc on peut aisément “passer à côté” d’une erreur de classification d’un nouveau mot. Ces quelques suggestions si ça peut vous aider pour votre autre plugin-in dédié aux mots-clés. Par ailleurs, pour gérer les mots-clés avec plusieurs mots “parent” le mieux est de définir plusieurs champs distincts par ex. ID_PARENT1, ID_PARENT2 et ID_PARENT3 sinon il n’est pas possible de gérer proprement multi-dépendances. Merci et bon courage pour vos futurs développements.

    • Sans répondre à toutes les questions :

      J’utilise ce plugin pour gérer une variable supplémentaire id_parent dans la table des MOTS, ce qui permet de lier les mots-clés et d’avoir des arborescences cliquables au sein des groupes de mots (qui eux, ne sont pas cliquables).

      Il existe 2 plugins qui auraient pu aider certainement :

    • Merci, en fait je ne posais pas de question puisque le fonctionnement me convient, je suggérais seulement des améliorations. J’ai effectivement aussi testé vos deux plugins pour les mots-clés mais leur fonctionnement ne correspondait pas à mes besoins et je préférais installer un seul plugin générique dans l’éventualité de m’en servir pour d’autres ajouts de champs ultérieurs.

    Reply to this message

  • Bonjour,

    J’ai renseigné par <:qqchose:> la “Liste des choix possibles” de checkbox, avec des fichiers lang correspondant à 2 langues. Dans l’espace privé, les chaînes de lang sont prises en compte, mais pas lorsque j’édite dans l’espace public avec Crayons. C’est moi ou c’est un.e petit.e bug ?

    Reply to this message

  • 1

    Bonjour,

    j’essaye d’apposer des puces dans un champ texte, SPIP 3.2.1 dernière version du plugin. J’ai essayé les 3 options “Traitements automatiques”, mais ça ne semble pas avoir un impact (le texte qui s’affiche reste “déformaté”).
    C’est moi ou c’est le plugin ? ;-) Merci

    • Désolé pour le bruit.
      Il fallait impérativement vider le cache en backend et pas seulement recalculer

    Reply to this message

  • Bonjour,
    peut-on éditer les labels (typiquement via #EDIT) avec Crayons ? J’ai beau essayer, je ne vois pas la solution... En vous remerciant

    Reply to this message

  • 4

    L’affichage conditionel ne marche pas quand on veut utiliser un champ “destinataire” issu du plugin du même nom.

    • J’ai le même problème

    • Bonjour,

      J’ai un champ extra de la table AUTEURS et j’ai coché dans l’onglet restriction :
      Voir la saisie
      Par auteur
      Seulement les administrateurs (même restreints)

      mais la valeur de la saisie est tout de même visible par tous sur le site public. La boucle est :

      <BOUCLE_champs_extras2(DATA){source tableau,#GET{valeurs_extras}}>
      [(#VALEUR)]
       </BOUCLE_champs_extras2>

      A défaut comment puis-je juste ajouter les champs qu’il faut dans cette boucle. Si je remplace
      [(#VALEUR)] par le nom d’un champ extra rien ne s’affiche.

      Merci

      dd

    • En cherchant une solution à ce problème, je suis retombée sur mon post d’il y a 2 ans !

      Je cherche toujours,...

    • Ma réponse ne sera pas trop précise car je n’ai pas “spipé” depuis un certain temps. J’avais trouvé un moyen de faire une boucle (AUTEUR) testant si mon visiteur était authentifié, si c’était un auteur enregistré, si il faisait partie d’un certain groupe d’auteurs (avec le plugin correspondant). Cette boucle n’affichait pas le nom de la personne, ni rien, mais contenait la (ou les) boucles dont je voulais un affichage conditionnel.
      En espérant que ça aide ...

    Reply to this message

  • Bonjour,

    je souhaite utiliser #LISTER_VALEURSbidule, puis y coller un filtre qui me permettra de transformer le résultat en image.
    J’ai tenté la solution suivante, qui est un échec :
    #LISTER_VALEURS{bidule}|replace{2, <img src="images/2-s.png"  alt=""/>}|replace{3, <img src="images/3-s.png"  alt=""/>}|replace{4, <img src="images/4-s.png"  alt=""/>}|replace{5, <img src="images/5-s.png"  alt=""/>}).

    Une idée ?

    Reply to this message

  • 4

    Bonjour,
    Je dois afficher les valeurs saisies de cases à cocher : tout fonctionne mais, à l’affichage, chaque valeur est séparée par une virgule (ce que je ne veux pas). Comment supprimer cette virgule ?

    • Tu peux utiliser le filtre |replace| pour remplacer la virgule par ce que tu veux.

      https://www.spip.net/fr_article4309.html

      si tu veux faire une liste, tu peux utiliser par exemple

      <B_liste>
      <ul>
      <BOUCLE_liste(POUR){tableau #CHAMP|explode{','}}>
      <li>#VALEUR</li>
      </BOUCLE_liste>
      </ul>
      </B_liste>
    • Merci beaucoup ! Dur pour trouver la valeur hexa de la virgule mais c’est OK !
      En fait, c’est pour un portfolio, et les valeurs de mes cases à cocher me servent pour trier les références...

      <div class="portfolio [(#CATEGORIES|replace{\x2C,'  ',S})]"
    • normalement pas besoin de la valeur hexa, les guillemets suffisent ;-)

    • j’avais essayé mais ça ne fonctionnait pas ! J’ai cherché, j’ai trouvé, ça marche, c’est le principal ! Merci encore de tes réponses précieuses.

    Reply to this message

  • christian

    Bjr,

    J’ai créé un slide diaporama... avec pour mot cles “SLIDE” (tt bête). Tous mes articles avec comme mot cles slide s’affichent.

    Sur la table du plugin JobEmploi, j’ai ajouté un champs extra : Mots cle.
    Jusque l’a tout marche sauf que dans la boucle de mon slide n’apparait pas les articles de la table JOBEmploi ?

    Je suppose qu’il y a un lien MSQL mais je ne vois pas comment le mettre ?

    Une petite aide pour maintenant et le futur... MERCI !

    Reply to this message

Add a comment

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 / PostgreSQL
  • 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 apparait.

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.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom