SPIP-Contrib

SPIP-Contrib

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

289 Plugins, 197 contribs sur SPIP-Zone, 79 visiteurs en ce moment

Accueil > Améliorations de l’espace privé > Champs extra > Champs Extras 3

Champs Extras 3

16 janvier 2012 – par Matthieu Marcillaud – 643 commentaires

74 votes

Ce plugin permet de créer et/ou de gérer des champs supplémentaires dans les objets éditoriaux de SPIP. Il permet donc de prendre en compte et d’afficher de nouveaux éléments dans n’importe quel objet éditorial de SPIP.

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.org où vous pourrez voir la vidéo en plus grand format.

Introduction

Ce plugin est plus qu’une adaptation pour SPIP 3 du plugin « Champs Extras 2 ». Les nouveaux champs sont toujours stockés dans de nouvelles colonnes SQL sur les objets éditoriaux correspondants, mais l’interface et le fonctionnement technique sous-jacent a été en grande partie modifié pour deux raisons essentielles :

  • SPIP 3 offrant une méthodologie pour déclarer des objets éditoriaux, ce plugin s’appuie donc dessus pour connaître la liste des objets sur lesquels il peut intervenir et créer de nouveaux champs. Ainsi, il est possible à l’aide de EXTRA3 d’ajouter des champs à tous les objets éditoriaux (et éditables) déclarés par SPIP3 ou par des plugins. (Avec EXTRA2, il était nécessaire que le plugin à l’origine de l’objet éditorial le déclare comme extensible).
  • Le plugin « Saisies » dispose d’un générateur de formulaire, à l’origine créée pour le plugin « Formidable, le générateur de formulaires » et d’un nombre de saisies possibles grandement supérieur à ce que proposait la version 2. Mutualiser ce code entre plusieurs plugins permet une meilleure maintenance, une interface plus complète et une aussi grande extensibilité.

L’ensemble est donc à la fois plus fonctionnel, plus extensible, le tout en utilisant bien moins de code.

Séparation de l’API et de l’interface graphique

Ce plugin est séparé en deux éléments indépendants :

  • le premier, « Champs Extras » (lire « Champs Extras 3 - API et créations ») donne accès aux fonctions de création, de gestion et d’affichage des champs, mais pour d’autres plugins. 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 « API » 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 ».

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

Utiliser les champs 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 :

  1. <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} :

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

Télécharger

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}

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

Télécharger

Informations d’une saisies

Enfin, vous pouvez récupérer n’importe quelle information sur la saisie 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 :

  1. #CHAMP_EXTRA{documentation,label}
  2. #CHAMP_EXTRA{hobbies,label}
  3. #CHAMP_EXTRA{hobbies,explication}

Télécharger

Créer de nouveaux types de saisies

Si les saisies présentes ne sont pas suffisantes pour votre utilisation, vous pouvez en créer de nouvelles dans votre répertoire squelettes ou votre plugin en créant :

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

Reportez vous à la documentation du plugin « Saisies » ou aux fichiers de saisies du même plugin pour vous en inspirer.

Nesting Level et XDebug

Si vous rencontrez cette erreur : Fatal error : Maximum function nesting level of ’100’ reached c’est que xdebug est actif. Il faut augmenter sa profondeur d’exécution. Par exemple en mettant dans votre config/mes_options.php l’instruction suivante (pensez à ouvrir <?php sur la première ligne et caractère du fichier si ce n’est pas fait, et pas la peine de le fermer)

  1. <?php
  2. ini_set('xdebug.max_nesting_level', 200);

Télécharger

Voir en ligne : https://plugins.spip.net/cextras

Notes

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

Dernière modification de cette page le 16 janvier 2018

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 17 juin à 09:50, par beno En réponse à : Champs Extras 3

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

    Répondre à ce message

  • Le 14 avril 2015 à 03:15, par livier En réponse à : Champs Extras 3

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

    • Le 20 avril 2015 à 14:05, par Yohooo En réponse à : Champs Extras 3

      J’ai le même problème

    • Le 21 mars 2016 à 00:10, par DD En réponse à : Champs Extras 3

      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

    • Le 14 juin à 14:37, par DD En réponse à : Champs Extras 3

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

      Je cherche toujours,...

    • Le 14 juin à 15:37, par livier En réponse à : Champs Extras 3

      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 ...

    Répondre à ce message

  • Le 29 mai à 17:24, par bob En réponse à : Champs Extras 3

    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 ?

    Répondre à ce message

  • Le 25 avril à 16:44, par mcommemarc En réponse à : Champs Extras 3

    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 ?

    • Le 25 avril à 17:14, par Maïeul En réponse à : Champs Extras 3

      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>
    • Le 25 avril à 18:08, par mcommemarc En réponse à : Champs Extras 3

      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...

      1. <div class="portfolio [(#CATEGORIES|replace{\x2C,'  ',S})]"
    • Le 25 avril à 18:16, par Maïeul En réponse à : Champs Extras 3

      normalement pas besoin de la valeur hexa, les guillemets suffisent ;-)

    • Le 25 avril à 18:18, par mcommemarc En réponse à : Champs Extras 3

      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.

    Répondre à ce message

  • Le 21 avril à 10:07, par christian En réponse à : Champs Extras 3

    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 !

    Répondre à ce message

  • Le 27 mars à 20:00, par christian En réponse à : Champs Extras 3

    Bjr,

    Tjours avec CHAMPS EXTRA problématique pour configurer des champs. IMPOSSIBLE message : Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.

    J’essaye à nouveau rien je réssaye et j’ai le msg : Fatal error : Maximum function nesting level of ’100’ reached, aborting ! in C :\Users\Christian\Desktop\UwAmp\www\mefintra\ecrire\inc\utils.php on line 1500

    Que dois-je faire ?
    Merci pour les réponses.
    A btôt.

    • Le 28 mars à 11:39, par tcharlss En réponse à : Champs Extras 3

      Possible que ce soit dû à l’extension PHP xdebug.
      Ajoute cette ligne dans ton fichier mes_options.php :

      1. ini_set('xdebug.max_nesting_level', 200);
    • Le 28 mars à 20:24, par christian En réponse à : Champs Extras 3

      Merci, à priori cela marche... le msg semble avoir disparu...
      Merci

    Répondre à ce message

  • Le 24 mars à 00:35, par christian En réponse à : Champs Extras 3

    Bonsoir, je tente déséspérement de faire fonctionner CHAMPS EXTRA pour ajouter des champs sur une table du plugin EMPLOI

    J’obtiens comme message :
    Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.

    Qu’est-ce que je peux faire, avec un msg aussi cool OUPS !

    Répondre à ce message

  • Le 10 novembre 2017 à 15:40, par commetou En réponse à : Champs Extras 3

    Bonjour Matthieu,
    J’ai un soucis avec l’affichage d’un champ extra et la commande #LISTER_VALEURSnom_du_champ.

    J’ai créé un groupe de mots-clés (qui est modifiable à loisir pour l’auteur) qui est appelé par un champ extra.

    Suite à la mise à jour SPIP 3.1.7 (plugins tous à jour), au lieu de m’afficher la valeur du champ, il m’affiche l’id du mot clé.

    Que faire ?

    Pour info la ligne qui fonctionnait avant :

    1. [<div class="#EDIT{code_postal}[(#GET{rang})][(#GET{rang}|=={'odd'}|?{[(#SET{rang,'even'})],[(#SET{rang,'odd'})]})]" id="CODE_POSTAL">[<span class="myLab">(#CHAMP_EXTRA{code_postal,label})&nbsp;: </span>](#LISTER_VALEURS{code_postal})</div>]

    Merci d’avance de ta réponse et belle journée !

    • Le 10 novembre 2017 à 15:55, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Quelle est la saisie utilisée par ce champ extra ?

    • Le 10 novembre 2017 à 16:38, par commetou En réponse à : Champs Extras 3

      j’ai choisi mot clé comme champ extra et je lui ai donné la valeur du groupe de mot clé.
      je n’ai rien écrit d’autre que l’affichage des champs dans le squelette

    • Le 10 novembre 2017 à 20:58, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Rien n’a changé de ce côté. Peut être confonds-tu avec des saisies radio ou sélection que tu configures toi-même ?

    • Le 27 décembre 2017 à 23:53, par Christophe Noisette En réponse à : Champs Extras 3

      Bonsoir
      je rencontre le même problème. J’ai les id mais pas le nom des mots clés...
      Cordialement
      Christophe

    • Le 6 mars à 16:36, par Philippe En réponse à : Champs Extras 3

      Bonjour, même problème, #LISTER_VALEURSnom_du_champ me renvoie les id du mot clé. Quelqu’un a-t-il pu résoudre ce problème ?
      Merci

    • Le 13 mars à 12:43, par jpcrea En réponse à : Champs Extras 3

      Si le nom du champ est tag, pour obtenir le titre du mot clé (avec son lien) à la place de son id on doit écrire :

      <BOUCLE_tag(MOTS){id_mot IN #LISTER_VALEURS{tag}}>
                        <a href="#URL_MOT">#TITRE</a>
                           </BOUCLE_tag>
    • Le 13 mars à 17:12, par Philippe En réponse à : Champs Extras 3

      Merci JP, ça marche !

    Répondre à ce message

  • Le 8 mars à 20:38, par david En réponse à : Champs Extras 3

    Bonjour quelqu’un pourrait t’il me dire pour afficher la date a l’endroit en effet un champs extra de saisie de date quand je l’affiche il me la met a l’envers merci

    Répondre à ce message

  • Le 7 février à 12:11, par pierreferriere En réponse à : Champs Extras 3

    Bonjour,

    J’ai un bug récurrent : sur la page monsite.com/ecrire/ ?exec=champs_extras

    Je vois bien la liste de mes champs extra, notamment en rubrique

    MAIS quand je clique sur Rubriques pour entrer en édition des champs extra associés aux rubriques, il me MANQUE des champs extras...

    PIRE : sur cet écran (monsite.com/ ?exec=champs_extras_edit&objet=rubrique) si je fais enregistrer sans changer quoi que ce soit, une partie des champs extra disparaissent sur la page : monsite.com/ecrire/ ?exec=champs_extras

    Heureusement que je les avais exporté... Je les réimporte et... retour en haut de ce post... !

    SPIP : 3.1.7
    CEXTRA : 3.11.4
    CEXTRA Interface : 3.5.2

    HELP !!! et merci d’avance

    • Le 7 février à 12:17, par pierreferriere En réponse à : Champs Extras 3

      « Réinitialiser le formulaire » a réglé mon problème mais je suis curieux de comprendre la cause du problème qui oblige à « réinitialiser le formulaire »... merci

    • Le 4 mars à 08:34, par chris En réponse à : Champs Extras 3

      En permanence j’ai ce genre de problèmes, quand je passe un site en prod sur un serveur de dev, ou l’inverse quand je passe un site, en prod. 1 fois sur 2 mes champs disparaissent des articles ou des rubriques. Et un « réinitialiser le formulaire » n’y fait rien. Je passe des heures à vider des caches, désactiver des plugins, réactiver, changer les noms des champs etc... et parfois sans comprendre pourquoi ni comment, ça se remet a marcher, tout en me demandant pourquoi j’ai eu la mauvaise idée d’installer ce plugin, même si il m’a rendu de grands services et que j’en remercie l’auteur. J’évite le plus possible aujourd’hui de l’utiliser sur des nouveaux projets.

    • Le 4 mars à 08:44, par chris En réponse à : Champs Extras 3

      Dernier bug de ce genre réglé en supprimant les restrictions par secteur et en les passant par branche.

    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

  • ScolaSPIP 4

    19 janvier 2016 – 345 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • Notifications

    23 juillet 2007 – 209 commentaires

    Le plugin notifications sait envoyer des mails quand les gens s’expriment dans le forum de l’espace privé, sous un article, ou dans la messagerie personnelle... Il permet également de notifier le ou les auteurs d’un article lors de la publication de (...)

  • Albums 3

    8 août 2014 – 279 commentaires

    Le plugin « Albums » évolue dans une version 3 pour SPIP 3. Avant d’effectuer une mise à jour depuis la version 1 ou 2, consultez les notes sur la rétro-compatibilité. Les modèles, notamment, on reçut quelques changements pour la bonne cause. En (...)

  • Plugin SEO

    6 août 2009 – 245 commentaires

    SEO est un plugin qui ajoute la possibilité d’insérer manuellement où vous le souhaitez ou de manière automatique dans la partie de votre site web : meta tags, URL canonique, Google webmaster tools Meta Code et Google Analytics javascript. Il est (...)

  • Les crayons

    23 avril 2008 – 840 commentaires

    Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.