Champs Extras — introduction

Il est possible d’ajouter des champs supplémentaires aux objets SPIP : les “Champs Extras”.

Principe

Depuis SPIP 3.0.0, l’ajout de champs supplémentaires (Champs Extra) aux objet SPIP est séparée en quatre composants :

  • Un plugin pour déclarer les champs en PHP, objet du présent article.
  • Un plugin, s’appuyant sur le précédent, pour créer et gérer ces champs dans une interface graphique.
  • Deux plugins sur lesquels l’on s’appuie :
    • L’un permettant de gérer les saisies de formulaires liées aux champs extra : “Entries for forms”.
    • L’un permettant de vérifier les données saisies par le rédacteur ou la rédactrice : “Vérifier

Déclarer ses champs

Deux possibilités s’offrent à vous :

Utiliser ses champs dans les squelettes

Lire “Champs extras — utilisation dans les squelettes”.

Créer de nouveaux types de saisies

Lire “Créer ses propres saisies”.

Xdebug et Nesting Level

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)

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

Discussion

8 discussions

  • 8

    Bonjour,
    Avec la mise à jour récente de Champs extras (de 4.1.2 -> 4.2.0) j’ai perdu la possibilité d’éditer mes champs basés sur les mots clés, Idem pour la création de nouveaux champs, sous “Contenu éditorial” le choix “Mot-clé” n’existe plus. Du coup mes anciens champs se retrouvent sous forme de bouton radio (liste de plus de 150 items visible) et allongent sérieusement les pages d’administration.

    Pourriez vous m’indiquer comment retrouver l’option “Mot-clé” dans champs extras ?

    • Je pense que le problème ne vient pas de la mise à jour de champ extras, mais du plugin saisies. Je regarde et vous tient au courant.

    • Vous êtes bluffant de réactivité, merci !

    • Si cela peut aider :
      Fonctionnement nominal
      Saisies pour formulaires : 5.5.1
      C Extras: 4.1.2
      C Extras interface: 4.1.1

      Disparition de l’option mot-clé:
      Saisies pour formulaires 5.6.1
      Champs Extras 4.2.0
      Champs Extras (Interface) 4.2.0

    • Est-ce que par hasard dans configuration>-contenu du site la possibilité de créer des mots clés n’aurait pas été desactivée par erreur? auquel cas la mise à jour du plugin saisies a effectivement desactivé la possibilité d’ajouter/modifier une telle saisie.

    • Effectivement, l’option “mots-clés” n’est pas activée mais ne l’a jamais été. Je ne souhaite pas que les rédacteurs puissent créer des mots-clés, car je les utilise uniquement pour personnaliser les formulaires d’édition des objets.

    • mouais, mais tu a quand meme des mot clés, donc forcément ca pose des incohérences dans le choix des saisies proposées, vu que SPIP pense que tu n’a pas de mot clé, bah on n’affiche pas la saisie mot clé.

      Et j’avoue que je suis moyen chaud de tester à chaque fois qu’on liste les saisies disponibles si effectivement on n’a des mot clés ou pas, parce que c’est une fonction qui est appelé souvent et cela ferait des requetes sql en plus pour pas grand chose.

      Du reste normalement celle les admins peuvent créer des mots clés.

    • OK cela fait sens. J’ai activé les mots clés, cela à rendu dispo mot-clé dans c extra, puis j’ai forcé l’affichage de mes champs en select. Tout est ok, un grand merci Maïeul !

    • Je me demande si on devrait pas forcer la classe select2 sur cette saisie, afin de pouvoir profiter de cette magnifique lib js

    Reply to this message

  • 5

    Bonjour,
    J’ai passé un site de SPIP 3.2 vers 4.0 puis 4.1, 4.2 et 4.3.
    Et je me rends compte que j’ai de gros problèmes avec Champs Extra.

    J’ai initialement quelques champs ajoutés aux articles de ma rubrique 38.

    Sur la page ?exec=article_edit&id_article=xx je ne vois pas mes champs additionnels, à la place je vois “Erreur d’exécution ../plugins/auto/saisies/v5.6.1/inclure/generer_saisies.html”

    En haut de cette page j’ai le message : “1 Erreur(s) dans le squelette - Erreur d’exécution ../plugins/auto/saisies/v5.6.1/inclure/voir_saisies.html | File […]/plugins/auto/saisies/v5.6.1/inc/saisies_lister_disponibles.php Line 113 : Call to undefined function yaml_charger_inclusions()”

    Et sur /ecrire/?exec=champs_extras_edit&objet=article
    je vois ces erreurs

    /*008*/include_once(“./” . _DIR_RACINE . “ecrire/balise/formulaire_.php”);
    /*009*/if ($lang_select = “fr”) $lang_select = lang_select($lang_select);
    /*010*/inserer_balise_dynamique(balise_FORMULAIRE__dyn(’FORMULAIRE_CONSTRUIRE_FORMULAIRE’, ’champs_extras_spip_articles’, array(’0’=>array(’options’=>array(’nom’=>’ville’, ’label’=>’Ville’, ’type’=>’text’, ’size’=>’40’, ’autocomplete’=>’defaut’, ’restrictions’=>array(’secteurs’=>’2’, ’branches’=>’38’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fc8d2a6557b8’, ’saisie’=>’input’), ’1’=>array(’options’=>array(’nom’=>’lieu’, ’label’=>’Lieu’, ’type’=>’text’, ’size’=>’40’, ’autocomplete’=>’defaut’, ’restrictions’=>array(’secteurs’=>’2’, ’branches’=>’38’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fc8d2f5efa5a’, ’saisie’=>’input’), ’2’=>array(’options’=>array(’nom’=>’lieu_url’, ’label’=>’Url du lien sur le lieu’, ’explication’=>’Adresse complète avec le http://’, ’type’=>’text’, ’size’=>’40’, ’autocomplete’=>’defaut’, ’restrictions’=>array(’secteurs’=>’2’, ’branches’=>’38’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’verifier’=>array(’type’=>’url’, ’options’=>array(’mode’=>’protocole_seul’, ’type_protocole’=>’web’)), ’identifiant’=>’@4fc8d3161209e’, ’saisie’=>’input’), ’3’=>array(’options’=>array(’nom’=>’distribution’, ’label’=>’Distribution’, ’rows’=>’5’, ’cols’=>’40’, ’inserer_barre’=>’forum’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’, ’traitements’=>’_TRAITEMENT_RACCOURCIS’), ’identifiant’=>’@4fce40fd54017’, ’saisie’=>’textarea’), ’4’=>array(’options’=>array(’nom’=>’lien_page_spectacle’, ’label’=>’Choisir un spectacle liés’, ’restrictions’=>array(’secteurs’=>’’, ’branches’=>’16’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4ff1d0ce5b9ba’, ’saisie’=>’selecteur_article’), ’5’=>array(’options’=>array(’nom’=>’lescours’, ’label’=>’Les cours’, ’rows’=>’5’, ’cols’=>’40’, ’inserer_barre’=>’edition’, ’restrictions’=>array(’secteurs’=>’’, ’branches’=>’20’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@500429e0c0b20’, ’saisie’=>’textarea’), ’6’=>array(’options’=>array(’nom’=>’fieldset_1’, ’label’=>’Colonne Droite’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fcd2ceedd1a1’, ’saisie’=>’fieldset’, ’saisies’=>array(’0’=>array(’options’=>array(’nom’=>’top_gauche’, ’label’=>’Haut Colonne Droite’, ’rows’=>’5’, ’cols’=>’50’, ’inserer_barre’=>’forum’, ’previsualisation’=>’on’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fcd27c34ec3e’, ’saisie’=>’textarea’), ’1’=>array(’options’=>array(’nom’=>’liens_videos’, ’label’=>’Liens Videos’, ’rows’=>’5’, ’cols’=>’40’, ’inserer_barre’=>’forum’, ’previsualisation’=>’on’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fcd2c8418c96’, ’saisie’=>’textarea’), ’2’=>array(’options’=>array(’nom’=>’ou_et_quand’, ’label’=>’Où et quand ?’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’), ’identifiant’=>’@4fcd640b712ad’, ’saisie’=>’selecteur_rubrique’), ’3’=>array(’options’=>array(’nom’=>’blocs_depliable’, ’label’=>’Blocs dépliables’, ’rows’=>’10’, ’cols’=>’40’, ’inserer_barre’=>’edition’, ’previsualisation’=>’on’, ’restrictions’=>array(’secteurs’=>’3’, ’branches’=>’44’, ’voir’=>array(’auteur’=>’’), ’modifier’=>array(’auteur’=>’’)), ’sql’=>’text DEFAULT \’\’ NOT NULL’, ’rechercher_ponderation’=>’2’, ’traitements’=>’_TRAITEMENT_RACCOURCIS’), ’identifiant’=>’@4fcd5e9b25a74’, ’saisie’=>’textarea’)))), array(’modifier_nom’=>’1’, ’nom_unique’=>’1’, ’saisies_exclues’=>array(’0’=>’fichiers’))), array(’../plugins/auto/champs_extras_interface-d76eb-champs_extras_interface-4.2.0/formulaires/editer_champs_extras.html’, ’html_47c18c16e1913c9850375a6c3ca2f3ce’, ’’, 7, ’fr’));

    J’ai désactivé, réactivé, vidé les caches, rien n’y fait.

    • qu’est-ce que cela donne si tu actives le plugin yaml ?

    • Merci pour la réponse rapide, j’ai bien YAML d’activé version 3.1.0

    • Bon, là compliqué d’intervenir comme cela, faudrait avoir un accès ssh/ftp pour pouvoir faire du live debug.

    • J’ai supprimé tous mes plugins qui étaient pourtant en dernière version, je les ai tous téléchargé reinstallé et ça remarche, j’ai pas trop compris pourquoi...

    • Une hypothèse possible c’est un problème de cache php qui colle. Svt ca crère des emmerdes. Mais au moins c’est résolu :)

    Reply to this message

  • 1

    Bonjour

    Lorsqu’on utilise un champ de type sélecteur d’article et de rubrique, l’information est stockée ainsi en base :

    rubrique|25,article|386

    Existe-t-il une boucle spécifique pour afficher le contenu avec des liens vers les objets sélectionnés ?

    J’ai commencé à écrire ce morceau de squelette :

    <BOUCLE_favoris(DATA){source table, #LISTER_VALEURS**{favoris}}>
       #SET{url, ''}
       [(#VALEUR*|match{rubrique}|oui)
          #SET{url, #URL_RUBRIQUE{#VALEUR**|substr{9}}})]
       ]
       [(#VALEUR*|match{article}|oui)
          [(#SET{url, #URL_ARTICLE{#VALEUR**|substr{8}}})]
       ]
       <li><a href="#GET{url}">#VALEUR</a></li>
    </BOUCLE_favoris>

    Mais je le trouve un peu tiré par les cheveux, et je me dis qu’il y a peut-être un moyen plus efficace de remonter à l’URL de la page, ainsi que son nom (que je n’ai pas inclus ici)

    Merci de vos conseils

    • Le filtre picker_selected peut te renvoyer un tableau objet/identifiant. Plus simple après à boucler dessus.

      https://search.spip.net/git.spip.net/spip/spip/-/blob/ecrire/inc/filtres_selecteur_generique.php?L80

      Ensuite la balise #INFO_XX https://www.spip.net/fr_article5544.html

    Reply to this message

  • Bonjour,
    dans l’espace privé, il y a le groupe “Contenu éditorial” avec le champ “Article”. Je l’ai ajouté à un objet “événement”. Comment afficher dans un squelette le résultat de ce champ ? Quand je l’appelle directement pour tester, j’ai bien “article|xxxx” qui s’affiche. Ce que je cherche à faire, c’est récupérer l’ID de cet article pour afficher une partie de son contenu dans mon squelette événement. Ce n’est p-e pas possible ?
    Actuellement, j’utilise des mots-clés pour ça. Mais j’aimerais simplifier les liaisons entre ces objets.
    Le site est ici : https://www.jeunes-talents.org (les événements à venir sont en page d’accueil)

    Merci pour votre aide,
    Rémy

    Reply to this message

  • 6

    Bonjour,
    J’avais un site avec 2 champs extra sur les auteurs.
    Après mise à jour de spip et des plugins champs extra, les 2 champs sont présents mais ne s’affiche plus dans les fiche auteurs.
    De plus lors de la création d’un nouvel auteur, les champs extras ne sont plus présents.

    Des idées pour retrouver tout ?

    • Etes vous sûr que le plugin champ extra n’aurait pas été desactivé pendant la mise à jour?

      De quelle version de SPIP à quelle version etes vous passé ?

    • Mise à jour de 3.2 vers 4.1 de spip
      Le plugin était présent avant la mise à jour.
      Puis obsolète
      J’ai mis à jour le plugin mais rien
      J’ai même essayé un import du fichier des champs extra.
      Ça m’annonce qu’il a récupéré les champs manquants mais toujours rien

    • Mais là le plugin il est activé ou pas ? As tu vider les caches ?

    • Actuellement il est activé.
      J’ai vidé les caches du site, je tente de vider les caches du plugins

    • Caches vidés et rien de plus.

    • Hum, il doit surement y avoir quelque part une erreur PHP... est-ce que vous avez accès aux logs PHP ?

      Si non, il faudra que je puisse debug en direct, je le crains.

    Reply to this message

  • 2

    Bonjour,
    grâce aux champs extra, on peut proposer des cases à cocher pour un groupe de mots-clés via la saisie “mots”, c’est magique.
    Si on utilise les crayons, on peut facilement modifier ces mots-clés dans la partie publique, la magie opère encore.
    Mais le résultat est stocké sous forme de liste dans un champs texte.

    Comment faire en sorte que cela permette d’affecter effectivement les mots-clés à l’objet ?
    Est-ce possible simplement ?

    • Et sinon... est-ce possible de façon complexe ? ;)
      Une piste ?

    • Bah les champs extras ne sont pas des mot clés, donc non ce n’est pas possible via champ extra :)

      les crayons en eux même ne permettent pas de gérer les liaisons entre objet (bien qu’on puisse imaginer de les étendres... mais il faudrait ouvrir un ticket)

      sans devellopement du côté des crayons, la seule chose que je vois c’est de faire une inclusion du squelette

      prive/objets/liste/mots_lies.html en passant les bon paramètres, sans garantir d’y arriver efficacement, mais à tester.

    Reply to this message

  • 1

    Bonjour,

    On a le plugin installé sur SPIP3.2. Puis, on l’avait désactivé puis on a supprimé certains champs directement depuis la base de donnée. On l’a réactivé, puis fait une importation du fichier yaml. Et les champs n’ont pas été créé en base. Peut-être que c’est à cause de l’opération manuelle? Que faudrait-il faire?

    Merci

    • Je pense qu’il aurait fallu faire non pas desactiver mais bel et bien desinstaller. Il doit y avoir des metas qui traine.

      Si c’est possible

      1. Sauvegarder la base
      2. Desinstaller le plugin (et pas desactiver). Attention le contenu de TOUT les champs extras seront perdus.
      3. Reactiver/installer le plugin

    Reply to this message

  • Avec SPIP 4.1.5 et tous les plugins à jour, le champ extra sélecteur d’article ne marche plus (alors que sélecteur article ou rubrique marche bien) (on peut bien sélectionner des articles, mais ils ne sont pas visibles dans la fiche article après enregistrement de l’article) : spip enregistre dans la base articles|25 et non article|25.
    Si, via phpmyadmin on supprime le S, alors tout marche bien.
    Je ne sais pas trop qui gère ce libellé : saisie ? Bonux ? Iextra ?

    Une idée de l’origine de ce s intempestif ?

    Merci de votre aide.
    Julien

    Reply to this message

Add a comment

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Who are you?
[Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom