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,
Le formulaire contact prend la langue par défaut du spip, mon site est multilingue. comment je fait pour que le formulaire quand on est sur la page arabe (et l’auteur rédige en arabe comme en français) s’affiche en arabe sachant que j’ai utilisé les balises
pour indiquer que celui qui a écrit en français est le même qui écrit en arabe. Pour que finalement les lecteurs arabes trouvent un formulaire de contact à leur langue et les lecteurs français trouve la même chose en français ?
Répondre à ce message
Bonjour,
J’ai installé ce plugin sur un SPIP 3 et cela fonctionnait très bien. Depuis quelques temps les messages n’arrivent plus dans les boîtes mail. Ils restent enregistrés dans la partie privée du site mais ne sont pas rapatriés.
Autre chose étrange : toutes les personnes qui envoient des messages se retrouvent automatiquement inscrites dans la partie « destinataires » et je ne veux surtout pas cela...
Ai-je mal configuré le plugin ? Pouvez-vous m’aider SVP je ne sais plus quoi faire.
Merci !
Bonjour, idem que HirisBen !
Tout fonctionnait bien... et puis plus d’envoi et mêmes effets. Y a-t-il un bug connu et besoin de mise à jour plugin/SPIP ?
Bien cordialement.
Répondre à ce message
Bonjour,
Si on intègre le formulaire de contact avancé dans le squelette d’un article,
serait-il imaginable de récupérer le #TITRE l’article dans le corps du mail (en pied de mail, par exemple).
le but est de savoir depuis quel article le mail a été envoyé.
Une hypotèse :
Utiliser #ENV
j’avoue que je sèche.
Merci d’avance.
Vu que dans ce plugin le contenu du mail n’est pas généré avec un squelette, il n’y a pas moyen de le surcharger simplement. Ya qu’en surcharger la fonction traiter() du formulaire en entier. En copiant-collant la même chez soi, mais en enlevant le « _dist » à la fin.
Merci de cette réponse et de ces suggestions,
mais, n’étant pas un expert en formulaire PHP,
un petit conseil supplémentaire ne serait pas de trop.
Je ne pars pas, toutefois, de rien :
pour un site précédent, j’avais du adapter un formulaire qui récupérait le #TITRE de l’article comme suit :
Ensuite on récupérait la variable $bip contenant le #TITRE pour l’ajouter dans le corps du mail et dans un mail de confirmation d’envoi.
Mais c’était avec un formulaire totalement indépendant du plugin « Formulaire de contact avancé », ce qui fait perdre les avantages de pouvoir configurer le formulaire depuis l’espace privé.
D’après ta suggestion, je suppose qu’il faut que je copie, dans « squelettes/formulaires/ », les fichiers contact.php et, peut-être aussi, contact.html du dossier formulaire du plugin « Formulaire de contact avancé », puis que je les modifie.
Donc si le code ci-dessus marche bien, où me conseilles tu d’insérer la variable $bip, contenant le #titre de l’article ?
Merci d’avance.
Non je t’ai juste dit de surcharger le traiter() du formulaire en copiant-collant la fonction sans le « dist » à la fin. Dans mes_fonctions.php je suppose, ou mes_options.php peut-être. Ensuite tu mets le titre de ton article quelque part dans la variable qui contient le contenu du mail (me rappelle plus son nom), au début ou à la fin par exemple.
Cela dit, à partir du moment où on veut personnaliser, c’est peut-être plus simple de passer à Formidable dont les mails sont des squelettes, plus facilement personnalisable. Et qui d’ailleurs ajoute de toute façon déjà de base dans le mail, un lien vers la page d’où a été posté le message.
Répondre à ce message
Bonjour,
Je suis sous SPIP 2.0.7 (je sais, ça date, mais tout fonctionne tellement bien !) avec le formulaire de contact avancé.
J’aurais souhaité bénéficier de deux formulaires de contact avancé, pour joindre des personnes différentes. Est-il possible de faire cohabiter deux instances de ce plugin ?
MERCI de vos pistes...
Wic
Ben c’est marqué dans la doc, tu peux sélectionner plusieurs auteurs différents à qui écrire, mais ne permettre que d’en sélectionner un seul. Ensuite tu appelles ton formulaire en pré-sélectionnant l’un des deux auteurs suivant où tu mets ton formulaire, comme expliqué plus haut dans cette page :
<formulaire|contact|auteur=123>
.Répondre à ce message
bonjour, une question un peu nulle vu le degré des échanges ici (je débute), mais y-a-t-il moyen de faire en sorte que tous les champs soient alignés dans le formulaire ? comme ils collent aux textes, cela créé un effet de dégragé pas très agréable. Que devrais-je mettre dans ma .css pour corriger cela ? (et encore pardon si ma question paraît triviale ou la réponse évidente..)
bien, j’ai maintenant un autre probleme, bien plus important. J’ai fait fonctionner ce plugin (formulaire de contact avancé 0.10.3) ... une fois. J’ai bien vu la fenetre avec une demande de confirmation, puis l’annonce de l’envoi. Mais voila, quand j’ai voulu recommencer, peu de temps après, plus rien : la page reste telle quelle, sans aucune indication, et les mails ne sont visiblement pas envoyés. J’ai testé aussi le plugin facteur (2.4.5), et il fonctionne, j’ai reçu le mail. Quelqu’un aurait une piste ? merci
PHP Version 5.2.17
Répondre à ce message
re bonjour
l’url pour trouver les messages enregistrés sur le site serait celle ci : ?exec=contact_messages
mais à cet url, j’ai cette erreur :
Fatal error : Call to undefined function navigation_pagination() in /homez.577/crifranc/www/ecrire/inc/presenter_liste.php on line 107
Je ne saurais dire... ce n’est pas moi qui me suis occupé du passage en SPIP 3 de ce plugin, si mes souvenirs sont bons, et du coup je ne sais pas ce qui a bougé depuis, dans cette version.
En tout cas la page dont tu parles n’existe pas dans les dossiers de ce plugin :
http://zone.spip.org/trac/spip-zone/browser/_plugins_/contact/trunk/prive
Répondre à ce message
Bonjour,
Je voudrais créer un article contenant le formulaire de contact avancé. Dans mon article, j’ai inscrit
(sans espace entre < et formulaire et contact et >
Lorsque j’enregistre, je vois bien mon formulaire dans la partie privée. Sur la partie publique, là où je devrais voir le formulaire, s’affiche le texte suivant.
Qu’ai-je oublié de faire ? SPIP 2.19, Squelette Viaspip
Merci pour la réponse.
Et en désactivant les plugins non obligatoire pour celui-là, afin de tester que ce soit bien ce plugin en cause ?
Bonjour,
Merci pour la réponse rapide. J’ai testé en désactivant des plugins et le responsable est celui correspondant au squelette du site : ViaSPIP 2.1.10b de JY Giraud. Plutôt gênant non ?
À voir avec son auteur donc...
Le squelette n’utilise pas
#TEXTE<code> tel quel, mais utilise <code>[(#TEXTE*|ancres_intertitres{#ID_ARTICLE}|propre|image_reduire{600,0})]
. Donc possible que le filtre qui passe avant propre() (qui gère les modèles) casse quelque chose dans l’histoire. Si c’est le cas ça vaudrait pour n’importe quel formulaire d’ailleurs, pas spécialement celui-là mais pour le modèle « formulaire » en général.Répondre à ce message
Bonjour,
j’ai mis ce formulaire sur mon spip or quand je confirme l’envoi du mail, il me retourne une série d’erreurs :
Warning : strpos() expects parameter 1 to be string, array given in /home/mon-espaceweb/public_html/répertoire-Spip/ecrire/inc/filtres.php on line 458
Warning : strpos() expects parameter 1 to be string, array given in /home/mon-espaceweb/public_html/répertoire-Spip/ecrire/inc/charsets.php on line 209
Warning : preg_match_all() expects parameter 2 to be string, array given in /home/mon-espaceweb/public_html/répertoire-Spip/ecrire/inc/charsets.php on line 505
Warning : preg_match_all() expects parameter 2 to be string, array given in /home/mon-espaceweb/public_html/répertoire-Spip/ecrire/inc/charsets.php on line 515
Warning : wordwrap() expects parameter 1 to be string, array given in /home/mon-espaceweb/public_html/répertoire-Spip/ecrire/inc/envoyer_mail.php on line 162
Pour l’instant, je n’ai pas encore touché ces fichiers => il s’agit d’une variable non-déclarée et comme le spip,il fait ses petits sur un ensemble de templates, j’y vais avec des pincettes.
Quelqu’un a-t-il contourné ce bug ?
environnement : SPIP 2.0.22
autre info : je ne reçois pas non plus le résultat du formulaire dans ma mailbox, ce qui est assez embétant par ailleurs
Quelle version du plugin ?
Perso je n’ai plus de SPIP 2.0 sous la main pour tester si ça marche encore dans cette version (qui n’est plus supportée).
Bon sang, quelle réactivité !!
Version : 0.8.3 [65862] — stable
Répertoire : contact
Normalement corrigé par :
http://zone.spip.org/trac/spip-zone/changeset/71985
Soit mettre à jour par SVN, soit attendre le nouveau paquet (une fois par heure).
Répondre à ce message
Est-il possible d´envoyer un mail à deux personnes en même temps via la balise dans un article ? Ex. :
<formulaire|contact|auteur=2,34>
Ou comment faut-il procéder ?Répondre à ce message
bonjour
sous SPIP 3.05, plugin facteur + contact et autres
le menu « activité > message enregistrés » n’apparait pas en bandeau.
une piste ? ou une adresse directe ?
merci
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 : |