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

  • 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

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

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

    Répondre à ce message

  • Bonjours, je tente de mettre un placeholder dans les champs pour supprimer le texte du label, mais réussi pour le bloc texte, mail car ils étaient accessible via les fichiers mais impossible de trouver pour prénom et sujet, quelqu’un aurait une idée ? merci beaucoup

    Répondre à ce message

  • 2

    Bonjour ,
    j’utilise depuis quelques années ce plugin qui fonctionne très bien Je suis actuellement sous spip 3.0.17 avec le plugin dans sa dernière version 0.15.5

    Je souhaiterai ajouter un champ « classe ». J’essaye de suivre la procédure pour créer un nouveau champ mais je ne comprends ce que vous voulez dire par point d’entrée.

    J’ai donc créé un fichier mes_options.php dans le répertoire config/ en y insérant le code

    <?php
    $GLOBALS['spip_pipeline']['contact_infos_supplementaires'] .= '|montruc_contact_infos_supplementaires';
    ?>

    c’est à l’étape suivante que je ne comprends pas. Dans quel répertoire je dois chercher la fonction insérée ? A quel dossier correspond ce que vous appelez le point d’entrée ?

    Ce sont sans doute des questions basiques mais après quelques recherches je ne trouve pas.

    Cordialement
    Renaud Hennino

    • Ya rien à chercher : c’est une fonction que TU dois créer, et qui s’insère dans le point d’entrée en questions. Donc tu crées la fonction dans le même fichier en ce qui te concerne puisque tu fais la méthode dans le fichier d’options.

      (Au passage tu peux modifier le préfixe hein « montruc » c’est un exemple… :D)

    • Bonsoir,
      désolé mais je ne comprends pas votre réponse. Merci tout de même d’avoir pris le temps de me répondre.
      Renaud H.

    Répondre à ce message

  • Bonjour,
    je souhaiterai que la personne qui a rempli le formulaire puisse avoir un N° unique en retour dans son email (pour faire un « RMA » = N° de retour atelier ).

    Je pensais mettre le N° du formulaire rempli (« Id » que l’on voit dans le tableau des réponses).
    Comment intégrer ce N° Id dans la réponse email SVP ?

    Merci d’avance.

    Répondre à ce message

  • 2

    Bonjour,

    Dans Sarka-SPIPr 4.5.1 j’ai coché dans Formulaire / Contact :

    • Formulaire du plugin « Contact Avancé »

    Puis paramétré « Contact Avancé » ainsi :

    • Permettre aux visiteurs de choisir plusieurs destinataires parmi la liste sélectionnée ci-dessus
    • Décocher tous les items de la liste de destinataires

    J’ai sélectionné deux destinataires et lorsque je vais sur « Contact » je peux cliquer sur « Envoyer un message » sans cocher un destinataire ! Rien ne se passe.

    Un internaute non averti suppose que son message est bien parti alors que non.

    Ai-je oublié quelque chose ?

    • Pourtant dans la fonction de vérification avant traitement, je vois bien :

      if (!_request('destinataire'))
          $erreurs['destinataire'] = _T("info_obligatoire");

      Ce qui veut dire que si on envoie aucun destinataire, c’est censé générer une erreur…

    • Mais dans mon cas il ne se passe rien et l’internaute peux supposer que c’est parti.

      Mais où mettre :

          if (!_request('destinataire'))
              $erreurs['destinataire'] = _T("info_obligatoire");

      Pour y voir une erreur ?

    Répondre à ce message

  • 4

    Bonsoir,
    Spip 2.1.26 et Formulaire de contact avancé 0.8.7

    Quand le formulaire est renseigné et envoyé, l’adresse de « l’expéditeur » du message est celle de l’auteur à qui est envoyé le message...
    Je souhaiterais que l’adresse de l’expéditeur soit celle qui est indiquée dans le formulaire par le visiteur qui l’envoie.
    Ce serait plus facile pour lui répondre.
    C’est ainsi que fonctionne le formulaire « ecrire_auteur » classique de spip.
    Est-ce possible ?

    Merci d’avance

    • Bonjour,
      Pas de réponse ?
      J’ai déjà tenté d’explorer le fichier contact.php, mais mes connaissances en php sont très très limitées...

      Merci
      Luc

    • Dans ce formulaire tout simple, c’est le site qui envoie des notifications aux gens (et d’ailleurs moult serveurs de mails détectent comme spam lorsque des emails sont envoyés par un serveur qui n’est pas réellement celui de l’email de l’envoyeur).

      En revanche il y a bien l’information « répondre à » (Reply-To) qui est renseignée, et qui permet de répondre directement à la bonne personne ensuite.

    • Merci de la réponse

      Pour mon cas, l’action « répondre au message » ne sélectionne pas la « bonne personne » mais seulement l’adresse de l’expéditeur, c’est à dire celle qui a reçu le message...

    • Mmmh le code me dit pourtant que le « repondre à » contient la valeur de l’email du visiteur qui remplit le formulaire :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/contact/trunk/formulaires/contact.php#L440

    Répondre à ce message

  • Bonjour,

    Je ne comprends pas mon site est multilingue. J’ai installé le plugins et dans toutes les langue quand je clique sur « Contact » c’est le formulaire arabe qui s’affiche avec l’auteur choisi. 9a fait un moment que je galère, est ce que quelqu’un peut m’aider svp ? Merci.

    Répondre à ce message

  • 8
    crazyspip

    Bonjour,

    En premier lieu, merci pour ce plugin que j’utilise très régulièrement. Il vaudrait largement d’être intégré au noyau de spip.

    J’ai réalisé un site qui est candidat à l’obtention d’un label d’accessibilité. Le premier rapport vient de tomber et une des correction à apporter est liée à ce plugin-ci. Voici ce que dit le rapport :

    « Dans le formulaire de contact les erreurs sont bien indiquées mais lorsque l’on envoie le formulaire, s’il y a une erreur le focus revient au titre juste en haut du formulaire. Pour comprendre qu’il y a une erreur il faut reparcourir tout le formulaire. Ajoutez un message en haut du formulaire pour dire qu’il y a des erreurs à corriger, idéalement en mentionnant dans quels champs (...) en indiquant bien chaque champ par son intitulé exact »

    Comment corriger ça ?
    Je suis en spip 3.0.17 et Formulaire de contact avancé 0.11.1.

    • Il faut améliorer la fonction « formulaires_contact_verifier_dist » et presque à la fin (avant l’histoire de la prévisu), s’il y a au moins une vraie erreur, il faut ajouter au tableau des erreurs une entrée « message_erreur » avec une phrase globale à tout le formulaire.

      Tu peux le faire chez toi en attendant, mais si ça marche tu peux demander un compte sur spip-zone et l’envoyer dans le plugin.

    • crazyspip

      OK, parfait. Vais tâcher de trouver un dev qui peut me faire ça parce que ce n’est pas dans mes cordes. Merci Rastapopoulos !

    • crazyspip

      OK, parfait. Vais tâcher de trouver un dev qui peut me faire ça parce que ce n’est pas dans mes cordes. Merci Rastapopoulos !

    • À noter que SPIP 3.1 intègre maintenant un message global automatiquement pour tout formulaire CVT, s’il n’est pas déjà renseigné par le dev qui a fait le formulaire.

    • Pour info j’observe (SPIP 3.0.17 et version du plugin 0.15.3) que ce message .reponse_formulaire_erreur s’affiche bien en haut de page si je suis authentifié mais que sinon il ne s’affiche pas (et n’est pas présent dans le code généré). Je ne vois pas de restriction dans formulaires/contact.html et suis donc perplexe. Dès lors que c’est bien dans le plugin comment faire pour l’afficher pour tous les utilisateurs svp ?

    • Il n’y a rien dans le plugin qui ajoute de message général quand il y a une erreur.

      Le seul moment où « message_erreur » est rempli dans CVT c’est dans l’ajout qui a été fait pour dire d’où vient le formulaire avec le deuxième paramètre « trace » :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/contact/trunk/formulaires/contact.php#L154

      Mais ce message n’a pas de rapport avec le message global ajouté dans la 3.1.

    • Je faisais référence à la ligne 10 de http://zone.spip.org/trac/spip-zone/browser/_plugins_/contact/trunk/formulaires/contact.html :

      [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]

      Ce message signale qu’il y a une erreur dans le formulaire. Sans lui on affiche le formulaire et il faut scroller jusqu’au champ concerné pour voir qu’il y a une erreur. Ce n’est pas la même chose ?

      Or ce message ne s’affiche que si je suis authentifié.

    • La ligne que tu indiques n’est absolument rien d’autre qu’un affichage du contenu de #ENV{message_erreur} lorsque cette variable est remplie.

      C’est donc parfaitement de la même variable dont je parle dans le message précédent. Et je dis que dans ce plugin, cette variable n’est remplie qu’à la ligne donnée précédemment, pour l’erreur concernant la « trace ». Donc si c’est autre chose que ça, ce n’est pas dans ce plugin que « message_erreur » est rempli.

    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