SPIP-Contrib

SPIP-Contrib

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

290 Plugins, 198 contribs sur SPIP-Zone, 85 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 – 651 commentaires

77 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.net 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 11 septembre 2018

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 7 octobre à 15:22, par Yohooo En réponse à : Champs Extras 3

    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 :

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

    Télécharger

    Voila ...

    Répondre à ce message

  • Le 11 septembre à 18:53, par HichamZR En réponse à : Champs Extras 3

    Bonjour,

    Je remonte vers vous un problème découvert avec le plugin Mailsubscribers :

    Bonjour,

    j’ai exactement le même problème, lorsque j’ajoute manuellement un nouvel abonné, j’ai une erreur saisie :

    « Il y a 1 erreur dans votre saisie, veuillez vérifier les informations. »

    Alors que tous les champs sont correctement remplis !

    Pareil dans la partie publique.

    La version de MailSubscribers : 2.9.0

    Merci d’avance pour votre aide

    C’est un bug au niveau du afficher_si.

    Lorsque le afficher_si est masqué, le plugin essaie quand meme de voir s’il est obligatoire.

    Cela m’étonne qu’on ait encore ce bug. Je vais regarder.

    Pour info, j’ai désactivé tous les plugins et réactivé seulement :

    Champs Extras 3.11.5
    Champs Extras (Interface) 3.5.3
    MailShot 1.26.0
    MailSubscribers 2.9.0
    Newsletters 1.5.5
    Et j’ai toujours le même souci :
    « Il y a 1 erreur dans votre saisie, veuillez vérifier les informations. »

    Il se confirme que c’est bien champs extra qui pose problème. Sa vérification des valeurs ne passe pas par l’API de Saisies. Or cette API, normalisé, prend en compte les afficher_si, ce qu’il n’est pas présentement le cas.

    Il faudrait reporter le problème sur le forum de champs extras.

    Merci d’avance pour votre suivi,

    Hicham

    Répondre à ce message

  • Le 27 août à 18:57, par naema En réponse à : Champs Extras 3

    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.

    • Le 28 août à 05:01, par Matthieu Marcillaud En réponse à : Champs Extras 3

      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 :

    • Le 5 septembre à 20:53, par naema En réponse à : Champs Extras 3

      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.

    Répondre à ce message

  • Le 19 juillet à 16:28, par beno En réponse à : Champs Extras 3

    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 ?

    Répondre à ce message

  • Le 13 juillet à 06:05, par beno En réponse à : Champs Extras 3

    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

    • Le 13 juillet à 10:19, par beno En réponse à : Champs Extras 3

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

    Répondre à ce message

  • 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

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

  • Installation de SoyezCréateurs

    24 juin 2009 – 171 commentaires

    SoyezCréateurs est un squelette très paramétrable, multi-usages, RWD et accessible (WCAG/RGAA). Créé à l’origine pour SPIP 1.6 en 2003, il a évolué avec SPIP et est parfaitement adapté à SPIP 3.2 ! Installation Le squelette SoyezCreateurs est un (...)

  • Grappes 1.0

    23 novembre 2012 – 38 commentaires

    Présentation et nouveautés Cette version 1.0 du plugin Grappes est un portage pour SPIP 3.x. Le plugin permet de grouper des objets de SPIP dans des grappes. Les objets du core (articles, rubriques, auteurs, etc.) sont pris en charge, ainsi que (...)

  • Story (HTML5UP)

    17 mai – 16 commentaires

    Squelette SPIP "onepage" pour intégrer le thème Story de HTML5UP https://html5up.net/story Ce squelette permet de réaliser très simplement des sites de type "one page" sans toucher une ligne de code. Site de démonstration Installation A (...)

  • Mediabox avec texte

    30 mars 2015 – 20 commentaires

    Tout pareil que la Mediabox de SPIP sauf qu’on affiche le titre entier et la description entière de l’image dans l’agrandissement de l’image. La présence simultanée de texte et image n’est pas forcément évidente à réaliser dans un agrandissement (...)

  • Bouquinerie V2 : guide de l’utilisateur

    3 janvier – 12 commentaires

    Configuration quels contenus Selon la maquette adoptée pour votre site, vous pouvez décider que certains éléments des livres ou auteurs de livre ne sont pas utilisés. Vous trouverez dans la page de configuration du plugin la possibilité de (...)