Préambule
SPIP propose nativement #FORMULAIRE_ECRIRE_AUTEUR
qui permet d’écrire à un auteur précis. On peut donc l’utiliser pour la page de contact du site, en mettant le webmestre en auteur. Cette approche peut paraître limitée. Imaginons donc un formulaire entièrement configurable.
Ce formulaire remplace — et donc supprime — le plugin « Formulaire de contact configurable » avec lequel il a fusionné. Les utilisateurs migrants de l’un à l’autre devront donc reconfigurer le formulaire. Par ailleurs, et depuis la rédaction de cet article le plugin évolue, nous vous conseillons de lire également « Le formulaire de contact évolue ».
Installation
Comme pour les autres plugins, vous devez télécharger le paquet ci-joint et placer son contenu dans votre dossier plugins/
.
Vous devez utiliser PHP 5 pour faire marcher le plugin Voyez avec votre hébergeur si ce n’est pas le cas par défaut. Surtout que PHP 4 n’est plus maintenu.
Ensuite il faut aller dans l’interface de gestion des plugins, l’activer et enfin cliquer sur l’icône d’outils pour le configurer. Au préalable vous devrez installer les plugins cfg, spip-bonux, et Jquery UI.
Alternativement, vous trouverez aussi ce plugin dans la liste d’installation automatique fournie par spip-contrib (il faut pour cela avoir un dossier plugins/auto
).
Utilisation
Pour afficher ce formulaire dans un squelette :
Appel classique :
#FORMULAIRE_CONTACT
Appel avec l’auteur 34 pré-selectionné :
#FORMULAIRE_CONTACT{34}
Appel AJAX (sans rechargement de la page) :
<div class="ajax">
#FORMULAIRE_CONTACT
</div>
Pour afficher ce formulaire dans un contenu :
Appel classique :
<formulaire|contact>
Appel avec l’auteur 34 pré-selectionné :
<formulaire|contact|auteur=34>
Appel AJAX (sans rechargement de la page) :
<div class="ajax">
<formulaire|contact>
</div>
Configuration
Il y a trois principales choses à configurer :
- La liste des auteurs à qui le courrier pourra être envoyé
- La méthode de choix pour le visiteur
- Les éventuelles informations supplémentaires
On peut choisir l’ordre des informations supplémentaires par simple glisser-déplacer à la souris. L’ordre sera gardé en mémoire et repris alors sur le site public.
Personnaliser l’affichage des champs d’informations
Par défaut, le plugin affiche un champ texte basique pour chaque information supplémentaire demandée. Mais parfois, on veut personnaliser ces champs, par exemple pour restreindre des valeurs. Et bien c’est prévu !
Pour cela, il faut connaître l’identifiant du champ que l’on veut personnaliser. Il suffit de regarder dans le HTML l’attribut name
du champ. Sinon la liste complète des champs par défaut se trouve dans le fichier contact_options.php
.
Vous n’avez alors plus qu’à créer un fichier : /formulaires/contact_champ_*nomduchamp*.html
, dans votre dossier squelettes ou dans votre plugin.
Par exemple, si vous voulez mettre une liste déroulante pour restreindre les pays, il faut créer un fichier /formulaires/contact_champ_pays.html
, dans lequel vous pourrez mettre par exemple :
<li class="saisie_#ENV{name}[ (#ENV{name}|in_array{#ENV{obligatoires,#ARRAY}}|oui)obligatoire][ (#ENV*{erreurs}|table_valeur{#ENV{name}}|oui)erreur]">
<label for="info_#ENV{name}">
#ENV{titre}[ (#ENV{name}|in_array{#ENV{obligatoires,#ARRAY}}|oui)<strong><:info_obligatoire_02:></strong>]
</label>
[<span class="erreur_message">
(#ENV*{erreurs}|table_valeur{#ENV{name}})
</span>]
<select name="#ENV{name}" id="info_#ENV{name}">
<option
value="England"[
(#ENV{#ENV{name}}|=={England}|oui)selected="selected"]>
England
</option>
<option
value="France"[
(#ENV{#ENV{name}}|=={France}|oui)selected="selected"]>
France
</option>
</select>
</li>
Dans le fichier, #ENV{name}
correspondra à l’identifiant du champ, et #ENV{titre}
à son titre dans la langue courante. #ENV{#ENV{name}}
correspond donc à la valeur déjà tapée du champ en question.
Ajouter de nouveaux champs
Le plugin prévoit un point d’entrée qui permet, lorsqu’on s’y connecte, d’ajouter autant d’entrées que l’on veut.
Il faut tout d’abord s’inscrire dans le point d’entrée.
Soit dans un plugin
<pipeline>
<nom>contact_infos_supplementaires</nom>
<inclure>un_fichier.php</inclure>
</pipeline>
Soit dans le mes_options.php de votre site
$GLOBALS['spip_pipeline']['contact_infos_supplementaires'] .= '|montruc_contact_infos_supplementaires';
Ensuite dans la fonction qui s’est insérée dans le point d’entrée :
function montruc_contact_infos_supplementaires($champs){
// Le paramètre contient tous les champs par défaut avec :
// clé = le "name" du champ
// valeur = le titre du champ
$champs['nouveau_truc'] = 'Un titre';
// Si votre site est multilingue, il faut utiliser une chaine de langue
$champs['civilite'] = _T('une_chaine_de_langue_pour_civilite');
return $champs;
}
Et c’est tout.
Par défaut le champ sera une entrée de texte simple, et vous pouvez le personnaliser comme décrit dans le point précédent.
Discussions par date d’activité
463 discussions
merci !
cest possible davoir un formulaire avec champ supplémentaire et un autre sans ?
Répondre à ce message
Bonjour,
Super ce plugin !!
Mais j’ai beau chercher... Je ne trouve pas comment personnaliser le formulaire en rajoutant des champs à ceux existants (champs texte supplémentaire, bouton radio ou cases à cocher). J’ai bien tenté de suivre la piste ci-dessus en créant un fichier html comme indiqué, avec un nouveau champs de formulaire à l’intérieur : Mais sans succès ! :-((
Si quelqu’un avait une explication un petit poil plus précise, je serai ravi... ;)
Merci
Ça y est, j’ai écrit la doc. Voir plus haut.
Attention : il faut attendre ce soir après 19h et mettre à jour le plugin (ou immédiatement si c’est par SVN), car il manquait une petite chose pour que ça marche exactement comme dans la doc.
Répondre à ce message
Merci pour la réponse ! Je suis bien d’accord que les pièces jointes et l’enregistrement dans la base seraient utiles.
Tant que j’y suis, je vous suggère d’autres fonctionnalités :
- cases à cocher, boutons radio, choix sur menus déroulants…
- formulaire permettant à des visiteurs de s’inscrire en faisant des choix et en voyant les choix des autres…
Merci pour votre travail !
C’est déjà possible, il suffit de créer des squelettes personnalisés pour chaque champ dans
formulaires/contact_champ_*nomduchamp*.html
et de mettre ce qu’on veut dedans. C’est juste que ce n’est pas encore documenté. :)Là ça va un peu loin pour un formulaire de contact. Faut pas tout mélanger : un plugin, une fonctionnalité. :) Pour l’inscription d’auteur/visiteur avec des champs personnalisés, c’est le plugin Inscription2.
Répondre à ce message
Bonjour,
Peut-on avoir plusieurs formulaires de contact simultanément (et bien sûr, configurés différemment) ?
Merci
Non, ce n’est pas possible pour l’instant. Mais c’est une fonctionnalité intéressante sur laquelle réfléchir. Mais ça ne serait pas pour tout de suite, la priorité étant l’envoi de pièces jointes et la possibilité d’enregistrer les messages dans la base.
Répondre à ce message
Alors le problème vient à cause de ces 3 options que j’ai activées dans le couteau suisse :
- glossaire interne,
- un sommaire automatique,
- découpe en pages et onglets
Et c’est trop dommage car étant un site avec plein de textes en ai impérativement besoin :(
Ben il faut voir ça avec l’auteur du plugin en question. :)
Répondre à ce message
Alors j’ai désactivé tous les plugins sauf celui ci et bonux et ça fonctionne en effet.Tous mes plugins ont été récupérés en « auto » sur ma 2.0.7 fraîchement installée.
Alors j’ai remis les plugins et ai trouvé celui qui me crère l’erreur : le couteau suisse ! Là n’ai pas le temps de voir si en désactivant les options « activées » si la situation change mais je le ferais dès que j’ai un moment.
En tout cas cest lui qui crèe cette erreur. J’ai tout le temps vidé le cache et fais le test.
Dans le couteau voici les choses que jai activées en ce moment « spip et le cache, site en travaux, glossaire interne, un sommaire automatique, blocs dépliables, découpe en pages et onglets ». Faudra donc que je regarde si cest un de ceux ci qui crèe le conflit :(
POur les autres infos merci. Si j’utilise le système et le traduit (italien probablement) je fournirais le fichier de langue ;)
Haha, les mystères mystérieusement mystérieux du couteau suisse... Je le dis tout de suite : je ne passerai pas de temps à fouiller ce gros plugin. :)
Pour l’italien, ça serait super, merci ! (Il va bientôt y avoir quelques chaines en plus si on finit d’ajouter les pièces jointes).
Répondre à ce message
Alors je l’ai installé sur un spip 2.0.7 et jobtiens cette erreur
Mes questions :
- je l’appelle dans la partie rédaction avec ce code
cest juste ?
- je dois ajouter des champs (email par ex !!) si jai bien compris doit créer un fichier contact_email.html ?? avec quoi dedans ?
- si j’ai besoin de 2 formulaires différents sur le site (avec des champs différents) est ce possible ? si oui comment ?
- enfin, et ca peut être lié à la question précédente, pour le multilinguisme ca se passe comment ?
Merci infiniment !
$champs['nouveau_truc'] = 'Le titre du champ';
Répondre à ce message
Salut,
J’ai installer ce plugin, et je voulais savoir s’il était possible d’y associer notre propre graphisme avec un style css.
Pour cela, comment faire ?
Merci d’avance.
Bonjour,
je ne vois pas trop ce que ce formulaire précisément a de particulier par rapport au reste du contenu de vos pages.
Vous faîtes du CSS comme pour le reste, ni plus ni moins. Le HTML reprend la structure et les classes des autres formulaires de SPIP, donc on peut styler tous les formulaires d’un coup. SPIP le fait déjà d’ailleurs dans spip_formulaires.css. Il suffit de s’en inspirer et d’harmoniser tout ça avec votre graphisme.
Répondre à ce message
bonjour,
votre pugin c’est bien mais je trouve qu’il est juste une routine pour envoyer aux auteurs du site ?!
perso je pensais que pour le champs destinataires nous pourrions introduire des emails directement voir des noms et des emails ?
pour pouvoir envoyer un message à un email spécifique (destinataire) je dois le créer comme utilisateur dans spip (c’est un peu lourd je trouve ! surtout quand je ne veux pas avoir d’utilisateur fantome). L’idéal serait de pouvoir choisir entre des destinataires inscrits dans spip ou introduire des destinataires autres.
exemple : je veux avoir comme destinataire : daniela.office@monassociation.org, sachant que ce mail n’est pas inscrit comme utilisateur dans spip, et que je ne veux pas lui créer un compte rien que pour l’utiliser (oui, même pas comme visiteur !), ne serait as plus simple d’introduire son email directement ??
je ne sais pas comment faire, vue que je suis nulle en programmation, mais j’ai compris que cela est loin de satisfaire mon besoin.
merci et bonne continuation.
bonjour Daniela,
je ne suis pas auteur de ce plugin, certes ta remarque es pertinente, d’ailleurs, pour certains ça serait vraiment plus simple peut être ? je ne le sais pas !
mais je et conseilles d’activier l’inscription de visiteurs, de créer un auteur au statut visiteur (celui-ci n’a aucun accès au back-office), et de lui attribuer le nom qui te conviens et l’email que tu veux utiliser, repartir dans cfg du formulaire de contact et là, choisir cet utilisateur, tu verras c’est assez simple !
tu pourras créer autant de visiteurs que tu as besoins de destinataires !
mmm, cependant introduire des emails directs serait plus avantageux que de choisir dans un listing de plusieurs centaines d’utilisateurs (pour les gros sites !)
ce qui serait pas mal ausi c’est de pouvoir ajouter des champs (pas au même niveau que le faisait Forms & Tables) mais juste pour le formulaire de contact, genre ajouter champs « emploi », « age »,...
@+
Ce n’est pas prévu dans le plugin, en tout cas pas à court terme. En effet un destinataire c’est quoi ? : une adresse mail et un nom. C’est-à-dire exactement ce que fournit l’objet « auteur » de SPIP. On ne va donc pas créer un objet différent en plus alors que tout ce qu’il faut est déjà en place.
Surtout qu’une des fonctionnalités en train d’être développée, c’est de pouvoir dire : « je veux garder en mémoire les courriers de contact dans mon SPIP ». Pour cela, le plugin va utiliser tout simplement l’objet « message » fourni de base dans SPIP, et qui est lié à ... un auteur évidemment. Si l’on autorisait le choix d’un auteur ET de saisies arbitraires, il y a alors certains cas où l’on pourrait enregistrer dans SPIP les messages, et d’autres pas. Ça introduit une complexité en plus inutilement à mon avis. En tout cas pour l’instant.
En attendant, il est simple de créer des faux auteurs qui n’accèderont de toute façon jamais à l’interface. Là comme ça, je ne vois pas de cas qui empêcherait cette utilisation. Même si ça peut exister puisque tout existe (et c’est apparemment votre cas) c’est un cas qui doit être assez rare, à mon avis.
Pour l’instant la priorité c’est de pouvoir envoyer des pièces jointes, puis de pouvoir enregistrer les messages (et leurs PJ éventuelles) dans la base de SPIP.
Désolé de ne pas pouvoir vous aider pour le moment.
je suis tout à fait d’accord avec toi...rien de plus simple que d’utiliser des faux auteurs (des inscrits avec le statut visiteur) comme je l’ai recommandé à Daniela, qui en a plutot besoin.
il est vrai que pour les prochains développements :
- piece jointe ça serait très bien ! (comment aller vous procéder ?? je peux aider si vous le voulais !)
- pour l’enregistrement des messages ça serait bien mais rapidement envahissant dans le cas où l’on reçoit des centaines de messages par jour (imaginez avec pieces jointes en plus !), à mon avis si c’est le cas faudrait aussi penser à implémenter : une fonction d’export des messages au format eml ou texte ou cvs, et aussi de purger les messages, pour alléger la base de données.
ça reste mon avis personnel mais « je veux garder en mémoire les courriers de contact dans mon SPIP » devrait être mis au conditionnel, ça serait bien que ça soit une option et non quelque chose d’automatiquement fait par le plugin, si j’en veux pas je fais comment ??
@+
Euuuh : tu as dis toi-même dans le message précédent qu’il y avait une page de configuration du plugin. Et en plus ma phrase est claire : « c’est de pouvoir dire que... ». C’est une possibilité offerte à l’utilisateur. À aucun moment je n’ai donc dit que c’était activé par défaut.
ben faut pas te facher, mais c’étais pas aussi explicite !
maintenant que tu l’as précisé en effet c’est très calir !
merci et bonne continuation.
PS : sinon j’aimerai participer avec vous au développement et aux traductions, mais comment faire tout en étant un plus et pas un frein à l’avancée du plugin avancé ! lol
Répondre à ce message
Bonjour
Je souhaiterais savoir si vous envisager de la faire valide dans l’édition de formulaire, car je souhaite monter valide W3C mais votre formulaire me gène
Je ne comprends pas votre phrase.
Je souhaite faire un site normaliser W3C mais la page de contact :
http://test.beau-lieu-bec.org/spip.php?page=formulaire_contact
Ne peux pas être au norme pour cette page
Il y a beaucoup d’erreurs html triviales. Tidy en repère 72 ....
exemple une balise de paragraphe écrite
<p />
je ne crois pas que ça existe encore :)Quant entendez vous par la ? Je voit surtout des erreur
et . Est ce que c de chez moi ou bien du plugins ?
Il faudrait virer dans votre script le p et le span pour y voir plus clair :
Pierre
Je viens de le faire mais ça change rien
Avec 69 warning en moins sur 72 j’ai du mal à dire que ça change rien.
Je ne t’accompagnerai pas jusqu’au saint graal du w3c mais au moins puis-je te conseiller de continuer à chercher.
Notamment :
<a href="" rel="nofollow">Se déconnecter</a>
peut être à virer ou regarder du côté de la balise#AUTORISER
dans le script de la dist.où il faut virer
longdesc=""
<input type="hidden" name="destinataire[]" value="1" />
ce bout de code est dans un ul alors qu’il devrait être dans un li.Avec cela tidy sera vert, pour le w3c il faut peut-être continuer un peu...
Bon courage
Pour moi il en reste 13 et la plupars son du plugins
Il y avait juste un input pas au bon endroit. Sauf que c’était un HIDDEN, donc personnellement je m’en fichais pas mal... Mais je l’ai quand même modifié. Après mise à jour ça devrait aller.
Répondre à ce message
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 : |