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

  • 4

    Bonjour,

    Existe-t-il une méthode simple pour gérer la prise en compte des champs extras dans un formulaire d’inscription en frontend (nativement la balise #FORMULAIRE_INSCRIPTION ne renvoie qu’une partie des champs de la table auteur et évidemment pas les champs extras associés à cet objet) ? Quel serait votre conseil ?

    • Non champs extra ne peut pas entrer dedans facilement. Il faut surcharger ou créer son propre formulaire d’inscription je pense. Je n’ai jamais eu à réaliser cette demande donc… je ne sais pas plus en détail.

    • Bonjour,

      Si je comprends bien, on ne peut pas modifier le formulaire d’inscription sur le site avec Champs extra 3 sous Spip 3.0.11 ?

      Mon but : poposer de s’inscrire en renseignant de nouveaux champs nom. prernom. homme /femme (au choix), adresse (facultatif)
      et la possibilité de s’abonner à un choix de lettres d’infos (plusieurs types et langues au choix) , le tout en 2 langues au moins (pour les noms en caractères non européens et leur transcription en alphabet latin). L’inscription conditionne le droit de commenter sur les forums et de proposer des annonces qui seront validées par l’administrateur (peut-être avec Accès restreint.)

      Merci par avance pour toute aide.

    • Cela ne va pas être simple. Il te faut créer un formulaire personnalisé, basé (ou copié en partie) sur le formulaire d’inscription qui existe déjà dans SPIP (cf prive/formulaires), et ajouter dans ton nouveau formulaire (dans squelettes/formulaires par exemple) ce qu’il te manque à la fois dans le code HTML et dans la partie PHP. Tu auras peut être l’api SQL de SPIP à utiliser.

      Une autre solution est d’utiliser un plugin qui gère des inscriptions également. Il y a sur la zone actuellement un très mal nommé « Client » (qui n’a rien à voir de spécifique avec des clients) mais gère des inscriptions. http://zone.spip.org/trac/spip-zone/browser/_plugins_/clients Ce plugin n’est pas dans les dépots en zip (pas accessible via le chargeur de plugin de SPIP naturellement). Mais ça ne répond pas non plus à tous tes besoins je crois (notamment pouvoir mettre 2 noms).

      Après, concernant l’inscription, et le fait de commenter, c’est une option de SPIP des forums. Tu peux obliger les gens à être inscrits (statut visiteur)

      Concernant la proposition d’annonces. Il te faut un plugin pour gérer les annonces (je ne sais pas s’il y en a dans les plugins de SPIP, sinon en créer un avec la Fabrique – si tu es à l’aise avec les squelettes SPIP et le PHP). Après faut placer ces formulaires aux bons endroits, et créer ou adapter les autorisations qui vont bien. Là encore, tout n’est pas simple. Tu découvriras certainement #AUTORISER et #SESSION au passage…

      Voilà ce que je peux dire. Je ne dis pas que ça va être simple :)

      MM.

    • Merci pour tous tes conseils que je vais suivre si je tiens techniquement. Plutôt que client , je vais essayer Inscription 3 (en test) qui semble permettre d’utiliser plus de champs pour le fichier d’inscription des visiteurs.

    Répondre à ce message

  • 3
    Alexandre

    Bonjour,

    est-il possible de créer un champ de fichier pour champs extras ? avec donc upload de documents. Si non, est-ce prévu pour une version ultérieure ?

    Merci

    Cordialement,

    Alexandre

    • Ce n’est pas prévu pour l’instant.

      En fait l’envoi de documents est problème délicat. Pour le moment il n’y a pas de mécanisme automatique pour ça. Il y a eu des discussions et des débuts d’éléments codés (http://zone.spip.org/trac/spip-zone/browser/_plugins_/cvt-upload) mais rien d’abouti encore pour quelque chose d’automatisé.

      MM.

    • le passage de ce plugin à une version stable est elle envisagée prochainement ?

    • De quel plugin ? Champs Extras est déjà « stable ». Concernant CVT-upload… aucune idée… il faudrait que quelqu’un remette le nez dedans. Peut être demander à Rastapopoulos s’il doit y travailler prochainement… En tout cas de mon coté je n’ai rien de prévu qui nécessiterait ça pour l’instant.

    Répondre à ce message

  • 2

    Bonjour,

    Question de néophyte.

    Champs extra nécessite Vérifier (pas disponible avec la gestion des plugins sous spip 3.0.11 qui, elle, propose LangOnet 0.7.4 - stable

    u’ai déjà API de vérification 1.0.3 - test. (je ne sais pas si ça sert pour autre chose), est-ce que ça peut remplacer Vérifier ? Ou alors je prends aussi LangOnet 0.7.4 - stable ? Y a-t-il un risque de conflit ?

    Tout conseil est le bienvenu.

    • Vérifier c’est pareil que API de vérification

      Et il n’y a aucun rapport avec langonet.

    • Merci pour l’info.

      J’avais fait la recherche « Vérifier » avec la gestion des plugins pour les versions stables et ça m’a donné langonet.

      C’est donc résolu.

    Répondre à ce message

  • 2
    Charles

    Merci pour ce plugin qui me réjouit à chaque utilisation.
    Une petite suggestion,
    Au regard de la nouvelle #PROFONDEUR, il serait super qu’un champ dédié dans les restrictions soit disponible.
    Qu’en pensez vous ?

    • Je n’ai jamais eu le besoin encore. Dans tous les cas, même s’il n’y a pas l’option graphique ou via l’api, il est toujours possible de créer les fonctions d’autorisations qui vont bien et de tester dedans les profondeurs.

    • Merci beaucoup pour ce plugin... extra !!

    Répondre à ce message

  • 2

    bonjour,
    le plug-in champ extras 3 marche très bien pour l’affichage de texte.
    mais je n’arrive pas à afficher les images.

    dans le champ créé, je rentre le texte suivant :

    « blabla (signe inférieur) img231|center (signe supérieur) blabla »

    l’affichage donne « blabla blabla »
    pas d’affichage d’image.

    voici mon code :
    1. BOUCLE_rubriques
    2. [(#DESCRIPTIF)]
    3. [(#TEXTAREA_2)]
    4. /BOUCLE_rubriques

    l’affichage de la photo marche avec le champ ’descriptif rapide’ (par défaut dans spip) mais ne marche pas avec le champ extras TEXTAREA_2.

    y-a-t-il un paramètre quelconque à rentrer dans les squelettes ?

    merci pour votre aide
    bker

    Répondre à ce message

  • 2

    Bonjour,

    J’utilise ChampsExtras pour afficher un simple bloc de texte dans la colonne de gauche de certains articles. Or, quand je n’utilise pas cette possibilité, la colonne de gauche des articles affiche tout de même une bande avec la couleur de fond (spécifiée dans la CSS/blocG) de mon bloc de texte. Plutôt gênant. Pour empêcher cela, j’ai essayé tout les trucs que je connais, sans résultat. Mais je ne les connais pas tous ;-)
    Voici ma boucle toute simple :

    <BOUCLE_textnav(ARTICLES){id_article}>
    <div class="blocG">
    [(#BLOC_GAUCHE)]
    </div>
    </BOUCLE_textnav>

    Merci d’avance

    Répondre à ce message

  • 2
    Olivier

    Bonjour,

    Apparemment il y a une incompatibilité entre le plugin Champs Extras (la partie interface) et la dernière version de Spip (3.0.11). Lorsque je déploie cette dernière version de Spip sur ma plateforme de test, j’ai l’erreur suivante quand j’accède à l’espace privé :

    Fatal error : Cannot redeclare inc_yaml_to_array_dist() (previously declared in C :\Users\Olivier\Documents\sites\terresceltes\plugins\yaml\yaml_fonctions.php:12) in C :\Users\Olivier\Documents\sites\terresceltes\ecrire\iterateur\data.php on line 638

    Je n’ai plus cette erreur quand je désactive les plugins « Champs extras (interface) » et « YAML ».

    Je pense que c’est lié à la révision 20701 : http://core.spip.org/projects/spip/repository/revisions/20701

    Peut-être qu’avec cette évolution le plugin YAML n’est plus nécessaire pour faire fonctionner le plugin Champs Extras ?

    • Il faut que tu mettes à jour le plugin Yaml (c’est normalement corrigé déjà).

    • Olivier

      Effectivement ça marche parfaitement avec la dernière version de YAML !
      Merci de la réponse rapide et encore bravo pour ce plugin indispensable :)

    Répondre à ce message

  • 3

    Deux choses seraient utiles dans l’usage qu’on a des champs extras :

    -  Avoir la possiblité de restreindre les champs extras uniquement aux articles de référence et donc pouvoir exclure complètement les traductions.
    -  Avoir la possibilité de ne pas voir les champs non remplis dans un article dans l’interface privée. Ne voir que les champs remplis faciliterait grandement la lisibilité.

    • Pour le point 1 tu peux gérer cela avec des autorisations… En créant dans un fichier de fonctions les fonctions autoriser_article_voirextra_NOM_dist() où nom est le nom de ton champ, pareil pour « modifierextra », tester dedans si c’est un article source (id_trad=0 ou id_trad = id_article) et retourner une réponse (true/false) en fonction de cela.

      Il y a un paragraphe sur les autorisations sur la documentation des API de champs extras.

    • Mon message n’était sans doute pas super explicite mais le point 1 concernait aussi l’interface privée. Dans ce cas là, j’imagine que c’est plus compliqué à mettre en oeuvre ?

    • Heu non, c’est pareil… Ces autorisations sont appelées automatiquement par champs extras.

    Répondre à ce message

  • 2

    Bonjour et désolé d’insister, mais je réitère ma demande : que modifier pour pouvoir appeler des éléments d’une table extérieure à SPIP.
    J’ai bien compris qu’il falait créer les 3 fichiers :

    saisies/ma_saisie.html,
    saisies/ma_saisie.yaml et
    saisies-vues/ma_saisie.html

    Mais après, que modifier ?
    Merci de votre aide.

    Répondre à ce message

  • 1
    Cinéma LUX

    Bonjour,
    j’utilise le plugins séances et j’ai ajouté une liste multiples « typeseance » avec champs extras pour les versions de films (vo, vf, etc).
    La création de la liste multiples se passe sans problème, mais lorsque je veux afficher par séance mes choix cochés avec #TYPESEANCE, soit rien de ne passe, soit j’ai choix 1, choix 2, etc qui apparaissent.

    ce qui est bizarre c’est que cela marchait il y a 2 mois environ lors de test préalable...

    Une idée sur ce non affichage ?

    Merci !!!

    • Pour les sélections qui ont de multiples choix à base de couples clé/valeur, le #CHAMP retournera ce qui est stocké en base (la clé) et non l’association de valeur indiquée dans la configuration du champ. Il faut utiliser #LISTER_VALEURS{champ} tel que documenté dans cette page.

      MM.

    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