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
Bonjour,
J’utilise ce plugin, mais j’ai un petit problème, J’ai crée un champ email où je mets une adresse email. #EMAIL affiche bien l’adresse email, mais quand je cherche a recupéré l’adresse dans un lien ça marche pas. Pourtant quand je mets un filtre textebrut ça marche sauf que @ saute (une adresse sans @ n’est pas une adresse). J’ia essayé |propre et |typo mais rien ne marche. Voici mon lien
Pas de rapport avec champs extras a priori.
Peut être une lame du couteau suisse pour protéger les email ? ou le plugin mailcrypt actif ?
Il faudrait voir le code source généré (et ce que tu attends à la place).
Si c’est un filtre qui te manque, tu peux essayer
|attribut_html
.MM.
Merci pour ta réponse qui m’a beaucoup aidé. Le filtre |attribut_html. fait sauté le @
Mais l’option mailcrypt était actif, je lai désactivé et tout est rentré dans l’ordre. Merci encore
Responder a este mensaje
Bonjour
Est-il possible d’utiliser Champs_Extra 3 sur un Spip 2.1.23?
Merci
ADB
Absolument pas ! Ce n’est pas du tout de même fonctionnement interne, et ça s’appuie évidemment sur les améliorations de SPIP 3 !
MM.
Responder a este mensaje
Bonjour,
J’essaie Champs Extra 3. Je voudrais en ajouter sur les forums. Les forums sont bien activés dans l’espace privé et fonctionnent en public. Mais je n’ai pas l’objet «Forums» dans Champs extra.
Qu’est-ce que j’ai oublié ?
Un grand merci à vous
Responder a este mensaje
Salut,
j’ai un bug très très curieux. Sous SPIP 3 et chez koumbit.
Soit un champ extra quelqueconque déclaré avec l’interface. Je dit que les traitements automatiques appliqués est propre.
En local -> fonctionne nickel, sur le serveur (koumbit) -> ne fonctionne pas.
En fouillant le code je me rend compte que tt ce joue au niveau de la pipeline cextras_declarer_champs_interfaces_apres_les_autres. Et c’est là où cela devient cocasse.
En effet, je m’apercois que cette pipeline n’est pas chargée (rien ne passe dedans, je peux y mettre les titi, tata et toto de mon choix -> nada).
Et là je fais un test un peu sale : je modifie le fichier tmp/log/charger_pipelines.php.
J’avais des lignes de code qui ressemblaient à cela :
J’ajoute avant le $inc=true la ligne suivante :
Et là, miracle, ma pipeline est chargée !
Une idée ?
ps : mes plugins :
SPIP 3.0.10 @ www.spip.net spip(3.0.10)
compagnon(1.4.1),
dump(1.6.7),
images(1.1.5),
forum(1.8.24),
jqueryui(1.8.21),
mediabox(0.8.4),
mots(2.4.10),
msie_compat(1.2.0),
organiseur(0.8.10),
petitions(1.4.3),
porte_plume(1.12.2),
revisions(1.7.5),
safehtml(1.4.0),
sites(1.7.8),
squelettes_par_rubrique(1.1.1),
stats(0.4.15),
svp(0.80.14),
urls(1.4.14),
vertebres(1.2.2),
calendriermini(2.1.3),
agenda(3.6.2),
z(1.7.21),
nospam(1.0.9),
jeux(2.4.1),
spip_bonux(3.0.2),
nuage(4.0.0),
menus(0.9.2),
compositions(3.1.2),
minibando(1.0.1),
socialtags(0.9.16),
crayons(1.13.8),
faq(2.1.2),
polyhier(2.0.4),
theme(0.1),
article_pdf(0.4.5),
saveauto(1.0.6),
player(2.1.2),
typo_guillemets(1.5.0),
boutonstexte(2.0.0),
outils_article(1.0.2),
autorite(0.9.12),
facteur(2.4.5),
notifications(3.0.9),
querypath(1.0.0),
bible(4.0.1),
yaml(1.5.0),
verifier(1.0.2),
saisies(1.31.4),
moderation(2.0.0),
tickets(2.0.7),
ppp(1.0.5),
cextras(3.2.4),
iextras(3.1.0),
iterateurs(0.6.1),
queue(0.6.6),
bre
Je viens de tester en local avec les mêmes plugins -> cela fonctionne. On dirait que le options n’est pas tjr bien chargé. Mais pq une diff entre le local et le distant ?
très bizarre, je viens de refaire en distant un test ... et ca marche.
pige rien. 3 h perdu pour pas grand chose.
Responder a este mensaje
bonjour à tous,
j’ai un petit problème avec ce plugins car sur mon local tout fonctionne bien mais pas sur la preprod. Quand je souhaite modifier un champ , tout disparais sauf le bouton enregistrer.
Merci d’avance
Responder a este mensaje
Définition de champs extra mutualisés :
encore MERCI pour ce plugin indispensable que j’utilise pour personnaliser mon squelette.
J’ai plusieurs dizaines de sites en mutualisé qui partagent le même squelette. Et comme les champs extra sont fortement liés à mon squelette, je me demande comment «mutualiser» la définition des champs extra ?
De telle sorte que si je modifie ou ajoute un champ extra, tous mes sites seront automatiquement impactés.
Avec SPIP 2, j’utilisais le plugin import/export de champs extra. C’était galère car il fallait reporter chaque évolution des champs extra sur tous les sites. M’enfin, je me débrouillais quand même.
Avec SPIP3, le plugin import/export n’existe plus. Il est toujours possible de faire des copier/coller directement dans les metas de la BDD mais les risques d’erreur sont importants et c’est encore plus la galère qu’avant.
Responder a este mensaje
Bonjour,
J’ai associé une listes d’auteurs (ensembles d’articles) à des fiches livres par le sélecteur d’articles. A présent j’aimerai que chaque auteur puisse dynamiquement afficher les livres auxquels ils sont liés.
Quand il n’y a qu’un auteur tout va bien avec :
[code]#SETcont, article|#ID_ARTICLE
[/code]
Ça se corse quand il y en a plusieurs séparés d’une virgule. Comment faire simple et propre ?
Merci pour votre aide :)
Utiliser le filtre
|picker_selected
:Arf mon code est pas du tout du tout passé... Juste pour confirmer car j’ai un doute.
Code pour la sélection d’un auteur (quand il n’y en a qu’un)
Code pour la sélection d’un contributeur (il y en a toujours plusieurs)
Car là où c’est tendu c’est qu’on doit avoir un résultat de table équivalent à l’ID de l’article.
Hum…
Je ne saisis pas trop ce que tu souhaites faire.
Mais tu peux t’en sortir avec une expression régulière.
ou
MM.
Ah par contre faut certainement échapper le | intérieur avec un \
Enfin c’est à tester tout ça quoi.
Merci pour ta réponse mais pas moyen. En fait c’est la même question sans réponse de ce sujet
http://contrib.spip.net/Champs-Extras-3?debut_comments-list=30#forum458210
Le soucis n’est pas de chercher la valeur, avec picker_selected pas de soucis. Mais si mon critère est noyé au milieu de plusieurs valeurs...
Pour mes contributeurs je souhaite afficher les articles dont le contributeur est dans la liste IN.
Or comment extraire ce critère «contributeur» ? Sinon la boucle ne comprend pas ce qu’elle cherche. Pas facile.
L’idéal serait de lier plus tard les articles entre eux et non seulement faire un ajout d’article dans un article. A la manière des mots clés.
Oui, en fait tu aurais tout intérêt à passer par une table de liaison. C’est bien ce que je dis à Manu d’ailleurs.
Mais j’ai l’impression que ce que tu cherches est le plugin a2a in fine, ou quelque chose d’approchant, non ? http://contrib.spip.net/Le-plugin-a2a-pour-lier-des-articles
J’avais vu ce plug mais si c’était si simple je l’aurai pris. Mais l’intérêt aurait été de faire la même chose avec le sélecteur d’articles.
La table de liaison oui c’est en partie ce que j’ai fait, tant qu’il n’y a qu’un auteur et pas une liste tout va bien. C’est la liste car si on a :
LIVRE1 : article|1,article|2,article|3
LIVRE2 : article|2
LIVRE3 : article|2,article|3
le critère recherché auteur ne retrouvera pas ses petits étant donné qu’il est noyé dans une liste. Les valeurs c’est pas un problème. Mais peut-on faire du :
<BOUCLE_auteur(ARTICLES){{maliaison == (^|,)article\|#ID_ARTICLE(,|$)} IN #GET{con}}>
J’ai l’impression d’être dans une impasse...
Responder a este mensaje
Bonjour à tous,
Tout d’abord, merci pour ce Plugin qui m’est d’une grand aide pour le développement du site de notre association (http://www.fasee.fr).
Cela me permet notamment de rendre la partie privée plus simple à gérer pour les rédacteurs.
Cependant, après maintes recherches je n’ai pas réussi à trouver mon Graal :-).
En effet, j’ai souhaité intégrer un Agenda avec FullCalendar sur mon site. FullCalendar fait appel aux champs extra déclarés pour extraire les informations de chaque évènement (Nom, date, lieu, adresse...).
Du coup en y insérant mes premiers évènements de test, je me suis rendu compte que l’heure de l’évènement était automatiquement fixée à 00h00.
Après plusieurs recherches dans les codes de Champs_Extra, Saisie, Champs_Extra_interface je n’ai pas réussi à trouver où cela était fait...
Du coup je souhaitais savoir s’il existait une «méthode» (ou bidouillage) pour intégrer la saisie de l’heure en même temps que la date ou à défaut de pouvoir la récupérer via un autre champs extra ?
J’ai trouvé cet articles : http://contrib.spip.net/La-date-heure-via-un-menu, mais le fait de toucher au noyau de spip ne me plait pas forcément...
Désolé si ma requête a déjà été traitée auparavant.
Je vous tiens au courant si je trouve une méthode simple de mon côté (ne connaissant pas forcément très bien le php, cela risque d’être du bidouillage pur et dur...)
Merci par avance!
Bonjour à tous,
Finalement j’ai contourné mon problème avec un peu de bidouillage.
L’astuce consiste à utiliser deux champs distincts : un pour la date et un pour les horaires.
Si ça peut servir (sait-on jamais) voici comment j’ai procédé :
Je continue donc d’utiliser un Datepicker «simple» pour le premier et j’utilise une liste déroulante pour le second auquel j’applique le format SQL datetime DEFAULT ’0000-00-00 00:00:00’ NOT NULL.
J’ai ordonné la liste déroulante de la façon suivante :
0000-00-00 00:00:00|00:00
0000-00-00 00:30:00|00:30
0000-00-00 01:00:00|01:00
0000-00-00 01:30:00|01:30
...
...
0000-00-00 23:00:00|23:00
0000-00-00 23:30:00|23:30
Cela permet d’avoir un vue simplifié pour les auteurs (par exemple : 00h30) mais de garder le bon format pour le datetime côté «traitement» (ici donc : 0000-00-00 00:30:00).
Enfin, je récupère les heures et minutes avec les filtres correspondants sur mon champ issu de la liste déroulante
.
Il doit sûrement y avoir une solution plus simple, donc si vous avez je suis preneur :-).
Merci !
Responder a este mensaje
Bonjour,
J’ai un souci avec les champs extra, sélécteur d’article. Pour un article en particulier je sélectionne plusieurs articles liés, mais le plugin ne reconnait qu’à partir du 3eme article ...
Est-ce que quelqu’un a eu chose pareille ?
ça marchait bien jusqu’à hier qd j’ai fait la manip avec grenier pour passer le site en utf...
je suis sur SPIP 3.0.7 et plusieurs plugins...
merci d’avance,
Responder a este mensaje
Bonjour,
je souhaiterais avec «Sélecteur d’articles» :
- contraindre le choix d’articles multiples dans une seule rubrique (ne pas avoir d’autres articles à choisir dans d’autres rubriques, mais seulement une)
- utiliser le petit moteur de recherche afin qu’il trouve dynamiquement les articles (toujours de cette rubrique restreinte) avec le même début.
Exemple une rubrique auteurs (numéro1) où il y a 500 noms.
- > avoir simplement le champs de recherche de type text, rentrer les 4 premières lettres d’un nom et avoir affiché les noms avec ces 4 premières lettres.
Pour l’instant le champs de recherche est limité aux ID_ARTICLE.
J’ai pensé faire un plugin à part ou bien modifier l’existant pour le projet. Où puis-je trouver de la doc ? Avez-vous des conseils à me donner ?
merci pour votre aide.
Responder a este mensaje
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.
Seguir los comentarios: |