Point de départ : créer le champ supplémentaire
Nous allons créer un champ supplémentaire qui contiendra la profession du signataire, dans la table spip_signatures. Pour cela, il faut ajouter dans mes_fonctions.php, ou dans un plugin, une ligne qui fera prendre en compte à SPIP le nouveau champ :
include ('ecrire/base/serial.php');
global $tables_principales;
$tables_principales['spip_signatures']['field']['profession'] = "text NOT NULL";
2e étape, vérifier que SPIP prend bien en compte le nouveau champ
Une fois le champ (la colonne) « profession » dument déclaré, le compilateur de SPIP est capable de gérer les boucles et filtres qui lui correspondent. Désormais, vous pouvez utiliser la balise #PROFESSION
dans vos <BOUCLE_signatures(SIGNATURES)>
Vérification : Saisir à la main des valeurs dans la table spip_signatures
(avec phpMyAdmin par exemple) et essayer de les afficher dans un squelette qui utilise une boucle signatures.
Exemple de boucle à mettre dans un squelette de test :
<B_signatures>
<table>
<tr>
<th>Nom</th>
<th>Profession</th>
</tr>
<BOUCLE_signatures(SIGNATURES){tout}>
<tr>
<td>#NOM_EMAIL</td>
<td>#PROFESSION</td>
</tr>
</BOUCLE_signatures>
</table>
</B_signatures>
qui doit donner un résultat équivalent à ceci :
Nom | Profession |
---|---|
Darth Vador | Maitre Sith |
Yoda | jedi |
Darth Sidious | Général |
3e étape, adapter le formulaire SPIP
C’est là que ça se corse... car pour ne pas avoir à ré-écrire un formulaire complet, et surtout tout le process de vérification, authentification, etc. nous avons voulu ré-utiliser et adapter le #FORMULAIRE_SIGNATURE
Nous allons donc surcharger la balise #FORMULAIRE_SIGNATURE. Pour cela, il faut copier le fichier
ecrire/balise/formulaire_signature.php
dans le dossier balise/
du plugin (créer ce dossier si il n’existe pas).
1. modifier la balise dynamique
En l’occurrence il s’agit de la fonction balise_FORMULAIRE_SIGNATURE_dyn()
. Ajouter le _request
correspondant en paramètre de l’appel de la fonction inc_controler_signature_dist
(veiller à bien respecter l’ordre des paramètres) :
...
_request('profession'),
...
Du coup, ajouter le paramètre entrant dans la fonction inc_controler_signature_dist()
:
inc_controler_signature_dist( ..., $profession, ...)
2. message de confirmation
Pour pouvoir ré-afficher la variable dans le message de confirmation, la rajouter dans la variable $messagex
:
$messagex = ... 'profession' => $profession ...
A noter que pour assurer la traduction des messages, pour pouvoir mettre notre message personnalisé, il faut créer un fichier local_fr.php
dans notre plugin (ou dans squelettes/
)
3. revision_signature
revision_signature ($id_signature, array(
'nom_email' => $nom_email,
'profession' => $profession,
Il faut aussi modifier la fonction revision_signature ()
elle-même, la manière propre est de copier le fichier /ecrire/inc/modifier.php
dans le plugin (inc/modifier.php
), la fonction sera surchargée.
On ajoute simplement notre champ dans le return de la fonction.
Dernière étape : adapter le squelette « signatures »
Il ne reste plus qu’à placer un répertoire /formulaires/
soit dans le dossier du plugin, soit dans le répertoire /squelettes/
de votre site, et d’y placer une copie modifiée du squelette signatures.html
. On y insèrera le champ supplémentaire « profession » dans la balise <form>
de la manière suivante :
<fieldset>
<legend>J'indique ma profession</legend>
<p><label for="Profession">Votre profession :</label>
<input type="text" class="forml" name="profession" id="profession" value="" size="20" /></p>
</fieldset>
qui donne à l’affichage quelque chose du genre :
car la balise ne fait pas tout le boulot, le squelettes signatures.html en fait une petite partie lui aussi !
En espérant que cette contrib vous soit utile, n’hésitez pas à poster ici si vous avec des questions.
Aucune discussion
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 : |