Formulaire de contact avancé

Un formulaire de contact configurable, avec de multiples options.

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».

Toutefois, il est désormais conseillé d’utiliser le plugin Formidable plus souple et encore maintenu.

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.

updated on 2 April 2020

Discussion

460 discussions

  • 2

    Bonjour,
    Je ne retrouve plus le texte du message de conformation d’envoi qui est dans un cartouche en vert…

    Reply to this message

  • Bonjour

    j’essaie d’adapter le formulaire a mes besoins, et j’ai quelques questions :

    -  Est il possible de ne pas rendre obligatoire le “sujet” ?

    -  Comment peut on modifier les libéllés des champs ? par exemple devant le champ “nom”, afficher “nom du demandeur” ?

    -  Peut on déposer deux pieces jointes ?

    merci de vos retours

    Reply to this message

  • Une question de débutant. Est-il possible de positionner les champs Reply-to et from à une valeur correspondant au visiteur ayant activé la demande de contact.
    Par défaut ces champs sont positionnés sur le nom du user sous lequel tourne Apache.
    Merci !

    Reply to this message

  • 20

    bonjour

    je test le plugin sur un site SPIP 3.1.0 [22707]

    au moment de la validation du formulaire , j’ai une erreur 500 ?

    avez vous une idée ?

    jacques

    • Souvent un problème de droits dans les dossiers ça…
      Mais il faut faire afficher les erreurs PHP pour avoir un vrai message d’erreur, sinon c’est difficile de comprendre plus.

    • je vais passer pour un idiot ………
      comment je peux afficher les erreurs PHP pour essayer de débuguer ?

    • grrr
      j’ai déposé le fichier mes_options.php dans le répertoire config

      avec

      <?php
      error_reporting(E_ALL^E_NOTICE);
      ini_set ("display_errors", "On");
      ?>

      l’erreur ne s’affiche plus … j’ai juste une page blanche !
      je suis marabouté !

    • Pas besoin de la balise de fin. Et il ne faut aucun espace ou ligne vide ni avant ni après (mais justement s’il n’y a pas de balise de fin, ya pas d’après donc moins de risque de bug comme ça)

    • tu me sauves !
      je te dois une bouteille !

      voici l’erreur qui s’affiche
      Fatal error: Unsupported operand types in /SAN/clients/mfamv2/public_html/plugins/auto/contact/v0.15.10/formulaires/contact.php on line 264

    • Deux trucs possibles : moi j’ai fait une connerie, que je vais corriger, car j’oublie de tester si ya bien pièces jointes activées avant de faire une opération dessus.

      Et sinon, si tu as les pièces jointes activées, c’est que tu as un TRES vieux PHP, qui ne supporte pas les additions de tableaux. Et il faut mettre à jour (c’est forcément une version qui n’est plus supportée du tout, qui n’a même plus de patchs de sécurité, donc aïe aïe aïe).

    • j’ai vérifier avec

      echo phpversion();

      et je suis en 5.3.3 ……………

      il faut que je vois avec l’hebergeur ! quelle est la meilleure version php pour la derniere version de SPIP ?

    • quelle version de php me conseilles tu pour spip 3.1 ?

    • j’ai remplacé tes deux fichiers
      paquet.xml et contact.php
      mais j’ai toujours la même erreur. Je suppose donc que c’est la version php ?

    • Bah il me semblait que c’était à partir de 5.2 justement…
      T’as les pièces jointes activées ou pas ?

    • Bonjour, j’ai la même erreur que jacangers et je ne vois pas ce que je peux faire pour la régler.
      Pour les pièces jointe je n’ai pas Facteur donc non.

    • Oups, j’ai laissé une coquille dans ma correction précédente :
      http://zone.spip.org/trac/spip-zone/changeset/95695

    • J’ai mis a jour avec le changement, mais rien n’y fait. Toujours cette erreur 500.

    • Je viens de retester avec ET sans pièces jointes, dans les deux cas tout se passe sans aucun problème.

      T’as désactivé tous les plugins pour tester juste ce que tu veux tester ?
      Et t’as quoi comme PHP ?

    • Bonjour

      je viens de tester de mon coté avec tes derniers correctifs et ça roule !
      (php 5.3.3 - SPIP 3.1.0 [22707]

      encore bravo pour ta réactivité !

      merci

    • J’etais sous PHP 5.4, je viens de le faire passer sous PHP 7. Maintenant j’ai cette erreur qui pop ->

      «Fatal error: Uncaught Error: Unsupported operand types in /home/cheapmiupw/placeloopforbrands/plugins/contact/formulaires/contact.php:266 Stack trace: #0 /home/cheapmiupw/placeloopforbrands/ecrire/public/aiguiller.php(201): formulaires_contact_verifier_dist() #1 /home/cheapmiupw/placeloopforbrands/ecrire/public.php(105): traiter_formulaires_dynamiques() #2 /home/cheapmiupw/placeloopforbrands/spip.php(24): include(’/home/cheapmiup...’) #3 /home/cheapmiupw/placeloopforbrands/index.php(3): include(’/home/cheapmiup...’) #4 main thrown in /home/cheapmiupw/placeloopforbrands/plugins/contact/formulaires/contact.php on line 266»

    • juste une dernière chose pour vérifier.

      je reçois bien un mail me disant que le formulaire à été posté à telle heure,
      dans le mail , je récupère bien la pièce jointe.

      on me dit aussi
      “Ce message est enregistré sur votre site :” avec l’url …

      quand on clic sur l’url en question on a bien le message, mais la pièce jointe à disparue.

      Est ce que c’est normal ? Est que la piece jointe est juste transmise par mail mais non archivée ?

    • @nelson là franchement je vois, pas, ni en 5.4, ni 5.6, je n’ai d’erreur ni sans pièces jointes ni avec pièces jointes.

      @jacangers, oui cf le fil de discussion précédent avec Mirobolus, SPIP n’affiche pas les documents joints sur les pages de message :( Mais c’est bien dans la médiathèque ET ya bien le lien avec le message dans documents_liens. Juste c’est pas affiché sur la page.

    Reply to this message

  • 2

    Re-bonjour, une chose curieuse : même si je coche “ne pas vouloir de la barre typo” dans le paramétrage du plugin (spip 3.0.20), elle s’affiche tout de même ... Comment faire pour ne pas la voir ?

    • je ne sais pas, peut-être dans la config du plugin Porte-Plume (qui est dans les plugins permanents), il y a aussi une option pour dire si on veut inclure la lib dans la partie publique

    • Merci de ta rapide réaction. En effet, lorsque je coche “ne pas afficher” dans le plugin, cela n’a pas d’effet ... Bizarre, non ? J’ai du pour cela mettre les classes “markItUp...” en design: none; pour que cela efface le porte-plume. Je pense que ce n’est pas un solution perenne ... Bien qu’étant plutôt mauvais en php, je vais essayer de voir où ça coince. Bon we. Marc

    Reply to this message

  • Bonjour, j’utilise ce plugin avec bonheur, merci mille fois à ses concepteurs.

    J’aimerais toutefois effectuer une opération, mais ne sais comment faire. J’ai mis en place sur le site de ma Mairie le plugin newsletter avec toutes ses dépendances. Sur le formulaire de contact, j’ai mis en place la case à cocher “j’accepte de recevoir la newsletter etc.”.

    Ce que j’aimerais c’est que, si l’internaute coche cette case, son email soit ajouté à ceux de ma liste de diffusion. Quelqu’un a-t-il réussi à mettre cela en place ? Merci d’avance pour des pistes ...

    Marc

    Reply to this message

  • 3

    Bonjour,
    Merci pour ce plugin que j’utilise avec plaisir.
    J’aurais quelques petits éclaircissements à vous demander si cela ne vous ennuie pas

    1 -Y a-t-il un moyen d’avoir plusieurs formulaires de contact différents sur le même site ?

    2 - Je ne comprends pas très bien pourquoi la liste des destinataires est aussi remplie (voir copie d’écran). par les visiteurs... Est-ce que cela peut se débrayer pour ne laisser que les auteurs “rédacteurs” et “administrateurs du site” ?

    3 - à ce sujet, pour être bien sûr d’avoir compris comment se fait le choix du destinataire :

    • 3-1 : cas où aucun destinataire n’est choisi dans la liste proposée en haut de la fenêtre de parametrage du plugin,
      Un formulaire appelé dans le corps d’un article par <formulaire|contact> sera envoyé à l’auteur par défaut (l’auteur 1, celui qui a installé le site) tandis que un formulaire appelé dans le corps d’un article par <formulaire|contact|auteur=xx> sera envoyé à l’auteur N° xx.
      => c’est correct ?
    • 3-2 : cas où un auteur a été choisi dans la liste
      Un formulaire appelé dans le corps d’un article par <formulaire|contact> sera envoyé à l’auteur choisi tandis que un formulaire appelé dans le corps d’un article par <formulaire|contact|auteur=xx> sera envoyé à l’auteur n°xx.
      => c’est correct ?
    • Un petit up… pour relancer sur les 3 points soulevés plus haut.
      Merci beaucoup d’avance !

    • Le plugin est juste un seul formulaire relativement simple, on ne peut pas en mettre plusieurs. Pour cela il y a le plugin Formidable qui est précisément fait pour ça.

      Le paramètre à la fin sert juste à pré-sélectionner d’après ce que j’avais compris (ce n’est pas moi qui l’ai ajouté), donc il faut qu’il soit déjà dans la liste malgré tout. Enfin il me semble.

    • La révision 94740 fait en sorte que les personnes ayant répondu au formulaire ne figurent plus dans la liste des destinataires potentiels.

    Reply to this message

  • 5

    Bonjour,
    Le formulaire fonctionne très bien mais quand je test, je ne reçois rien dans ma boîte mail !
    Quel peut être le problème ?
    Yann

    • Est-ce que tu reçois d’autres mails de notifications de SPIP ? Avant de tester les mails de ce plugin là spécialement il faut déjà être sûr que le site en général arrive bien à envoyer des mails. Donc ça peut être les mails de création de compte, ou sinon en installant le plugin Facteur et en utilisant le bouton de test dans son formulaire de config.

    • Bonjour,
      Tout d’abord merci d’avoir répondu.
      Alors voilà :
      Jusqu’à ce que j’installe facteur, je ne recevais pas de messages de spip non plus et là miracle depuis que je l’ai installé en utilisant SMTP : localhost ça fonctionne et j’ai reçu mon test et ton message.
      Par contre en utilisant PHP mail ça ne marche pas. Pourquoi ?
      D’autre part, si j’envois un message à pertir du formulaire de mon site public, le formilaire de contact me dit que le message est envoyé mais je ne reçois rien.
      J’y perds mon latin ! :-)
      Yann

    • Bah PHP mail() il faut que ton hébergement ait cette fonction activé hein (et bien configuré), donc ça dépend où… Dans les hébergements gratuits pas souvent par exemple, et en local encore moins. D’où le fait de pouvoir configurer explicitement le serveur d’envoi (SMTP) avec le plugin Facteur.

    • Merci beaucoup RastaPopoulos ! :-)

      Ca marche correctement maintenant ! Super !

    • J’ai également un souci avec la fonction imprimer de socialtags mais je l’ai posté dans socialtags

    Reply to this message

  • 3

    Bonjour,
    Après mise à jour de spip 3 vers spip 3.1 (et Version 0.15.5 de ce plugin contact), je vois apparemment un petit “bug” quand j’envoi un message avec le formulaire. (peut-être que c’est plus ancien et que je ne l’avais pas vu)
    Avec la prévisualisation, j’ai un message : “Il y a 2 erreurs dans votre saisie, veuillez vérifier les informations.” Sauf que je ne vois pas d’erreurs dans ma saisie (les champs obligatoires sont remplis), et quand j’envoie le message en confirmant l’envoi ça part, et je reçois le message.
    C’est gênant car ça peut dissuader l’envoi en faisant croire à une erreur.

    exemple ici : http://art-engage.net/Contact-artiste-David-Myriam.html

    Merci pour toute piste utile

    • Mais peut-être que ça concerne plutôt le plugin Saisies ?
      Je vais poster sur sa page également...

    • Ça devrait normalement être résolu avec ça :
      http://zone.spip.org/trac/spip-zone/changeset/94696

      Depuis 3.1, il y a un message d’erreur global ajouté dès qu’il y a au moins une erreur dans l’un des champs. Sauf que la prévisualisation est activée avec une FAUSSE erreur dans le tableau des erreurs du formulaire (exprès pour que ça ne passe pas aux traitements). Du coup il faut mettre explicitement un message global VIDE quand on sait qu’il n’y a pas de vraie erreur, mais juste la prévisu.

    • Ok, j’ai testé, ça marche nickel.
      Merci !

    Reply to this message

  • Bonjour,

    Sur un site en 3.0.21
    à chaque visite de la page /ecrire/?exec=admin_plugin

    j’ai l’encadré :
    Installation du plugin Formulaire de contact avancé
    Installation réussie

    Le site fonctionne bien donc je n’ose pas tripatouiller les réglages.

    merci
    dd

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom