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

Notes

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

Discussion

268 discussions

  • 1

    Bonjour
    En Spip 3.0, lors de la modification d’un champ extra via l’interface idoine, j’obtiens systématiquement l’erreur suivante :
    Fatal error : Maximum function nesting level of ’100’ reached, aborting ! in C :\wamp\www\Guidemediterranee\ecrire\public\compiler.php on line 749
    puis toute une liste de call stack

    Et donc impossible de modifier les caractéristiques.
    Pourquoi et comment résoudre le pb ?

    A priori tous les plugins sont à jour pour la 3.0

    Répondre à ce message

  • 1

    Bonjour,
    J’ai installé SPIP 3 et récupère une base utilisant un squelette programmé en 2009 par un copain dev (qui ne bosse plus sur le projet malheureusement) sur du spip 1.9,
    J’essaie donc de faire fonctionner les champs extra qui avaient été programmés à la base (par exemple les changements d’état des rubriques privé, publie, en travaux....)
    j’ai bien trouvé les deux fichiers dans un répertoire ’base’ contenant les champs extra et leurs def
    -  kit.php ainsi
    -  kit_install.php
    N’étant pas du tout développeuse, je ne sais où je dois les replacer pour faire fonctionner ces champs extra que je retrouve comme champs à gérer lorsque je suis dans l’interface de Champs Extra (v3.2.2).

    • Il te faut essayer de déterminer le type des champs qui étaient utilisés, et cliquer dans l’interface sur « gérer ce champ », indiquer le bon type (par exemple une ligne de texte ou bloc de texte ou autre…), et ça devrait aller. Enfin peut être ! Ça dépend aussi comment étaient faits ces champs extras.

      MM.

    Répondre à ce message

  • 3
    philipon

    Bonjour,

    superbe plugin que j’utilise sans compter, bravo.

    comment dans un champs de type liste déroulante, alimenter le contenu à l’aide d’un champ d’une table située ailleurs (base externe) ?
    (comme les articles ou les rubriques)
    si c’est possible ? , sinon comment ’bidouiller’ !!!

    merci.

    • Il faut créer sa propre saisie (voir les exemples dans le plugin) et l’utiliser (c’est le plus simple). Ça fait 3 fichiers à faire (2 dans saisies/ (html & yaml) et 1 dans saisies-vues/ (html) ).

      Une alternative est de faire un filtre ou balise qui retourne le tableau de données externes et de le donner à manger à une saisie selecteur avec datas=#VAL|lefiltre mais je crois pas qu’on puisse faire ça depuis l’interface de toutes façons.

      Donc, créer une saisie me semble le mieux si tu veux la voir dans l’interface de création de champs extras.

    • philipon

      GENIAL !!!!

      j’ai modifié/renommé les trois fichiers de ’sélecteur de sites’ , deux du rep ’saisie’ du plugin SAISIES et celui du rep saisie-vues.

      et roule ma poule, j’ai une selection en mode liste d’un fichier (sql) situé à l’exterieur.
      c’est donc possible et relativement simple à faire

      encore merci pour ta rapide et pertinente réponse.

    • Salut, pourrais tu m’aider ?
      Merci.

      http://contrib.spip.net/Champs-Extras-3#forum469310

    Répondre à ce message

  • Bonjour,
    un peu sur le principe du champ « sélecteur d’article », je souhaiterais pouvoir ajouter des données (des liens) issues de tables présentes sur la base, mais hors spip.
    Pas forcément super doué avec spip, je ne vois pas trop comment faire.
    Merci de votre aide.

    Répondre à ce message

  • Quelqu’un à une idée ?

    Bonjour,
    Je souhaiterais lister par rubrique les auteurs en fonction de leur rubrique (un auteur peut appartenir à 2 rubriques).
    Dans les auteurs, j’ai créé un sélecteur de rubrique multiple dont le Nom du champ est nommé id_rubrique. Après enregistrement des choix, j’obtiens « Sélecteur de rubrique Sans réponse » et dans la base 0,0.
    Autre essai :
    sélecteur de rubrique multiple dont le Nom du champ est nommé selecteur_rubrique_2
    (cf : Document : sans titre-1.png)
    Malheureusement, les auteurs sont listés sur toutes les pages rubriques.
    Merci d’avance

    Répondre à ce message

  • 2
    Vincent

    Hello,

    petit bug avec champs extra je peux affiche mes articles en prévisualisation, si ils sont publié je vois le nombre d’article augementé dans ma rubrique mais les articles n’affiche rien (ne sont pas visible).

    • Je n’ai pas compris ta phrase. Peux tu reformuler différemment ?

    • Désolé le mail était dans mes span j’avais pas vu ta réponse.

      En gros quand j’ai modifier pour ajouter un champs à ma table article ben mes articles n’était plus visible en ligne. En mode prévisualisation si, mais quand j’allais sur la page le texte et tout ne s’affichait pas.

    Répondre à ce message

  • Bonjour,

    Je souhaiterais lister par rubrique les auteurs en fonction de leur rubrique (un auteur peut appartenir à 2 rubriques).

    Dans les auteurs, j’ai créé un sélecteur de rubrique multiple dont le Nom du champ est nommé id_rubrique. Après enregistrement des choix, j’obtiens « Sélecteur de rubrique Sans réponse » et dans la base 0,0.

    Autre essai :
    sélecteur de rubrique multiple dont le Nom du champ est nommé selecteur_rubrique_2
    (cf : Document : sans titre-1.png)
    Malheureusement, les auteurs sont listés sur toutes les pages rubriques.

    Merci d’avance

    Répondre à ce message

  • 2

    Bonjour
    J’utilise Champs_Extra 2 mais il est impossible de passer les valeurs dans les champs depuis un formulaire CVT.
    Cela est-il possible avec Champ Extra 3
    (merci pour la réponse par rapport à la 2.123)
    ADB

    • Je n’ai pas compris « il est impossible de passer les valeurs dans les champs depuis un formulaire CVT ». Peux tu reformuler ?

    • J’ai Champs_Extra 2 et une table_articles avec des champs supplémentaires.
      J’ai créé un formulaire CVT qui récupère des infos et doit les placer dans les différents champs de la table article.
      Mais, si les champs « normaux » de la table sont remplis, les champs « extra » ne le sont pas, bien que les données soient bien transmises.
      Pour que l’action du formulaire soit correctement exécutée, j’ai dû modifier le fichier action/editer_article en rajoutant mes champs à moi.
      Champs Extra 2 et Spip 2.123

    Répondre à ce message

  • 1
    ToyZorus

    Bonjour,

    Y a t-il une méthode simple pour migrer une table avec des champs extras de la version 2.1.13 vers 3.0.10 sans perdre les fonctionnalités de chaque champ (liste déroulante avec choix,définition SQL, traitements automatiques, etc etc ...)

    Merci

    Répondre à ce message

  • 5

    Bonjour Matthieu,

    Je ne sais pas si c’est un bug, ou une précision à apporter dans le descriptif du fonctionnement du plugin :

    J’ai des champs extras, à l’intérieur de groupes de champs. Ces champs (dont certains obligatoires) ne sont applicables qu’à un secteur.

    Je me suis laissé aller à la paresse ;) : voyant qu’en définissant la restriction à un secteur au niveau du groupe de champ celui-ci (et donc les champs extras contenus) n’apparaissait pas dans les autres secteurs, j’ai cru que cela était suffisant.

    Mais on ne peut, dans ce cas, enregistrer un nouvel article.

    Il faut absolument définir la restriction par secteur/branche de manière impérative champs extra par champs extra : la restriction définie au niveau du groupe de champs gère bien l’affichage, mais pas l’obligation.

    (en même temps … je ne sais pas si je suis très clair, là ? ;) )

    • C’est quoi des « groupes de champs » ? C’est ce qui crée des fieldsets je suppose donc…

      À vrai dire je n’ai jamais poussé le vice à tester des restrictions dessus (en fait je n’ai pas eu l’occasion d’utiliser des fieldset depuis champs extras donc…).

      De ce que je comprends, même si le groupe n’est pas affiché (par une restriction), les champs obligatoires dans le groupe sont quand même vérifiés à tord.
      Ça me semble donc un bug :)

      Il faudra corriger ça… un jour !

    • Désolé, j’ai dû taper tout ça un peu trop vite.

      Oui groupe de champ = fieldset (cf. copie d’écran ci-dessus ;) ).

      Et oui, tu as bien compris.
      Il est cependant facile de le corriger (en attendant), en spécifiant la restriction sur chacun des champs.

      Je dois avoir quelque chose de vicieux, sans doute ;)

    • Devrait être corrigé par http://zone.spip.org/trac/spip-zone/changeset/73934

      J’ai testé rapidos, mais n’hésite pas à vérifier :)

      Merci.

    • Merci :) je te tiens au courant !

    • Hello Matthieu. Je viens de tester en désactivant la restriction sur tous les champs d’un fieldset, et apparemment tout fonctionne nickel !
      Bravo (et merci) pour la réactivité !

    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