Formulaire de contact avancé

Un formulaire de contact configurable, avec de multiples options.

ATTENTION : bien que fonctionnant, ce plugin n’est plus maintenu depuis plusieurs années. Cela fait au moins 10 ans qu’il est conseillé de le remplacer par le plugin Formidable plus souple et maintenu activement.

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.

Discussion

463 discussions

  • 1

    J’ai testé tous les plugins, c’est le plugin Facteur qui bloque les envois !

    thickbox -> ok

    facteur -> le mail n’arrive pas, le log n’affiche pas l’en-tête du mail.

    couteau suisse -> ok

    Le problème réside peut-être dans le mailer d’envoi de Facteur. j’avais essayé avec mailer php, ça ne marchait pas. Idem avec l’envoi par smtp. Pourtant les notifications avec Facteur fonctionnent.

    • RastaPopoulos

      Ben facteur marche très bien, c’est sûrement un problème de configuration de ce plugin. Tu es sûr d’avoir bien tout rempli comme il faut ?

      Moi j’utilise aussi Facteur la plupart du temps et ça envoie bien.

      Ceci dit, si tu n’as pas besoin de permettre l’envoi de pièces jointes et que ton serveur a une fonction mail() qui marche, il n’y a strictement aucune raison d’utiliser Facteur. Ça c’est juste quand on veut utiliser un autre serveur d’envoi de mail.

    Répondre à ce message

  • 1

    c’est lorsque je saisis le courriel dans la page contact

    bm777777 at wanadoo.fr

    • RastaPopoulos

      Ya une URL où je peux voir le formulaire ?

    Répondre à ce message

  • Les messages envoyés (mais qui n’arrivent jamais à destination) apparaissent bien dans le spip.log. Je réinstalle tous les plugins comme conseillé et je refais un essai.

    Répondre à ce message

  • 1

    Pour moi avec facteur cela fonctionne.
    mais lorsque le message arrive dans ma messagerie j’ai « at » et non pas @
    Que puis je faire ?

    • RastaPopoulos

      Euuh il faudrait préciser un peu. « at » où ça ? sur quelle adresse ? et en faisant quoi ?

      à priori ça ne vient pas de ce plugin car ya jamais eu aucune transformation sur ce qui a été tapé dedans.

    Répondre à ce message

  • 2

    Ce plugin est exactement ce que je recherche, sauf que... je ne reçois jamais les messages envoyés. J’ai tout vérifié, je ne vois pas ce qui cloche. J’ai installé les plugins cfg, Spip Bonux et même le plugin facteur. Avec le plugin facteur, je reçois sans problème les notifications envoyées avec le test de la configuration. Mais avec le plugin formulaire de contact, rien du tout... j’aimerais bien de l’aide là-dessus et savoir si quelqu’un a déjà eu le même problème que moi et a trouvé comment le résoudre.

    Je précise que je suis chez OVH, sur un 90plan.

    Merci.

    • Victorien

      Exactement le même problème que Kley chez OVH les messages ne partent pas, contrairement aux notifications.

      D’autre part, lorsque j’insère le formulaire directement dans un article, j’obtiens :
      [

      <?php $lang_select = lang_select("fr"); include_once(_DIR_RACINE . "ecrire/balise/formulaire_.php"); inclure_balise_dynamique(balise_FORMULAIRE__dyn('FORMULAIRE_CONTACT'),1, 0); if ($lang_select) lang_select(); ?>

      Par exemple ici :
      http://www.spytv.asso.fr/L-association.html

    • RastaPopoulos

      En 2.0.9, et en utilisant Facteur pour envoyer (et sans aussi), je ne reproduis aucune de vos erreurs à tous les deux.

      Du coup je ne sais pas trop quoi vous dire pour l’instant. Regardez dans spip.log pour vois s’il y a des messages bizarres concerant le courrier.

      Et vous utilisez le formulaire en normal ou en ajax ? (avec div class=ajax autour)

      Dans le doute, mettez aussi tous les plugins concernés à jour, tous à la dernière version, puis videz le cache, voire carrément videz le dossier tmp/.

    Répondre à ce message

  • salut tt le monde.je suis nouveau utilisateur de spip et j’ai vraiment besoin de l’aide pour savoir comment le manipuler.je suis vraiment tres nul donc aidez moi svp

    Répondre à ce message

  • Idem tout fonctionne sauf que le message n’est pas envoyé, je suis aussi sous ovh.....

    Répondre à ce message

  • Re Rastapopoulos :-D

    Même problème que page unique, donc, j’ai utilisez la même méthode pour l’installer au bon endroit :-)

    Répondre à ce message

  • 1

    Bonjour,

    Ce formulaire est exactement ce que je cherchais.
    Je l’ai mis en ligne et ça marche très bien.

    La version en anglais du formulaire est-elle automatique ?
    Si oui, pourriez-vous m’indiquer le code pour insérer le formulaire en anglais ?

    merci beaucoup par avance,

    Laetitia

    • RastaPopoulos

      Ben il faut juste que la page soit en anglais. Soit parce que l’utilisateur a choisi l’anglais dans le menu de langue, soit tout simplement en insérant le formulaire dans un article anglais.

    Répondre à ce message

  • 2

    Merci pour ce plug génial RastaPopoulos et Pierre_31 !!!

    J’ai une demande à faire, qui n’est franchement pas très importante, mais bon, si jamais vous avez le temps et que ce n’est pas trop dur à faire :-(

    Dans le choix des destinataires (dans cfg), c’est possible que le choix, soit fait en cochant une case, en face des noms, qui deviendraient également surbriants comme actuellement ?

    Pour le moment, il n’y a que 2 personnes qui puissent y être en ce qui me concerne, mais si je un jour par exemple, j’ai 5 personnes, je souhaite que cela soit la 1er, 2e et 4e par exemple
    La surbriance, c’est très visuel donc génial donc faudrait qu’elle reste !

    Je sais qu’il y a un moyen, via une combinaison de touche, mais comme je ne m’en sers jamais, je sais plus, et il y a des chances pour que je ne sois pas le seul :-D

    Sinon pour la personne qui débute ( je ne suis pas vieux non plus et également très nul) ce plug est parfait car super simple, tu places le texte formulaire|contact dans l’article, tu cliques sur "enregistrer" en bas, et pouf, le formulaire fonctionne :-D

    Si tu utilises le plug, FCKeditor, il faut que tu cliques sur "source", puis, là tu écris “formulaire|contact” puis, tu cliques sur "enregistrer" en bas et re pouff, cela fonctionne :-D

    Ps : pour faire les < ou autre signe un peu particulier, si tu es comme comme et que tu hésites, tu as :
    http://mlc.ncf.ca/charactersfr.html
    ou sinon, tu regardes la tables des caractères dans accéssoires/outils système de windows :-)

    Franck

    • RastaPopoulos

      Pour sélectionner plusieurs auteurs, il faut appuyer sur la touche CTRL.

    • Merci RastaPopoulos, je savais bien qu’il y avait une touche, mais, je ne me souvenais plus comment faire :-)

    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 :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

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.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom