Carnet Wiki

Modifier un formulaire SPIP

Version 8 — Octobre 2016 — 78.242.xx.xx

Cet article n’est pas finalisé mais j’aimerais quand même avoir des retours, faites les modifs nécessaires, no blem ! éventuellement à mettre dans carnet le temps d’y travailler ?

merci

Comment modifier un formulaire de l’espace privé ?

http://forum.spip.org/fr_244581.html

Qu’est ce que je veux dans mon formulaire ?

Quelques propositions pour comprendre les possibilités :

  1. Je veux changer l’intitulé d’un champ > fichier de lang local personnel
  2. Je veux modifier seulement l’apparence du formulaire > fichier css du formulaire
  3. Je veux ajouter un champ au formulaire > utiliser le plugin champs extras
  4. Je veux ajouter une boîte d’info > utiliser le bon pipeline d’affichage
  5. Je veux agir sur le flux des données sans rien modifier > utiliser le bon pipeline de traitement

Vous devez formuler clairement et en amont ce que vous souhaitez, pour choisir la meilleure méthode.

Préambule

Comment fonctionnent les formulaires SPIP ?

Les formulaires SPIP sont constitués d’une paire de fichier html et php.
Chaque formulaire fonctionne en 3 étapes définies par le fichier php : Charger Vérifier Traiter. Une fois que vous aurez compris ce processus il vous sera très facile d’agir sur l’une des trois étapes.

-  Les formulaires CVT pas à pas sur programmer.spip.org
-  Formulaires CVT par l’exemple

Diverses méthodes pour modifier un formulaire

Modifications mineures

Pour changer uniquement l’intitulé d’un champ, par exemple changer sur titre pour Lieu. Il faut retrouver la chaine de langue dans le fichier du formulaire html inscrit sous la forme <:ma_chaine:> ici ce sera donc <:texte_sur_titre:> puis créer un fichier lang/local_fr.php dans lequel il y aura

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
	'texte_sur_titre' => "Lieu",
);
?>

Il est possible d’agir sur les css et de faire ’disparaitre’ de l’affichage un champ, assurez vous auparavant que celui-ci ne soit pas obligatoire !
ICI METHODE CSS PRIVE /PUBLIC

Recopier le formulaire des articles

En SPIP3, le plus radical est de recopier le couple php/html du formulaire en respectant leur chemin d’emplacement (le path), vous pouvez choisir uniquement le html, exemple du fichier formulaires/recherche.html.
Apparemment sous SPIP3 le dossier /prive semble réservé. Si on choisit de modifier le formulaire d’édition des articles situé dans prive/formulaires/editer_article.html on devra le copier et coller dans squelettes/formulaires/editer_article.html

Dans un terminal unix cette action est beaucoup plus lisible :
<code style=« color : rgb(255, 255, 255) ; background-color : rgb(0, , ) ; display : block ; padding:6px ; »>cp ">cp prive/formulaires/editer_article.html squelettes/formulaires/editer_article.html

Surcharger le formulaire des articles d’une rubrique spécifique

Commencez par faire la même chose que pour « Recopier le formulaire des articles », car vous ne pourrez pas agir sur la rubrique si vous n’avez pas déjà le formulaire par défaut recopié.
<code style=« color : rgb(255, 255, 255) ; background-color : rgb(0, , ) ; display : block ; padding:6px ; »>cp ">cp prive/formulaires/editer_article.html squelettes/formulaires/editer_article.html
Puis recopié à nouveau et renommé votre fichier avec editer_article-2.html si vous souhaitez modifier tous les formulaires d’édition des articles de la rubrique 2 (voir lien avec squelettes).
cp prive/formulaires/editer_article.<code style="color: rgb(255, 255, 255); background-color: rgb(0, 0, 0); display: block; ">cp prive/formulaires/editer_article.html squelettes/formulaires/editer_article-2.html

Ajouter un champ suplémentaire dans le formulaire

Lorsque vous souhaitez rajouter un champ à votre objet dans votre base de données et le voir apparaitre dans le formulaire en plus de le traiter automatiquement lors de sa saisie, le plus facile et rapide est d’utiliser le plugin champs_extra.

Utiliser les pipelines dans un formulaire

Dans la grande cuisine web, vous souhaitez réaliser de bons gâteaux !
Imaginez que vous souhaitez ajouter de la cannelle au flux de données farine, juste avant de mélanger les oeufs, le pipeline est comme un tuyau avec des robinets d’accès marquant chaque étape du mélange, si vous souhaitez agir avec un nappage final au chocolat, choisissez le pipeline qui convient !

Avec SPIP, pour modifier le formulaire d’un article, ces pipelines vont être divers, il y a les pipelines liés à CVT comme formulaire_charger verifier ou traiter, ou soit avant soit après le traitement en base comme post_insertion ou encore pour l’affichage comme affichage_final. On peut filtrer ce flux et y injecter de nouvelles données en fonction de critères personnalisés.

Les pipelines doivent être déclarés en amont comme ceux qui existent par défaut dans SPIP :
pre_insertion, post_insertion
pre_edition, post_edition
Pour utiliser le flux des pipelines déclarés et le détourner à vos fins, il doit être signalé dans un plugin pour être pris en compte par le compilateur.
-  Voir la liste des pipelines
-  Voir comment utiliser les pipelines

Insérer du contenu sans toucher aux fichiers natifs de SPIP

Sur la plupart des formulaires (à vérifier) existe une balise <!--extra--> vous pouvez filtrer le flux et insérer le votre en utilisant le pipeline recuperer_fond et un preg_replace comme ici :

http://zone.spip.org/trac/spip-zone/browser/_plugins_/tickets/trunk/tickets_pipelines.php#L148