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 : séparation de l’API et de l’interface graphique
Il existe deux plugins distincts :
- le premier, « Champs Extras » (lire « Champs Extras — introduction ») donne accès aux fonctions de création, de gestion et d’affichage des champs. Il est ne constitue qu’un outil de développement. 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 « Core » 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 ». C’est ce plugin qui est documenté ici.
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.
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.
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.
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 :
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 :
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 :
Discussions par date d’activité
268 discussions
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.
Tu peux m’envoyer par courriel le fichier d’export des champs extras (en yaml), je regarderai à l’occasion.
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.
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
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 ?
Nope, pas possible avec ce plugin.
Répondre à ce message
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
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.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) ?
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 uninc_restreindre_extras_objet_sur_profondeur_dist()
en te basant sur les autres fonctions deinc/cextras_autoriser
.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
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
cela affiche les «
{{{
»Je pense qu’il faut aller dans le dernier onglet de configuration du champ pour activer les traitements correspondants (propre)
(note : j’ai édité tes messages pour afficher le code :))
Répondre à ce message
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
Gniiii ! Tu as raison !
Trouvé. Il te faudra mettre à jour Verifier (Api de vérification)
http://zone.spip.org/trac/spip-zone/changeset/106670
Ok ça marche !
Merci
Par contre c’est toujours la 1.6.15 sur le site contrib.
Répondre à ce message
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
z’excusez moi j’avais zappé que c’est une page article comme une autre ..
Répondre à ce message
Bonjour,
Comme je fais dans une boucle data pour récupérer les valeurs du champs extra (choix multiple) avec l’appel INFO_XXX ?
Répondre à ce message
Bonjour,
j’ai un soucis avec cette boucle
En effet, même si je n’ai pas de valeur de renseignée, j’ai tout de même les balises
C’est corrigé en v3.11.4 de cextras par https://zone.spip.org/trac/spip-zone/changeset/105207 . Désolé, je n’avais pas vu ça avant. Merci donc.
MM.
Merci 1000 fois :) Ça faisait un moment que cette petit épine ne trouvait pas moyen d’être corrigée.
Répondre à ce message
J’aimerais savoir comment dans une simple boucle spip, je peux afficher un résultat selon une ou plusieurs valeurs données d’un champs extra (choix multiple). Je m’explique :
Dans un champs extra à choix multiple, par exemple « animaux », j’ai ceci :
Coté back office, je coche deux élément : chien, chat.
Coté frontend, j’aimerais alors afficher les éléments qui contiennent « chat ». Mais je n’obtient pas de résultat si je fais :
Car la valeur de celui-ci est : chien, chat.
Je dois faire
{animaux LIKE %(chat)%}
pour que cela fonctionne mais ce n’est pas super propre.J’utiliserais bien le fonction
find
mais il ne peut-être utilisé dans l’écriture d’une boucle.Quelqu’un peut-il m’aider ?
Pas de solution miracle pour cela pour l’instant.
Une expression régulière fonctionnera par ailleurs mieux :
Merci ! Je vais utiliser cela en attendant.
Par contre il faut mettre
#VAL{chat}
pour que cela fonctionne.Répondre à ce message
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 ?
J’ai le message suivant :
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 ?
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.
Bonjour,
Je l’ai avec La fabrique ...
Vous avez quoi avec « La Fabrique » ?
Et j’ai du mal à voir le rapport avec Adminer accessoirement.
Bonjour,
Un ptit Up.. J’ai le même souci sans trouver de réponse ni de solution.. Est-ce que quelqu’un ayant eu le même problème a réussi à faire fonctionner le plugin ??
- > Moi je n’ai pas le plugin « Adminer », donc pas de possibilité de le désactiver...
- > plugins actifs, TOUS A JOUR :
- Api de vérification (vérifier)
- Chps extras + chps extras interface
- saisies
- YAML
- > Spip 3.1.4 sur WAMP
- > Donc, si j’ajoute un champs à un article par exemple et que j’enregistre, le champs apparaît bien dans les articles. Mais dés que je veux modifier un champ :
Donc le plugin est en l’état inutilisable...
Donc help... help... plize... il m’est fondamental...
Merci
Il faut a mon avis regarder ce qu’indiquent les logs dans tmp/log , peut être tmp/log/mysql.log ou je ne sais quoi. Difficile de pouvoir répondre comme ça.
Merci de votre réponse,
Je ne vois rien dans les logs pour l’instant.. D’ailleurs pas de tmp/log/mysql.log mais tmp/log/spip.log
Par ailleurs il semblerait que le problème relève du serveur virtuel (wampserveur) car l’essai sur un site identique en ligne ne montre pas de problème.
Et d’ailleurs si je reclique sur ’modifier’ un champ lorsque le message « Oups... » est affiché j’ai alors :
Une idée ?
Donc je vais sans doute pouvoir faire ce que je souhaite sur le site en ligne. Mais effectivement j’aimerai pouvoir le faire au préalable sur mon site en local...
Ah bah oui totalement une idée !
Lire le dernier paragraphe de cet article :)
Il me semblait pourtant qu’on essayait de l’augmenter automatiquement… hum.
Oh mais voui, en effet merci bien !!
En fait ce message n’apparaît pas tout de suite, faut avoir l’idée (bizarre) de cliquer une seconde fois sur le bouton ’modifier’ du champ qui avait déclenché le message « Oups... » J’aurais du relire l’article après ce nouveau message.
Je vais maintenant importer les champs créés sur le site en ligne et voir si tout fonctionne bien mais a priori c’est réglé !
Encore merci !
T
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
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.
Suivre les commentaires : |