Introduction
Cette contribution va vous permettre de vous familiariser avec les champs extra des auteurs et/ou visiteurs, et aussi de pouvoir les gérer plus facilement : L’administrateur ne sera plus obligé de les remplir soi-même, puisque le visiteur aura la possibilité de les saisir pendant son inscription.
Pourquoi ?
Le constat est simple, j’ai eu besoin pour mon site sous SPIP de limiter l’accès visiteur aux membres de notre association (un club sportif).
Comme nous sommes beaucoup d’adhérents, il n’est pas possible de créer en début d’année associative les accès des membres après leur inscription au club.
C’est pourquoi j’ai eu besoin que les membres puissent s’inscrire avec leurs données personnelles pour que je puisse les vérifier à posteriori.
Ce que nous allons réaliser
Pour ne pas que vous vous engagiez sur une pente trop glissante, voici ce que nous allons réaliser :
- Prendre un SPIP 1.7 (DISTRIB ou CVS)
- Créer quatre champs extras au niveau des ’auteurs’.
- Ajouter un nouveau fichier à votre installation
- Modifier légèrement un fichier source de SPIP : inc-formulaire.php3 (le fichier complet et modifié est fourni)
Ca ne vous fait pas peur ? Tant mieux !
Parce que j’explique d’abord tout ce que j’ai fait, mais à la fin, j’ai mis un .ZIP récapitulatif à décompresser directement dans votre installation de SPIP, et ca se fera tout seul, elle est pas belle la vie ?
Les champs utilisés
Ce dont j’ai besoin pour reconnaître mes adhérents, c’est une adresse postale et/ou un numéro de téléphone.
C’est pourquoi nous allons créer les champs ’auteurs’ suivants :
- Adresse
- Code postal
- Ville
- Téléphone
Les champs extra se définissent dans le fichier ecrire/mes_options.php3 dont voici un exemple :
<?
$GLOBALS['champs_extra'] = Array (
'auteurs' => Array (
"adresse" => "ligne|propre|Adresse",
"cp" => "ligne|propre|Code Postal",
"ville" => "ligne|propre|Ville",
"tel" => "ligne|propre|Téléphone"
)
);
$GLOBALS['champs_extra_proposes'] = Array (
'auteurs' => Array (
// Définition des champs extra utilisés pendant l'inscription
'inscription' => 'adresse|cp|ville'
)
);
?>Nous pouvons remarquer que j’ai créé une nouvelle entité inscription dans le tableau $GLOBALS[’champs_extra_proposes’] et qui contient la liste des champs extras qui seront demandés à l’inscription des ’auteurs’.
Cette entrée spécifique n’est pas indispensable : En son absence, l’inscription va demander tous les champs extras disponibles pour les auteurs.
Modification du formulaire proprement dit
Il n’y a qu’une fonction à ajouter (formulaire_inscription_etendue), celle qui affiche et enregistre le formulaire d’inscription. Nous la mettrons dans un nouveau fichier dans le répertoire de base de spip. Elle a été très largement inspirée de l’originale : formulaire_inscription de la distribution de SPIP :
Vous remarquerez que j’utilise une nouvelle chaine
(_T(’local:inscription_champs_supplementaires’))
dans la table « local » des langues de SPIP.
Cette chaine est définie dans le fichier de langue local_fr.php3 qui est fourni dans l’archive. Pour en comprendre le principe, voir la gestion des langues dans SPIP.
Inclure ce fichier de langue dans votre distribution permet simplement d’ajouter un message entre les deux boites de saisie nom/email et vos boites de saisies personnalisées.
Si vous n’avez pas besoin de ce message, ignorez simplement ce fichier (local_fr.php3) !
Par exemple avec cette ligne :
'inscription_champs_supplementaires' => 'Veuillez également saisir vos coordonnées personnelles :<br>', dans le fichier ecrire/lang/local_fr.php3, on obtient l’affichage suivant pendant l’inscription :

- Message
A ce propos, pour ceux qui n’ont pas peur du PHP, vous pouvez personnaliser l’affichage du formulaire (20 dernières lignes de la fonction formulaire_inscription_etendue)
Relier le tout à SPIP
C’est le fichier spip_pass.php3 qui appelle la fonction qui gère le formulaire. Il doit doit maintenant appeler la nouvelle fonction.
Changer la fonction dans spip_pass.php3 permet de rester le plus simple possible avec les squelettes de SPIP. En effet, le nouveau formulaire est maintenant affiché sur le tag #LOGIN_PUBLIC, mais aussi à partir du lien "s’inscrire" sur le formulaire d’un forum modéré sur abonnement.
Remplacer donc
formulaire_inscription(($inscriptions_ecrire)? 'redac' : 'forum');par
formulaire_inscription_etendue(($inscriptions_ecrire)? 'redac' : 'forum');Résultat
Voici ce qu’est devenu la fenêtre d’inscription lorqu’on demande à s’inscrire sur le site :

- Résultat
Les quatre champs supplémentaires sont maintenant demandés.
Quand vous allez dans la partie privée du site, et que vous visualisez la fiche de l’utilisateur, vous avez maintenant ses champs supplémentaires qui sont remplis :

- Fiche utilisateur
Voilà. Je l’ai installé sur mon site (SPIP 1.7 distrib fr) et ca a l’air de tourner sans bugs visibles. De toute façon je n’ai repris que des bouts de codes de la partie privée pour l’intégrer dans le formulaire d’inscription.
Télécharger la distribution
Voici l’archive qui contient tous les fichiers modifiés. Vous pouvez l’extraire directement à la racine de votre SPIP pour écraser les anciens fichiers.
A l’avenir...
Le seul fichier original de SPIP qui est modifié est spip_pass.php3. Regardez le source complet fourni dans l’archive, il contient des gros commentaires (entre des lignes de #) sur les deux lignes modifiées du fichier.
Donc si vous avez déjà un spip_pass de votre cru, vous pouvez aisément appliquer les modifications.
Bon courage !
18 Mai 2005 - Mise à jour SPIP 1.8
Nous savons tous que l’heure n’est plus aux champs extras. Toutefois, pour ceux qui ont un base actuelle avec, et qui n’ont pas spécialement envie de tout retranscrire, voici la nouvelle version des champs extra à l’inscription pour SPIP 1.8
Résultat
Le but de la manoeuvre est de pouvoir afficher (et traiter) une fenêtre d’inscription au site de cette forme :
Pré-requis
Cet exemple se base sur la définition des champs extras suivants (dans le fichier ecrire/mes_options.php3) :
$GLOBALS['champs_extra'] = Array (
'auteurs' => Array (
'adresse' => "ligne|propre|Adresse",
'cp' => "ligne|propre|Code Postal",
'ville' => "ligne|propre|Ville",
'tel' => "ligne|propre|Téléphone",
'section' => "ligne|propre|Section du NCR"
),
);
$GLOBALS['champs_extra_proposes'] = Array (
'auteurs' => Array (
// Définition des champs extra utilisés pendant l'inscription
'inscription' => 'adresse|cp|ville|tel|section'
)
);Comment faire
Les modifications concernent simplement deux fichiers du dossier formulaires. J’ai pris comme point de départ les fichiers fournis avec spip 1.8.1
Fichier formulaire_inscription.html :
Concernant l’affichage des champs extras, voici la modification à apporter à la ligne 23 :
<br />
<:local:inscription_champs_supplementaires:>
<br />
<br />
<?
include_ecrire("inc_extra.php3");
extra_saisie($extra, 'auteurs', 'inscription');
?>La chaine <:local:inscription_champs_supplementaires:> est à ajouter au fichier local_fr.php3. Pour cela, se reporter à la documentation sur les chaines personnalisées.
Voici le fichier complet modifié :
Fichier inc-formulaire_inscription.php3 :
Il suffit de remplacer en ligne 45 le code suivant
$id_auteur = spip_abstract_insert('spip_auteurs',
'(nom, email, login, statut)',
"('".addslashes($nom_inscription)."',
'".addslashes($mail_inscription)."', '$login', '$statut')");par le code
include_ecrire("inc_extra.php3");
$extras = extra_recup_saisie('auteurs');
$id_auteur = spip_abstract_insert('spip_auteurs',
'(nom, email, login, statut, extra)',
"('".addslashes($nom_inscription)."',
'".addslashes($mail_inscription)."', '$login', '$statut', '$extras')");Voici le fichier complet modifié :
Pour clore le débat
Par ailleurs, je pense que je vais tout doucement évoluer vers les nouvelles fonctionnalités de la version 1.8, à savoir les champs supplémentaires. Je ne manquerai pas de réviser ma contribution avec ce nouveau système !
A bientôt.






fonction formulaire_inscription_etendue
Archive complète
Vos commentaires
# Le 22 janvier 2007 à 09:30, par Pégase
En réponse à : Champs extras à l’inscription pour SPIP 1.9
Bonjour, j’aimerais savoir si quelqu’un a essayé d’utiliser cette fonctionnalité supplémentaire sur SPIP 1.9
La façon de déclarer les extras et les noms de fichiers ayant apparemment complètement changé par rapport aux versions antérieures, je suis un peu perdu !
# Le 26 mai 2009 à 13:15, par Birdy
En réponse à : Et pour 2.0 ?
Existe-t-il une mise à jours plus simple de tout cela pour la version 2.0 de Spip et du plugin ChampsExtra2 ?
Répondre à ce message
# Le 25 septembre 2006 à 20:30, par Lili
En réponse à : Champs extras à l’inscription des visiteurs/rédacteurs (SPIP 1.7 ET 1.8)
Bonjour,
j’ aimerai savoir si il est possible d’ adapter cette contrib. pour la signature de petition,
elle me sert pour l’ inscriptions à une adhesion.J’ ai donc besoin d’ avoir les coordonnees de chaque adherent
pour le moment j’ ai modifier « nom/login » en « saisissez vos nom et prenom » et la partie « laisser un message » par « votre adresse complete » .Ce procedé serait vraiment mieux, malheureusement je ne vois pas tres bien quels sont les fichiers a modifier, qui peut m’ aider ?
# Le 25 septembre 2006 à 20:35, par Lili
En réponse à : Champs extras à l’inscription des visiteurs/rédacteurs (SPIP 1.7 ET 1.8)
J’ ai la version 1.8.3 ;)
# Le 27 septembre 2006 à 19:18, par Lili
En réponse à : Champs extras à l’inscription des visiteurs/rédacteurs (SPIP 1.7 ET 1.8)
YYYYYYYYYYYaaaaaaaaaaaaaaaaaaaaahhhhhhhhhhhhhhhhhhhhhhhhhhhhh, quelqu’ unnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn ???????????????????????????????????????
# Le 28 octobre 2006 à 14:34, par Lili
En réponse à : Champs extras à l’inscription des visiteurs/rédacteurs (SPIP 1.7 ET 1.8)
Autant pour moi, j’ étais à coté de la plaque !!!!!!!!!!!!!!!!
Pour ceux que ça peut intéresser cette contrib est a utiliser avec le forum et non avec la petition.
Par contre y a t il un moyen de mettre toutes ces info. ( nom, prenom, adresse, cp, ville, tel ) dans le mail automatique que reçoit l’ auteur de l’ article quand un nouveau message est posté ? ;)
Répondre à ce message
# Le 3 avril 2006 à 10:09, par GoUaRfIg !
En réponse à : Fichiers pour la 1.8.3
Les fichiers modifiés pour la version 1.8.3 :
Il fallait demander...
http://gouarfig.free.fr/spip-contrib/article434/spip1.8.3.zip
Hop
# Le 2 mai 2006 à 16:16, par Archos
En réponse à : Fichiers pour la 1.8.3
Bonjour, serait-il possible de mettre se formulaire ailleur que lors de l’inscription, et d’y ajouter un champs « avatar » par upload ou par URL ?
# Le 27 juillet 2006 à 06:26, par matthieu
En réponse à : Au secour champs extras pour la 1.9 ?
J’ai installé spip 1.9 avec la spip list, et, sur le formulaire d’inscription au forum, je souhaite rajouter des champs extras pour l’inscription à la mailing list, seulement probléme, le fichier « formulaire_inscription.php » a changé et impossible de trouver comment insérer les données récupérer dans le formulaire dans la base. Précisément ce serait savoir quel code est a ajouter dans ce fichier pour récupérer mes champs extras.
Répondre à ce message
# Le 18 août 2005 à 19:51, par manar
En réponse à : > Champs extras pour espace prive : ajout auteurs
bonjour,
j’utilise spip 1.8.1 et j’aimerais bien ajouter, au formulaire d’ajout des auteurs, les champs : adresse|ville|Tel. J’ai lu votre contrib mais je ne sais pas comment l’adapter à mon besoin.
Merci pour l’aide.
Répondre à ce message
# Le 1er mai 2005 à 02:17, par pegguy
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
Salut à tous ;
J’ai installer l’archive proposé permettant d’ajouter des champs extras lorsqu’on clique sur le lien ’s’inscrire’, j’ai crée une autre table dans la base spip avec les différents champs extras mais ce que je ne comprend pas c’est pourquoi lorsqu’on rempli ces champs, ils ne s’enregistre pas dans la base de données.
Comment faire pour que les informations s’enregistrent dans la base de donnée.
Répondre à ce message
# Le 18 août 2004 à 12:55, par Stef
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
J’ai un problème, les personnes peuvent s’inscrire pour consulter ma partie restreinte mais comment fait-on pour que la rubrique de la partie restreinte demande l’identifiant de la personne pour se connecter. (dans la rubrique, j’ai plusiuers articles).
Merci beaucoup.
STEF
Répondre à ce message
# Le 16 août 2004 à 18:31, par yendel
En réponse à : > envoie de mail à l inscription d un visiteur
Bonjour !
J’aimerais savoir si quelqu un sait quels sont les fichiers de SPIP qui permettent l’envoie de mail par la fonction mail() de php.
En fait mon hebergeur ne prend pas en compte la fonction mail de php, c’est pourquoi j’ai besoin de trouver où elle est utilisée afin de la remplacer par une fonction acceptée par mon hebergeur.
Je parle de l’envoie de mail suite à l’inscription d’un visiteur à la newsletter ou l’envoie de la bloogletter...
De mon côté je n’ai repérer que inc_mail.php3, est-ce le seul fichier ?
quelles sont les lignes à modifier ?
Merci !
# Le 17 août 2004 à 15:27, par yendel
En réponse à : > envoie de mail à l inscription d un visiteur
tout se passe dans ecrire/inc_mail.php3 !
lignes 24, 50, 92
Répondre à ce message
# Le 12 août 2004 à 11:12, par Nicolas
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
Salut,
Merci bcp pour ce poste fort interressent.
J’ai cependant quelques petits soucis :
- j’aimerai sur la page d’accueil mettre 2 champs pour que le visiteur s’identifie et un bouton pour qu’il s’inscrive
- et j’aimerai protogé l’accés aux pages articles, rubriques, breves... aux utilisateurs identifiers
merci pour votre aide
# Le 16 août 2004 à 11:05, par GoUaRfIg !
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
Pour ca, utilise (et fais une recherche sur l’utilisation) du tag SPIP « #LOGIN_PUBLIC »
Hop !
Répondre à ce message
# Le 19 juin 2004 à 21:55, par mtcocktail
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
Génial !
Est-ce que kkun peut me dire dans quel table ou quel fichier sont stocké ces données supplémentaires ?
# Le 21 juin 2004 à 18:46, par aly
En réponse à : > Champs extras à l’inscription des visiteurs/rédacteurs
il y a un champ « extra » dans les table spip_rubriques, articles, mots et auteurs (peut-être j’en oublie...) où sont stockées toutes les données dans un longblob (il y a donc plusieurs « sous-champs » rangés dans un seul champ, ce longblob « extra », de la table).
Personnelement je trouve ça moyen comme solution, car difficile d’y accéder en php (ok c’est du bricolage, mais justement les champs extra c’est du bricolage) et impossible d’utiliser ça pour les documents ou les images, pour le moment en tous cas.
J’aurai préféré une approche « objet » : on crée une table « spip_extra » avec des tables liant les autres objets à celle-ci (articles-extras, rubriques-extras, etc.)
... et au final, quand on en a marre de créer plein de tables partout, on refond le modèle de données de SPIP, pour enfin obtenir un vrai modèle objet (genre Zope) qui permet de faire ce qu’on veut. Avis aux amateurs
Répondre à ce message