SPIP-Contrib

SPIP-Contrib

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

286 Plugins, 197 contribs sur SPIP-Zone, 249 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 – 538 commentaires

73 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. 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 : http://plugins.spip.net/cextras

Dernière modification de cette page le 2 décembre 2016

Retour en haut de la page

Tout afficher

Vos commentaires

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

    Bonjour

    Pour info, j’ai remarqué un effet de bord avec la barre typo du porte-plume.
    Si on définit un nouveau champ et que, dans le formulaire d’édition du champ, dans l’onglet « Affichage », on choisit d’activer la prévisualisation sans choisir de barre d’outil, alors la barre d’outils du champs Texte de l’article disparait.

    Répondre à ce message

  • Le 2 décembre à 17:28, par Julien En réponse à : Champs Extras 3

    Bonjour,
    je cherche à savoir s’il est possible d’éditer à l’aide du plugin Crayons, un champ extra de type radio ou select (liste) ?
    J’aurai quelque chose dans ce genre là :

    1. [<li class="#EDIT{collection}">Votre collection est visible par : (#COLLECTION|sinon{"Vous n'avez pas encore renseigné cette information."})<br /></li>]

    « collection » est un champ extra de type radio avec 2 choix possible.
    Pour le moment, ce champ est bien éditable, mais il me propose seulement une ligne de texte dans laquelle on peut écrire ce que l’ont veut, mais qui ne correspond à aucun des 2 choix normalement possible de ce bouton radio.
    Merci à vous :-)

    • Le 3 décembre à 12:26, par Matthieu Marcillaud En réponse à : Champs Extras 3

      La balise #EDIT par défaut permet de modifier le contenu du champ tel qu’enregistré dans la base de données. Ce qui est enregistré pour les boutons radio ou select ou checkbox, c’est la ou les clés dans la déclaration de ton champ (à gauche du signe | ), et non pas le texte ou la chaine de langue à droite du signe donc.

      Si tu veux que #EDIT{collection} affiche un sélecteur radio, il faut se plonger un peu dans la doc du plugin crayons. Champs Extras ne fournit pas directement de passerelle avec Crayons ; c’est vrai que ça pourrait être à étudier, je n’en ai pas eu le besoin encore.

    • Le 3 décembre à 13:55, par Julien En réponse à : Champs Extras 3

      Merci.
      Crayons doit normalement pouvoir le faire, puisque pour le pays, il affiche bien le menu déroulant.
      Donc il n’y a pas de raison que ça ne puisse pas fonctionner avec un bouton radio généré par champs extras.
      J’ai peur que ça me dépasse un peu, mais il faut que je me fasse violence et que j’étudie le plugin un peu plus.
      Merci à toi.

    • Le 3 décembre à 16:07, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Tu es sûr pour Pays ? Généralement ce sont des fichiers « controleurs/xx » et « vues/xx » qui gèrent cela. Mais je n’en vois pas dans ce plugin, ni dans Crayons pour les pays.

    • Le 3 décembre à 16:21, par Julien En réponse à : Champs Extras 3

      Pour « pays » oui, j’en suis sûr, mais je l’utilise avec Inscription3, ça vient peut-être de là ?

    • Le 3 décembre à 16:53, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Oui effectivement, c’est le champ ’pays’ sur les auteurs uniquement visiblement.
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/inscription/trunk/ (répertoires controleurs/ et vues/ donc).

    Répondre à ce message

  • Le 27 juin à 15:46, par oil En réponse à : Champs Extras 3

    Super contrib, est-ce que les champs extras sont maintenant prise en compte dans le système de backup et restauration de base de donnée ? Merci !

    • Le 3 décembre à 13:09, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Bon déjà oui, c’est bien mieux pris en compte depuis SPIP 3.0 (qui restaure tout ce qui est sauvegardé, champs extras ou non).

      Ceci dit… les champs extras étaient aussi pris en compte avant (dans les backup 2.x) et pour les restaurer, il fallait lancer 2 fois de suite la restauration d’un même dump (en 2.x). Je passe les détails (et c’était effectivement pas pratique).

    • Le 3 décembre à 14:11, par oil En réponse à : Champs Extras 3

      Top :) alors maintenant je n’ai plus de raisons de ne pas l’utiliser ! ;)

      merci !!

    Répondre à ce message

  • Le 9 novembre à 12:36, par treb En réponse à : Champs Extras 3

    Voici un bug :

    J’ai voulu créer un champ texte pour mes articles, lorsque je l’ai nommé « action » cela a fait planter l’interface...
    Le seul moyen de débloquer la situation a été de modifier la méta à la main en base de données pour renommer le champ

    Bonne journée

    • Le 3 décembre à 12:42, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Bigre ! Effectivement. Mais ce n’est pas du à Champs Extras directement.

      Champs extras permet de créer le champ sans soucis. C’est ensuite en tentant de modifier un élément de l’objet éditorial concerné que ça ne fonctionne pas. Par exemple un article si l’on a ajouté le champ ’action’ sur les Articles.

    • Le 3 décembre à 13:04, par Matthieu Marcillaud En réponse à : Champs Extras 3

      https://core.spip.net/issues/3868
      Il vaut mieux éviter le mot ’action’ pour le moment.

    • Le 3 décembre à 13:12, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Ah oui tiens, ça plante aussi le formulaire d’édition des champs extras ensuite :) Amusant !

    Répondre à ce message

  • Le 11 juillet à 17:00, par Julien En réponse à : Champs Extras 3

    Bonjour,

    J’ai un énorme souci. Impossible d’ajouter, supprimer ou dupliquer un champs extra dans la table des articles, ça mouline. Les autres tables j’y arrive parfaitement. Quelqu’un a déjà eu ce soucis la ?

    • Le 11 juillet à 17:01, par Julien En réponse à : Champs Extras 3

      J’ai le message suivant :

      Oups. Une erreur inattendue a empêché de soumettre le formulaire. Vous pouvez essayer à nouveau.

    • Le 11 juillet à 18:34, par Julien En réponse à : Champs Extras 3

      En faite, C’est du au passage de la version 3.0.22 à 3.1.1 Extrême lenteur dans la création ou modification d’objets éditoriaux.

      Personne d’autre constate ce problème ?

    • Le 11 juillet à 19:06, par Julien En réponse à : Champs Extras 3

      Bon, en désactivant le plugin « Adminer », j’ai retrouvé quelque chose d’optimal. Mais il y a vraisemblablement une issue à traiter sur cette problématique.

    • Le 10 octobre à 22:22, par Vero En réponse à : Champs Extras 3

      Bonjour,

      Je l’ai avec La fabrique ...

    • Le 3 décembre à 12:28, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Vous avez quoi avec « La Fabrique » ?

      Et j’ai du mal à voir le rapport avec Adminer accessoirement.

    Répondre à ce message

  • Le 16 novembre à 18:13, par Jul Blobul En réponse à : Champs Extras 3

    Bonjour,

    Je suis un gros consommateur de champs extra, quelles inventions ;) J’ai soucis ces dernières semaines, il m’est impossible d’importer des champs ... Cela marchait très bien il y a peu.

    L’export fonctionne au format YAML et PHP mais pas l’import...
    Pas de message d’erreur, juste l’interface qui saute et pas de résultat...

    Suis toujours sous SPIP 3.0.24.

    En vous remerciant !
    Jul

    Répondre à ce message

  • Le 24 novembre à 10:42, par denis En réponse à : Champs Extras 3

    Suggestion qui pourrait-être utile, permettre de suivre les révisions pour les champs extras.

    • Le 24 novembre à 10:48, par Maïeul En réponse à : Champs Extras 3

      C’est deja disponible. Si tu utilise l’interface de création des champs extra, l’onglet « technique », pour chaque champ extra, te permet d’activer ou non le versionnement.

    • Le 2 décembre à 17:28, par Per’Jean En réponse à : Champs Extras 3

      Bonjour Maîeul,
      J’utilise les cextras via la fonction ’declarer_champs_extras’.

      Peut-on aussi activer le versionnage par cette fonction ?
      Merci pour les évolutions et les aides apportées.

      Amitiés Jean.

    • Le 2 décembre à 19:13, par Maïeul En réponse à : Champs Extras 3

      oui, c’est expliqué dans la documentation de l’API. Dans le tableau de description, dans le champ options, on peut avoir le champ « versionner », mis à TRUE.

    • Le 3 décembre à 11:24, par Per’Jean En réponse à : Champs Extras 3

      Merci Maîeul,
      Je n’avais pas pensé à regarder de ce coté ;-(
      Super.

    Répondre à ce message

  • Le 16 juin à 14:48, par Jacques En réponse à : Champs Extras 3

    Bonjour,
    est-il possible d’ajouter des champs aux pétitions des articles dans SPIP ?

    Répondre à ce message

  • Le 22 juillet à 20:02, par dut En réponse à : Champs Extras 3

    Est-ce que la Restrictions d’affichage des champs qiu existait avec Chemps extra 2 est toujours disponible avec Champs extra 3 ?

    • Le 23 juillet à 11:57, par Vans En réponse à : Champs Extras 3

      Oui !
      cf pièce jointe.

      ++

      PNG - 68.5 ko
    • Le 23 juillet à 21:23, par dut En réponse à : Champs Extras 3

      Très pratique en effet, pour un filtrage sur le seul statut, mais j’ai besoin de fonction d’autorisation bien plus specifique (en fonction du login,et d’autres information du contexte).

      y a t’il moyen de surcharger cela par une fonction d’autorisation riche à la manière de ce qui était proposé de façon expérimentale en Champs extra 2

    Répondre à ce message

  • Le 18 août à 12:08, par joz En réponse à : Champs Extras 3

    Bonjour,
    j’aimerai pouvoir multiplier un champs (ou groupe de champs) dans un article, genre :

    Article sur une équipe + champs extra sur un projet.
    Il y a des équipes qui ont plusieurs projets.
    (projet = groupe de champs « ligne de texte + bloc de texte »)

    Est-ce que Champs Extra aurait une solution à cela ?
    Merci d’avance

    • Le 18 août à 13:55, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Bonjour,

      Je ne comprends pas bien quoi et quoi dans la description.
      Une équipe est un article ?
      Un projet est quoi ? ah un bloc avec 2 informations qui pourraient être affecté autant de fois qu’on veut sur les articles = des équipes. (Le terme « multiplier » m’induisait d’erreur)

      Alors non. Champs Extras n’est pas fait pour cela. Il vaut mieux créer un objet éditorial spécifique avec la Fabrique et faire en sorte de pouvoir le lier à des articles.

      Grosso modo donc, avec La Fabrique générer un plugin ayant 1 objet éditorial, genre « Projet d’équipe » (spip_projets_equipes), créer les champs titre, description (de type text), mettre ’titre’ dans Champs spéciaux > calculer les titres ; Ne pas renseigner id_rubrique a priori. Gérer ou non des statuts sur cet objet (en rédaction, proposé, publié, etc…), et surtout dans la partie Liaisons, cocher table de liens, et lier aux articles. Générer le plugin et tester.

      Sans être habitué à la Fabrique, il faut le temps de découvrir (c’est un outil développeur) donc pas forcément le plus adapté.

      Sinon vous pouvez peut être vous en sortir avec un groupe de mot clé et des mots clés, où chaque mot clé est un projet… c’est un peu détourner les mots clés cela dit.

    • Le 23 août à 09:59, par joz En réponse à : Champs Extras 3

      je vais essayer de fabriquer un objet alors
      merci pour l’a réponse et le tuyau

    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

  • Métas +

    3 décembre – 14 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Adaptive Images

    15 novembre 2013 – 69 commentaires

    Un plugin pour permettre aux sites responsive d’adapter automatiquement les images de la page à l’écran de consultation. Adaptive Images, que l’on pourrait traduire par Images adaptatives, désigne la pratique qui vise à adapter les taille, (...)

  • Social tags

    8 septembre 2008 – 428 commentaires

    Le plugin Social Tags permet d’ajouter des icônes de partage de liens vers les sites tels que Digg, Facebook, Delicious.... Une fois le plugin installé et activé (voir doc.), le choix des sites se fait via un menu de configuration. Insertion (...)

  • Module de Paiement Stripe

    17 octobre – commentaires

    Stripe est un prestataire de paiement externe https://stripe.com/fr qui propose une API moderne et une interface de paiement extrêmement conviviale et efficace. Ce module permet les paiements à l’acte et les paiement récurrents. Configuration (...)

  • Métas

    8 août 2009 – 50 commentaires

    Ce petit plugin permet l’ajout, depuis l’espace privé, de metatags aux articles et rubriques de SPIP, ainsi que la mise en exergue de mots importants.

Ça spipe par là