Hello all !
Voilà, ces derniers jours, en voulant bien faire, je me suis retrouvé à recréer un plugin pour les champs extras de SPIP mais pas des sérialisés comme les anciens de SPIP. Ici, un champ extra = une colonne SQL d'une table.
C'était parti d'un truc tout bête de tutoriel pour ajouter un PS sur les rubriques... Puis ça a fini par devenir quelque chose de générique et généralisable.
Ce plugin dans _dev_/champs_extras/ dispose d'un core et d'une interface. Le core sert simplement à afficher les champs déclarés extras dans les formulaire d'édition (pour l'instant simplement rubriques, articles et auteurs - je n'ai pas testé les autres) et à prendre en compte les saisies des rédacteurs dans ces champs.
Des plugins (comme l'exemple 'extensions/postscriptum') peuvent déclarer des champs à prendre en compte comme ça. Un plugin d'interface graphique a aussi été développé permettant de créer des champs à la volée depuis l'interface privée de SPIP. Il permet aussi d'indiquer que des champs déjà présents dans des tables de SPIP mais non déclarés (merci à Fil qui avait déjà produit le code de recherche de ces champs dans le plugin extra2) puissent aussi être traités comme extras via l'interface.
Tout semble bien fonctionner, avec une limitation de taille pour certains je pense, c'est que ça ne reprends pas les mêmes fonctionnalités que les champs extras originels : pour l'instant, seuls les champs de type "input text" et "textarea" sont gérés. Donc, pas encore question de listes radio, checkbox ou select, mais si ça tente quelqu'un ! Qu'il le fasse !
J'attends donc quelques tests de fonctionnement et quelques retours avant de publier une doc sur SPIP Contrib et de le passer en stable.
Pour info, les tutoriels ayant construit le plugin, dans l'ordre :
- http://marcimat.magraine.net/Ajouter-un-champ-dans-une-table
- http://marcimat.magraine.net/Ajouter-des-champs-dans-une-table
- http://marcimat.magraine.net/Creer-une-interface-d
- http://marcimat.magraine.net/Outils-de-debug
- http://marcimat.magraine.net/Interfaces-extras
A vous les studios !
--
MM.