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

  1. $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.

Dernière modification de cette page le 14 février 2019

Discussion

457 discussions

  • Bonjour,
    Pensez-vous qu’il serait possible de définir un nouveau champ intégré au plugin sur le principe de l’infolettre - case à cocher avec texte personnalisé pour la RGPD afin d’être en conformité sans avoir à bidouiller les pages ?
    Merci d’avance pour votre retour.
    Cordialement
    Jérôme

    Répondre à ce message

  • 5

    Bonjour à tous !

    Je souhaite juste ajouter un commentaire sur la doc.
    J’ai souhaité ajouter un champ dans mon formulaire de contact. Le problème c’est que je ne savais pas ou cela s’ajoutait : directement dans le formulaire ou dans le paramétrage côté back-office ?

    Du coup après un simple rafraichissement du cache de mon navigateur... mon nouveau champ est apparu dans le paramétrage (Back-office/interface d’administration). Je pense qu’il faudrait le préciser dans la documentation. Qu’en pensez-vous ?

    • heu, je ne comprend pas en quoi un rechargement a pu ajouter le champ. Tu as du faire quelque chose d’autres, et c’est ca qu’il faudrait ajouter à la doc ;-)

    • Merci pour ta réponse Maïeul !

      le problème c’est qu’avec le code que j’ai ajouté hier (celui de la doc dans mes_options.php)... pas de nouveau champ que ce soit côté utilisateur et/ou côté administrateur... et ce matin en ouvrant mon navigateur et l’interface administrateur, le champ est apparu !

    • tu avais fait un recalcul du cache ?

    • Oui j’ai essayé, en ajoutant &var_mode=recalcul, mais ça ne fonctionne pas. Du coup j’ai trouvé une solution.

      Pour afficher mon champ, j’ai dû passer par l’interface admin > gestion des plugins > l’icône configuration (clé/marteau). Le champ s’ajoute correctement !

      Si ça peut aider quelqu’un.

    • Ça s’ajoute dans un pipeline oui, donc il faut recalculer les pipelines en allant dans la page d’admin des plugins (seulement ça suffit).

    Répondre à ce message

  • 2

    J’ai une question concernant les langues : sur la page ecrire/ ?exec=configurer_contact il y a un champ « Introduction ». Dans ce bloc de texte on insère du texte dans une seule langue. J’ai rempli en français, la langue par défaut.

    Le formulaire est multilingue et s’adapte automatiquement en anglais quand on est sur des pages déclarées en anglais, sauf cet encart de texte qui reste en français en plein milieu d’une page en anglais.

    Quelqu’un a une idée ?

    Répondre à ce message

  • 10

    J’ai mis l’abonnement à l’infolettre sur mon formulaire. J’utilise MailSubscribers pour gérer les abonnement à la newsletter. Lors de mes essais, l’abonnement ne se fait pas... Une piste ?

    Merci d’avance.

    • EtienneJ

      Bonjour,

      J’utilise aussi « Mailsubscribers » et j’ai le même problème de pouvoir gérer l’inscription aux infolettres depuis un formulaire « Contact avancé » (pas possibilité d’activer le choix des infolettres) ou « Formidables » (le choix des infolettres s’affiche dans ce dernier mais ne s’enregistre pas à la validation).

      Je suis donc également preneur d’une solution !

      Amicalement.

    • EtienneJ

      Merci, je vais voir ça, cette extension avait complètement échappé à mes recherches !

    • normal, elle est pas documenté.

      Si cela marche, il faudrait contacter tcharllss je pense pour lui proposer de rédiger une doc.

    • EtienneJ

      Oui, je viens de l’installer, elle fonctionne et abonne correctement aux listes.

      Amicalement.

    • super !

      Est-ce que tu te sentirais de faire une doc (en ayant demandé préalablement à Tcharllss ?)

    • Hu hu, j’avais fini par oublier l’existence de ce plugin !
      Il n’est pas documenté, mais facilement trouvable sur plugins.spip.net en cherchant avec « formidable » tout de même.
      Je ne saurais pas trop quoi mettre dans la doc, il n’y a vraiment pas grand chose à dire.
      Mais n’hésitez pas si vous voulez.

    • Super. Même une doc simple sur contrib est mieux que pas de doc. Car sans doc, ce n’est pas trouvable, sauf si on connaît un peu les arcanes de SPIP.

    • C’est fait, j’en ai proposé un dans la rublique Formidable (Intérêt, Installation, Utilisation). J’ai inséré l’icône de l’extension et quelques mots-clefs, mais je n’ai pas l’habitude de ce type de contribution pour peaufiner plus.

    • ne t’inquiète pas, on a des administrateurs qui te feront des retours

    Répondre à ce message

  • Bonjour
    je ne sais plus comment changer l’expéditeur du mail (email)
    merci pour votre aide
    Natacha

    Répondre à ce message

  • 1

    Bonjour,
    il ne semble pas prévu pour le formulaire de contact l’ajout de la case à cocher « RGPD compatible » qu’il est désormais nécessaire de faire figurer, serait-ce que je n’ai pas assez cherché ? Ou bien est-ce une mise à jour prévue ? Pas prévue ?

    Merci d’avance de votre aide ! Et bonne journée à tous :)

    • Bonjour Sandra,

      Une bidouille que j’ai mis en place avec le plugin « contact libre » mais qui devrait marcher sur « contact avancé », c’est de mettre en dur dans le fichier contact_libre.html après

      1. <legend><:envoyer_message:></legend>

      le code suivant :

      1. <p> En cliquant sur "envoyer un message" vous marquez votre accord avec notre <a href="#URL_ARTICLE{4}">politique de confidentialité</a>.</p>

      Je sais, le dur c’est pas beau, mais ça marche.. Si quelqu’un a une autre solution, je suis preneur :)

    Répondre à ce message

  • 7

    Lorsque la case « Sauvegarder les messages de contacts » est cochée est-on supposé pouvoir accéder aux messages dans l’admin ? Car là je cherche mais je ne vois rien (pourtant les messages sont bien dans la base).

    Et je remarque aussi que les personnes qui remplissent le formulaire sont enregistrées dans la table spip_auteurs ? Est-ce voulu ? Comment empêcher cela ?

    Je n’aime pas trop laisser des données perso traîner sans pouvoir les supprimer (là il faut aller dans la base, c’est pas pratique pour les non-webmestres).

    Merci
    dd

    • 1- On accède aux message dans l’admin via des adresses de type ecrire/ ?exec=message&id_message=xx qui sont envoyé par mail au(x) destinataires du message.

      2- Le mail de l’internaute ayant rempli le formulaire de contact est considéré (sauf si le mail est déjà en base pour un rédacteur par exemple) comme étant celui d’un visiteur du type contact et à ce titre il est disponible dans le privé sur la page des visiteurs.

      Et voilà...

      Exercice réalisé aujourd’hui avec SPIP 3.0.21.

      En revanche je n’ait pas tester avec « décocher tous les items de la liste des destinataires » mais si les messages apparaissent en base alors il sont consultable dans l’espace privé :)

    • On accède aux message dans l’admin via des adresses de type ecrire/ ?exec=message&id_message=xx qui sont envoyé par mail au(x) destinataires du message.

      N’existe-t-il pas d’inferface listant les messages pour pouvoir les consulter ?

      Il n’y a pas non plus de possibilité d’export ?

    • Ce plugin a déjà beaucoup (trop) augmenté depuis sa base, qui était de permettre une configuration (donc mieux que ecrire_auteur) mais une configuration simple et unique.

      Si on veut vraiment gérer des réponses, lister, trier, exporter, etc : c’est le plugin Formidable qui fait ça.

    • Oui mais Formidable n’a pas la fonction d’envoi de fichiers :)

    • Ça marche pas..
      Accès via le compte webmestre à l’adresse :
      www.site.com/ecrire/?exec=message&id_message=25

      donne : Vous n’avez pas le droit d’accéder à la page message.

      dd

    • Bonjour,
      J’avais le même problème. Voilà ce qui se passe :
      Lors de l’enregistrement du message, il est indiqué un id_auteur dans la table spip_messages (et un auteur est créé, ou reconnu).
      -  si cet id_auteur est le vôtre, le message apparaîtra dans la boite d’envoi.
      -  si cet id_auteur n’est pas le vôtre, vous aurez ce message d’erreur, et rien n’apparaîtra dans l’interface « Messagerie de contact ».
      -  si vous effacez (dans la base) ou remplacez par 0 cet id_auteur, vous verrez le message dans la boite de réception (avec vide dans la colonne « de »).

      Je croix qu’il faudrait modifier légèrement le code pour ne pas remplir ce champ puisqu’il ne faut pas toucher au code de spip !
      Et sûrement ne pas créer un nouvel auteur (avec le champ nom et l’émail, avec un statut contact, et un login Null), mais c’est une autre discussion. Cela empêcherait de pouvoir « répondre » dans l’admin spip, mais cela me paraît peut utile.
      Cordialement,

    • Je me réponds après avoir regardé plus en détail.
      Le message apparaît dans la boite de réception lorsque la correspondance entre le destinataire(id_auteur) et le message (id_message) est faite dans la table spip_auteurs_liens.
      Ce lien est établi à l’enregistrement du message.
      Les modifications du destinataire ou de l’auteur dans la table spip_message ne servent à rien (mea culpa...).

    Répondre à ce message

  • 5

    QQun a-t-il réussi à intégrer le reCAPTCHA de GOOGLE sur ce plugin ?
    Nous avons été spammé par un robot qui a balancé +65000 emails en qq heures... il y a urgence pour nous à mettre en place un CAPTCHA sur notre formulaire de contact !
    Problème : celui-ci s’affiche bien, mais niveau traitement le plugin ne semble pas prévu pour intégrer ce genre de chose...
    Qqun sait-il quel est le fichier à modifier pour cela dans le code du plugin... ? Dans quelle fonction ce dernier doit se greffer... ?
    Merci vivement pour toute aide.

    Répondre à ce message

  • Laurent J

    Bonjour
    L’envoi des mails via le formulaire de contact ne semble pas fonctionner quand plusieurs destinataires sont sélectionnés...
    #FORMULAIRE_CONTACT
    Plugin « Formulaire de contact avancé v.0.16.5 »
    SPIP 3.2.1
    C’est le deuxième site sous SPIP 3.2.1 où je constate ce souci...
    Quelle peut en être la cause ?

    Répondre à ce message

  • 6
    jeromeD

    Bonjour,

    J’aurai besoin d’un coup de main sur un usage de ce plugin... Il me semble l’avoir installer correctement mais les mails ne partent pas sur un site réalisé...
    J’ai modifié le fichier uniquement pour éviter l’étape de prévisualisation (choix de l’utilisateur final).
    Je vous donne l’URL https://cogenevois.com/spip.php?page=contact&lang=fr si l’un d’entre vous arrive à me dire pourquoi ? Vous pouvez faire des tests car cela ne fonctionne pas et si cela fonctionne cela arrive chez moi.

    Merci d’avance pour votre aide ?

    • Je n’arrive même pas à valider le formulaire là

    • jeromeD

      Bonsoir RastaPopoulos,
      Justement c’est bien mon soucis, le bouton n’a pas d’action...même si je remets le fichier source cela ne change rien.
      Je viens de le faire en remettant le fichier avec previsu si tu veux voir ?
      Merci d’avance

    • Oui, donc ça n’a possiblement aucun rapport avec le plugin. Il est plus probable que ce soit un problème dans l’intégration de ton site, un conflit javascript ou en CSS (des fois il y a des règles qui annulent les clics). Mais je n’ai pas vu d’erreur javascript dans la console pourtant…

    • jeromeD

      Et tu aurais une idée de comment contrôlé cela ? J’avais déjà regardé pour la console.
      Car pour les CSS, il n’y a rien en recouvrement qui semblerait l’annuler ou le camoufler.

    • Non là comme ça je n’ai pas d’idées d’où ça peut venir…

    • jeromeD

      merci quand même.
      Bonne soirée

    Répondre à ce message

Ajouter un commentaire

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