SPIP-Contrib

SPIP-Contrib

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

288 Plugins, 197 contribs sur SPIP-Zone, 181 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 – 614 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 [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 : http://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 23 octobre 2017

Retour en haut de la page

Tout afficher

Vos commentaires

  • Le 23 novembre à 12:51, par nabs En réponse à : Champs Extras 3

    Bonjour,

    Je rencontre un problème avec champs extra lors de l’édition d’un champs par les crayons dans certaines conditions (table non spip)
    Fatal error : Call to undefined function champs_extras_saisies_lister_avec_sql() in /Users/nabs/workspace/poneychevalnature.com/plugins/cextras/cextras_pipelines.php on line 465
    Il semblerai que « inc/cextras.php » ne soit pas déclaré lors qu’on aboutit à la fonction cextras_crayons_controleur($flux)
    Comme je ne sais pas s’il est sensé être déclaré avant et par qui je propose de rajouter cette ligne à l’entrée de la fonction cextras_crayons_controleur($flux) :
    if (!function_exists(’champs_extras_saisies_lister_avec_sql’)) include_spip(’inc/cextras’) ;

    En vous remerciant pour votre travail

    Répondre à ce message

  • Le 11 novembre à 20:08, par DD En réponse à : Champs Extras 3

    J’ai du mal avec les champ extra pour des liens (j’utilise un type de champ « ligne de texte » car je n’est pas vu de champ de type « lien »)

    J’ajoute un champ extra « lien » à la table événements et je me demande s’il est possible d’avoir les mêmes raccourcis que le champ URL des articles c’est à dire si un rédacteur saisit « art22 » dans ce champ extra , c’est automatiquement reconnu et le titre de l’article 22 est cliquable sur l"événement.

    J’ai mis « Traitements de typographie uniquement (typo) » dans la config du champ extra mais cela ne semble pas suffire.
    Si j’indique « Traitements des raccourcis SPIP (propre) » cela ne fonctionne pas non plus et de plus le champ n’est plus éditable avec les crayons.

    Mon code dans la boucle evenements est

    [<p itemprop="link">
    [<span>(#CHAMP_EXTRA{lien,label}) : </span>]
    <span class="#EDIT{lien} spip_out">(#LIEN)</span></p>]

    Merci

    Répondre à ce message

  • Le 8 novembre à 18:23, par magmars En réponse à : Champs Extras 3

    Hello,
    voulant tester ce très complet plugin Champ extra interface, j’ai rencontrée quelques difficultés à régler proprement la partie « restriction », sinon tout fonctionne très bien. Ayant parcourue les commentaires, j’ai entrevue des problèmes similaires mais déjà résolus dans la version la plus récente du plugin que j’ai installée.

    Config en local :
    SPIP 3.2.0
    Champs Extras 3.11.4 - stable
    Champs Extras (Interface) 3.5.3 - stable
    Saisies pour formulaires 2.19.7 - stable
    Escal 3.87.47 - stable
    PHP Version 7.1.11
    libmysql - mysqlnd 5.0.12-dev

    Explication du problème :
    Le but final est d’afficher un groupe de champ dans les articles de la rubrique 4 de mon site. Dans le plugin, dans « Articles », j’ai créé un groupe de champs, puis mentionnée dans restriction « Par secteur » « 4 ». Si je ne restreint à aucune rubrique ou secteur l’affichage du champ ou groupe de champs, cela s’affiche bien sur tous mes articles, mais si je restreint à ma rubrique 4, le-s champs n’appaissent plus du tout.

    Merci par avance pour vos lumières,
    peut-être ai-je loupé une info cruciale dans mes recherches sur le problème.
    Si besoin de plus d’infos sur la config et/ou si besoin de capture d’écran, n’hésitez pas, merci.

    • Le 8 novembre à 22:04, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Tu peux m’envoyer par courriel le fichier d’export des champs extras (en yaml), je regarderai à l’occasion.

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

      Je viens de tester chez moi donc.

      Si tu crées un groupe de champ, tu peux sélectionner la restriction uniquement sur le groupe de champ (pas la peine de la réécrire — si c’est la même — dans l’ensemble des champs qu’il contient).

      Et donc chez moi cela fonctionne. Note que une restriction par secteur nécessite d’avoir un secteur (une rubrique « racine » donc) qui ait la valeur indiquée en configuration. Dans ton cas la rubrique 4 doit être une rubrique racine.

      Si c’est à partir d’une sous rubrique que tu veux cette restriction, c’est à dire que ta rubrique 4 est contenue dans une autre rubrique, c’est une restriction par « branche » qu’il te faut.

    • Le 11 novembre à 14:22, par magmars En réponse à : Champs Extras 3

      Merci beaucoup :))
      En effet je n’avais pas bien saisie le faite que la restriction « branche » concerne que les sous-rubriques d’une rubrique racine, et « secteur » les rubriques racine.

      Simple et efficace !
      Merci encore pour le support et votre patience,
      et merci pour ce plugin génial :))

    Répondre à ce message

  • Le 23 octobre à 19:48, par Julien En réponse à : Champs Extras 3

    Bonjour,
    Est-il possible de placer un champ extra bien défini ailleurs que l’emplacement par défaut (fin de l’article) ? Exemple sous le titre ?

    Répondre à ce message

  • Le 10 novembre à 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 à 15:55, par Matthieu Marcillaud En réponse à : Champs Extras 3

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

    • Le 10 novembre à 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 à 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 ?

    Répondre à ce message

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

    Bonsoir,
    il semblerait que les champs (label, placeholder) que l’on pouvait renseigner avec des chaines <:machaine :> ne prennent plus ces chaines sur 3.2 avec toute dernière version du plugin de ce soir

    • Le 22 octobre à 20:52, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Je n’ai pas l’impression de reproduire. Des précisions seraient bienvenues.
      Si je mets <:activer_plugin:> (le premier élément de ecrire_fr.php) dans le label ou le placeholder d’un input, je vois bien le résultat correct dans le champs extra / le formulaire.

    • Le 23 octobre à 06:54, par beno En réponse à : Champs Extras 3

      Bonjour Matthieu,
      Merci pour votre réponse rapide. Oui, cela devait être un problème de cache (le classique), car les chaines ont ensuite fonctionné. Désolé pour le bruit.
      Mais je saisis du coup l’occasion pour poser une question : y a-t-il un moyen de restreindre l’affichage d’un champ en fonction du niveau dans la hiérarchie (ex : uniquement les rubriques de 1er niveau sous la racine) ?

    • Le 23 octobre à 10:12, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Il faut créer une autorisation spécifique pour cela. Ce n’est pas possible directement depuis l’interface donc.
      Donc par exemple autoriser_article_voirextra_monchamp(....). (et modifierextra)

      Alternativement tu pourrais aussi utiliser restreindre_extras() avec $cible valant ’profondeur’ et en créant un inc_restreindre_extras_objet_sur_profondeur_dist() en te basant sur les autres fonctions de inc/cextras_autoriser.

    • Le 23 octobre à 10:44, par beno En réponse à : Champs Extras 3

      Bonjour Matthieu,
      Merci pour ton message rapide, mais j’ai bien peur que ce ne soit du Chinois pour moi, même si j’en comprends plus ou moins la démarche. Peut-être à ajouter à un TODO ultérieur ;-)
      Encore merci pour la disponibilité !

    Répondre à ce message

  • Le 14 octobre à 17:22, par fred En réponse à : Champs Extras 3

    Bonjour,
    j’ai créer un nouveau champs pour les documents en y ajoutant la barre typo.
    Lorsque je mets en forme ( gras par exemple, du coté site publique, il ne me formate pas le texte correctement.
    Cela affiche le texte brute, par ex : « {{{test}}} », sans les retours chariots.
    Comment faire pour afficher correctement comme pour les articles ?
    Merci

    • Le 14 octobre à 17:23, par fred En réponse à : Champs Extras 3

      cela affiche les « {{{ »

    • Le 14 octobre à 20:13, par Matthieu Marcillaud En réponse à : Champs Extras 3

      Je pense qu’il faut aller dans le dernier onglet de configuration du champ pour activer les traitements correspondants (propre)

    • Le 14 octobre à 20:14, par Matthieu Marcillaud En réponse à : Champs Extras 3

      (note : j’ai édité tes messages pour afficher le code :))

    Répondre à ce message

  • Le 8 octobre à 10:14, par fred En réponse à : Champs Extras 3

    Bonjour,
    dans l’onglet validation, dans Type de vérification à effectuer, j’ai des valeurs vides et je ne peux pas faire de vérifications.
    Existe-il un bug ?
    J’ai installé la dernière version de champs extra et je suis sous spip3.1
    Merci

    Répondre à ce message

  • Le 22 septembre à 18:41, par Natacha En réponse à : Champs Extras 3

    Bonjour à tous

    une question : est il possible de prendre en compte un autre objet éditorial comme le plugin Pages de RastaPopoulos

    merci d’avance
    Natacha

    • Le 24 septembre à 17:44, par Natacha En réponse à : Champs Extras 3

      z’excusez moi j’avais zappé que c’est une page article comme une autre ..

    Répondre à ce message

  • Le 28 août à 13:43, par Julien En réponse à : Champs Extras 3

    Bonjour,

    Comme je fais dans une boucle data pour récupérer les valeurs du champs extra (choix multiple) avec l’appel INFO_XXX ?

    <BOUCLE_data(DATA){source tableau, #INFO_MON_CHAMPEXTRA**{article,5}>
    ...
    </BOUCLE_data>

    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

  • ViaSPIP 3.1

    26 février 2016 – 19 commentaires

    Après la sortie de SPIP 3.1, voici la nouvelle version du squelette ViaSPIP qui reste dans la lignée des précédentes versions. ViaSPIP 3.1 est toujours un squelette généraliste pour SPIP, sous forme de plugin, visant à offrir une alternative au (...)

  • Lecteur Multimédia

    28 février 2007 – 323 commentaires

    Le plugin « lecteur multimedia » permet la lecture et l’affichage de sons ou de vidéos. Il enrichit l’affichage des raccourcis des documents ajoutés <docX>. Il ajoute des lecteurs flash adaptés aux formats .MP3 et .FLV. Le plugin agit sur tous (...)

  • Le Squelette Zpip

    11 novembre 2009 – 353 commentaires

    Ce squelette n’est plus maintenu, il est remplacé par SPIPr-dist Zpip est un modèle de squelette réutilisable, modulaire et disposant d’une galerie de thèmes. Ce modèle de squelette rend l’installation d’un site avec son thème plus facile, et la (...)

  • Zpip-vide v2

    9 novembre 2012 – commentaires

    Zpip-vide fournit un squelette Z vide de contenu, à remplir de noisettes avec le noiZetier. Compatibilité Cette version 2 de Zpip-vide, développée pour SPIP 3, est toujours compatible avec Zpip v1. Elle est par contre incompatible avec Zpip v2 (...)

  • Menus

    18 août 2009 – 985 commentaires

    Créez enfin vos menus facilement !