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
Bonjour je viens d’installer ce plugin,mais je ne sais pas où installer ce code : .Appel classique
#FORMULAIRE_CONTACT
Appel avec l’auteur 34 pré-selectionné
#FORMULAIRE_CONTACT34
Appel AJAX (sans rechargement de la page)
Une petite explication serait la bienvenue SVP (je suis assez nul )
Merci
Ben euuuh, je ne sais pas trop quoi dire de plus, c’est marqué en titre de chaque exemple :
Dans un squelette :
#FORMULAIRE_CONTACT
Dans un contenu (un article par exemple) :
<formulaire|contact>
Répondre à ce message
J’ai également les mêmes warnings pour le formulaire que j’ai besoin d’installer.
Le message n’arrive pas, même s’il est indiqué qu’il est parti.
Est-il vraiment nécessaire d’installer le spip-branche ?
Y’a-t-il une version du formulaire que je pourrais utiliser ?
Lucie
Comme déjà dit maintes fois, pour les warning il faut la version 2.0.9 de SPIP car c’était un bug de SPIP et non du plugin. Et vous devez de toute façon absolument mettre à jour votre version puisque c’est une mise à jour de sécurité majeure (cf. toutes les annonces sur chaque site de la communauté).
Pour le fait que le courrier n’arrive pas, là c’est plus probablement un problème de votre serveur où est hébergé le site. Est-ce que d’autres mails partent du site (notifications de publication, etc) ?
Sûrement que la fonction mail() de PHP ne marche pas (chez Free elle est désactivée par exemple).
La solution la plus simple est d’installer le plugin Facteur, qui vous permettra de configurer un serveur de mail perso (comme dans votre logiciel de courrier habituel). Cliquez sur « Téléchargement » en haut et cherchez Facteur.
Répondre à ce message
J’ai installé le formulaire avancé qui fonctionne bien en mode saisie et envoi par messagerie.
Est-il possible également de récupérer les données du formulaire dans une table Mysql ? Mon hébergeur est free.
Merci pour la réponse
C’est quasiment fini de développé cette fonctionnalité. Ça sera ajouté dans une prochaine version.
Répondre à ce message
Bonjour,
Le formulaire fonctionne parfaitement sur mon SPIP 2.0.7.
Juste une petite question : la liste des destinataires possibles s’affiche automatiquement sur 3 colonnes. Que faut-il modifier pour augmenter le nombre de colonnes ?
Merci d’avance,
Christophe
C’est juste le style par défaut défini dans la feuille de style « spip_formulaires.css » par défaut de SPIP.
Le style de « ul.choix_mots li » a une largeur de 30%, soit environ un tiers.
Répondre à ce message
La réponse à mon test comme promis :
Je l’ai fait « à l’arrache », mais cela semble fonctionner.
1- J’ai téléchargé l’archive « SPIP-branche-2.0.zip », et je l’ai décompressée.
2- Je me suis connecté sur le serveur distant hébergeant mon site, j’ai archivé les répertoires ecrire, local, prive, squelettes-dist et tmp ainsi que les fichiers CHANGELOG.txt, htacces.txt, INSTALL.txt, spip.php et svn.revision pour pouvoir les réinstaller si problèmes.
3- J’ai transféré ceux (répertoires et fichiers) portant le même nom depuis l’archive décompréssée mentionnée en 1.
4- Je me suis reconnecté sur le site (public et espace privé) , le serveur m’a demandé de modifier les droits sur les répertoires tmp et local (cela ne me parait d’ailleurs pas très fiable pour la sécurité).
5- Le serveur m’a demandé de valider la mise à jour de la bdd côté espace privé, elle s’est déroulée sans problème.
6- J’ai testé à 2/3 reprises le formulaire, plus de message « warning... » et les mails sont bien arrivés à destination.
J’ai comparé ma version en local et ma version distante de SPIP. En local, je suis en 2.0.7 (sous OSX 10.5.7 avec serveur MAMP 1.7).
Le serveur distant est lui sous Linux (équipement informatique de l’université de Caen) avec la version 2.0.8.
Je ne suis pas un spécialiste mais je pense que le problème doit plus venir de la différence des versions de SPIP que des serveurs. Je n’avais pas fait attention lorsque j’avais installé la version distante au n° de révision.
Voilà pour le retour.
Merci pour les infos et la rapidité.
Oui c’est ce que je disais : le bug de rawurlencode est un bug de SPIP. Mais il est aussi dans le 2.0.8. En installant la version que j’ai donné en lien, c’est la future version 2.0.9 (cad la 2.0.8 + les modifs qui ont été faites depuis sa sortie).
Tout est bien qui fini bien.
Répondre à ce message
Merci pour la réponse (très) rapide. :)
Je m’entête depuis deux bonnes heures à comprendre cette erreur : les mails semblent partir, mais ils n’arrivent pas.
j’ai vérifié les adresses mails des destinataires. J’ai regardé dans les spams. Aucune trace des mails.
Ci dessous le derniers log du fichier spip.log (pour éviter les robots spameurs, j’ai remplacé ici @ par trois petits points).
« gilles klein a envoyé un mail à 12 32
— Envoi via le site Centre Iris... (http://www.centre-iris.fr/) —
Jul 29 12:32:31 86.74.35.66 (pid 2868) Meta email_envoi invalide. Le mail sera probablement vu comme spam.
Jul 29 12:32:31 86.74.35.66 (pid 2868) mail gilleskleininfos...gmail.com, caroline.gaume...63com.com
essai envoi mail
X-Originating-IP : 86.74.35.66
From : gillesklein...mezimail.com (gillesklein at mezimail.com)
Reply-To : gillesklein...mezimail.com (gillesklein at mezimail.com)
Content-Type : text/plain ; charset=utf-8
Content-Transfer-Encoding : 8bit
MIME-Version : 1.0 »
Je crains que ce soit un problème de configuration du serveur. Le site est installé sur le serveur windows du client.
Mais je n’y connais rien, y a t’il un moyen de tester si c’est bien un problème du serveur ?
Est-ce que d’autres mails partent de SPIP ? Avec le formulaire auteur classique par exemple ?
Dans ces cas, la première chose à voir est effectivement de s’assurer le que serveur sait envoyer des mails. C’est-à-dire que la fonction mail() de PHP fonctionne correctement.
En cas de doute, vous pouvez utiliser le plugin Facteur, qui permet de configurer dans SPIP un autre serveur SMTP arbitraire. Ainsi, en utilisant le votre ou un dont vous êtes sûr qu’il marche, les courriers sont assurés de partir.
Quand on a pas la main sur le serveur, c’est souvent le plus simple.
Merci pour la réponse, je vais essayer facteur.
Du coup j’utilise ce plugin pour d’autres sites installé sur un autre serveur et tout fonctionne à merveille. :)
Répondre à ce message
ok, merci,
désolé pour la répétition.
J’essaierai cela ce soir et posterai le résultat, je suis à mon travail.
Merci encore et bonne journée.
Répondre à ce message
Bonsoir et merci pour ce plugin très pratique.
J’ai moi aussi eu le fameux message :
« Warning : rawurldecode() expects parameter 1 to be string, array given in /users/etu/2008/licpro/ppingaul/public_html/spip/ecrire/inc/filtres.php on line 1762 »
Cela n’empêche pas les mails d’arriver.
J’avais déjà testé le plugin auparavant sur d’autres sites dont le mien sans rencontrer aucun problème, y compris sur celui qui m’a remonté ce bug depuis lundi alors qu’il fonctionne dans le même environnement qu’auparavant (étonnant, non ?! - merci Monsieur Cyclopède).
Plus sérieusement, je fonctionne avec la 2.0.8 et je n’ai pas trouvé de mise à jour. Savez-vous si ce bug a été corrigé depuis, à moins que je n’ai loupé un wagon, auquel cas je repars avec mes quatre piles (commentaires uniquement destiné aux nostalgiques de Pierre Desproges)
Encore une fois merci.
Oui, comme je l’ai déjà dit, le bug a normalement déjà été corrigé sur la branche stable (2.0) du SVN de développement de SPIP.
Pour l’avoir il faut donc
Merci de confirmer si cela résout bien le problème.
Répondre à ce message
C’est peut-être une question un peu neu-neu, mais je ne vois pas ce plugin dans la liste des plugin accessible dans la partie admin. Ni dans formulaire... ni dans ’contact...’. Est-ce mes liens auto qui sont mauvais ou est-ce que ce plugin porte un autre titre ?
Il s’appelle : « plugin_contact | Formulaire de contact avancé ». Dans la liste venant de spip-contrib.
Si on ne le voit toujours pas, il faut cliquer sur le lien « Mettre à jour les listes ».
Répondre à ce message
Bonjour,
J’aimerais mettre la mention « Veuillez indiquer une adresse email » en rouge lorsque l’on ne remplit pas un champ du formulaire. Quelle est la procédure ?
Merci
C’est une chose qui n’est pas vraiment spécifique à ce plugin : les messages d’erreurs des formulaires qui suivent les recommandations de SPIP (c’est le cas de ce plugin), ont tous la classe CSS « erreur_message ».
À vous ensuite de styler comme vous le désirez. Par exemple :
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 : |