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

  • 7

    Bonjour à tous,
    J’utilise ce plugin sur de nombreux sites et sur l’un d’eux j’ai eu besoin de proposer l’envoi de pièces jointes.
    Je rejoins les discussions sur ce sujet puisque le fonctionnement du plugin n’est à ce jour pas satisfaisant : le destinataire reçoit le mail sans la pj, et lorsqu’il consulte le message dans l’espace privé elle n’apparait pas non plus.
    Les documents joints arrivent cependant bel et bien sur le serveur dans un dossier tmp/contact_pj.
    Il n’est pas envisageable pour moi que je demande à mon client de récupérer ces fichiers par FTP. Il va me rire au nez...

    Quelle solution alors ? Est-ce que cette question est en cours d’étude ? J’avais relevé cette discussion dans le fil des commentaires ci-dessous : http://contrib.spip.net/Formulaire-de-contact-avance?debut_comments-list=-1#forum461076. Est-ce que ce ne serait qu’une histoire de compatibilité entre plugins ?
    Merci pour vos réponses.

    • Ce n’est pas « en cours d’étude ». Quand les pièces jointes ont été ajoutée, dès le début ça envoyait tout bien par email sans aucun problème, ça a toujours marché comme ça. Si ça ne marche plus c’est qu’un bug est apparu peut-être…

    • Ah flûte... Alors pour ce qui me concerne, depuis le 16 mars 2015, et avec un spip et des plugins mis à jour dès que c’est nécessaire, mon client n’a jamais reçu aucun pièce jointe.
      Et les messages reçus ne sont pas listés dans l’espace d’admin (Activité > Messagerie de contact) sauf un : le tout premier qui date du lundi 16 mars 2015 (pas de trace d’envoi avant cette date).

    • Bon j’ai fait une correction, les boutons de suppression sont de retours, et ça envoie bien dans les emails :
      http://zone.spip.org/trac/spip-zone/changeset/95626

    • Merci Rastapopoulos. Je viens de mettre à jour et j’ai vidé les caches.
      Voici mes observations :
      Le dernier message posté par un visiteur via le site (avant ma mise à jour) me donne un « Accès interdit : Vous n’avez pas le droit d’accéder à la page message. » quand je cherche à le consulter via le lien inclus dans le mail.
      J’ai fait le test sans être authentifiée (et après ma mise à jour), idem.
      Si je suis authentifiée (je n’ai pas testé les différents rôles, je suis admin-webmestre) et que je poste un message, je peux le consulter mais ici : dans Messagerie interne > onglet Boîte d’envoi (.../ecrire/ ?exec=messages&quoi=envoi&typem=tout). J’y vois uniquement mes messages, pas ceux des autres utilisateurs (qui ne sont listés nulle part).

      Par ailleurs, le PDF joint pendant mes tests n’apparaissent ni dans le mail reçu, ni dans l’espace privé. Je les trouve bel et bien sur le serveur.
      On peut continuer en mj si tu veux.

    • Pour les emails c’est déjà bien envoyé comme il faut, je reçois bien tout.

      Pour dans le SPIP, je viens de faire ça :
      http://zone.spip.org/trac/spip-zone/changeset/95650

      Maintenant j’ai bien tout (par contre SPIP n’affiche pas les documents joints aux objets messages sur la page des messages :( ).

    • Alors ça me semble résolu après avoir fait un grand nettoyage, y compris dans la bdd.
      Je reçois désormais les pièces jointes par mail.
      J’accède au message via le lien inclus dans le mail reçu, que je sois authentifiée ou pas, avec un email connu ou non.
      Reste que :
      -  Je ne vois pas non plus les fichiers joints dans l’espace d’admin (mais je les trouve dans la médiathèque effectivement). L’idéal serait qu’on en ait une trace dans le corps du message qui indiquerait par exemple les noms des fichiers joints. Ce serait pas mal à défaut de résoudre la visibilité des pj elles-mêmes.
      -  Curiosité : Les messages que j’ai envoyés sous mon email de super-admin sont classés dans l’onglet « Boîte d’envoi ». Les messages que j’ai envoyés avec un email pas encore connu sont classés dans la « Boite de réception ». Mais c’est peut-être fait exprès ?
      En tout cas, l’affaire est résolue. Merci !

    • Un petit retour sur mon utilisation du plugin :
      -  depuis la dernière mise à jour, le nombre de pj n’apparait plus dans le corps du message reçu.
      -  les messages reçus sont à nouveau listés dans l’espace privé (mais dans l’onglet « Boîte d’envoi »).
      -  ils ne comportent pas d’indication du nb de pièces jointes attachées.
      C’est presque parfait donc :)

    Répondre à ce message

  • 1

    Bonjour,
    j’ai ajouté un champ supplémentaire mais ne vois pas comment modifier l’ordre, il apparaît en fin.
    Merci d’avance.

    • Bonjour

      J’ai réussi à le déplacer avec un simple sélectionner/glisser de la souris.

      J’ai ajouté un champ supplémentaire et je me retrouve avec 2 plugins identiques dans la liste, mais comme c’est simplement un pb d’affichage a priori ça ne me semble pas trop grave.

      Par contre, je voudrais mettre comme valeur de mon champ supplémentaire l’ID de l’article qui contient le formulaire et je ne vois pas comment faire. Je souhaites appeler le formulaire dans plusieurs articles et connaitre de quel article il a été posté.

      Merci d’avance

    Répondre à ce message

  • 1

    Bonjour à tous,

    Nous souhaiterions modifier légèrement la mise en forme de la notification envoyés aux contacts du formulaire généré par le plugin Formulaire de contact avancé. Il s’agirait de mettre en gras le label des champs dans le mail envoyé...

    J’ai essayé de faire cela de plusieurs façon mais rien à faire... Spip envoie toujours le mail de base...

    Est ce que quelqu’un aurait une piste ?

    Merci d’avance !

    Répondre à ce message

  • 2

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

    Répondre à ce 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

    Répondre à ce 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 !

    Répondre à ce 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 ?

    • http://www.spip.net/fr_article4453.html?var_recherche=debuggage#infos_plus

      <?php
      error_reporting(E_ALL^E_NOTICE);
      ini_set ("display_errors", "On");
    • 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.

    Répondre à ce 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

    Répondre à ce 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

    Répondre à ce 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.

    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