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
    rija_tiana

    Bonjour,

    Avez-vous déjà rencontré ce problème ou avez vous une explication ? Pour le formulaire en ligne, il marche apparemment avec une adresse mail de chez cegetel.net et chez me.com mais visiblement les mails n’arrivent pas avec des adresses comme yahoo.fr, gmail.com ou hotmail.fr. Est-il possible que ce soit l’hebergeur qui bloque ces adresses ou... ??? C’est vraiment étrange. Voici le site que je suis en train de construire : http://www.expatodyssee.com/spip.php?rubrique27
    Merci de vos réponses.
    Est-ce trop de vous demander des coordonnées d’hébergeur fiable ?
    Merci

    • Ben ça peut venir de plusieurs endroits :

      • est-ce que l’hébergeur du site sait bien envoyer des mails avec la fonction mail() (il faut lui demander et lui indiquer les adresses qui ont l’air de ne pas passer)
      • sur quelle adresse est envoyé le formulaire : le serveur de mail n’a jamais de problème de réception ?

      Dans tous les cas, ce n’est probablement pas lié à ce plugin puisqu’il ne fait qu’utiliser la même fonction que SPIP, avec les mêmes paramètres.

      Alternativement, vous pouvez essayer d’ajouter le plugin Facteur, qui permet de configurer SPIP pour envoyer avec votre propre serveur de mail et non pas celui de l’hébergeur du site.

    Répondre à ce message

  • 1

    Hello,

    Juste une petite erreur de validation avec le code suivant dans le formulaire :

    <label for="destinataire"><:contact:form_destinataire:></label>

    Le for désigne un id qui n’existe pas. Je pense qu’on peut le supprimer.

    • Oui il y a en plusieurs endroits : un avec le select qui a bien un id, et l’autre avec les cases à cocher. Je l’ai supprimé dans ce cas.

    Répondre à ce message

  • rija_tiana

    merci de cette réponse rapide, je vais essayer

    Répondre à ce message

  • 1

    je ne reçois rien dans ma boîte non plus. Mac OS X en local poour le moment.

    Merci de me donner des indications.

    Cordialement

    • Avec mac osx et si votre serveur web est standard, c’est normal de ne pas recevoir de mail puisqu’il n’y a pas de mécanisme d’envoi.

      Par ailleurs, dans le cadre d’un site distant il se peut que selon là config de votre hébergement les mails mettent du temps à être envoyés, une chose à tenter est de renseigner l’adresse optionnelle d’envoi (dans la config de spip :
      onglet « intéractivité » > adresse email d’envoi optionnelle)
      avec une adresse utilisant le nom de domaine.

      Ne pas oublier de vider le cache, et éventuellement reconfigurer le plugin....

    Répondre à ce message

  • 1
    Jérôme

    Salut à tous,

    Moi j’ai installé ce plugins avec cfg et spip bonux. Il apparait parfaitement sur mon site mais je ne recois aucun mail.

    Apres des test d’envoi, il me demande bien de confirmer mon envoi et ensuite me confirme « message envoyé », cependant je ne recois rien dans ma boite.
    Quelqu’un a une idée du problème ?

    • cependant je ne recois rien dans ma boite

      Est-ce que vous recevez d’autres mails du SPIP ? Annonce de publication d’article, mot de passe oublié ou autre ?

      Si ce n’est pas le cas, c’est tout simplement que SPIP n’arrive pas à utiliser la fonction mail() de votre serveur.

    Répondre à ce message

  • 7

    Bonjour,

    Le plug-in est installé avec spip-bonux et cfg, cependant lorsque je configure les champs formulaire, j’ai ce message d’erreur.

    Warning : array_flip() [function.array-flip] : The argument should be an array in /mnt/143/sda/d/5/acidskunp/ecrire/public/composer.php(51) : eval()’d code on line 213

    Ainsi lorsque je reçoit un mail posté depuis le formulaire, je n’ai aucune référence, ni IP, et surtout ni adresse e-mail de la personne qui envoi le message, j’ai simplement le titre et le contenu du message, rendant la communication impossible puisque je ne sais pas à qui répondre.

    Merci pour l’info !

    • C’est corrigé pour l’erreur du array_flip, mais pour les autres points je ne reproduis pas. Le formulaire envoie bien l’adresse courriel du contact (c’est l’expéditeur) et l’IP aussi (dans les entêtes du message : X-Originating-IP).

    • Bonjour,
      L’erreur aray est maintenant juste, merci.
      J’aimerais bien supprimer « sujet [obligatoire] » ainsi que « texte de votre message[obligatoire] », Uniquement sur le plugin, j’ai beau triturer je ne récolte que des erreurs.
      Comment je doid faire.
      Merci

    • Il faut modifier formulaires/contact.php dans la fonction « verifier » pour enlever les tests sur les champs que vous ne voulez pas obligatoire. Ainsi que formulaires/contact.html pour enlever la mention « obligatoire » dans le HTML.

    • De ce pas j’y vais ,

      merci

    • Bonjour,

      Impeccable pour les champs obligatoires, mais je ne comprends pas, j’ai modifié les intitulés des champs à « contact_option.php » et « contact_fr.php » et une fois visible par le visiteur, !??, tout est mélangé, des champs qui devraient être en tête sont en bas, des champs qui devraient se suivre, sont séparés, et je n’ai pas modifié l’ordre.

      Une idée ?

      Merci

    • Bonjour, encore moi,

      À force de test, je remarque qu’en recevant ce courriel, il est sans (aucun objet), en attendant une nouvelle version de ce plugin si j’ai bien compris avec possibilité d’envoyer fichier joint, comment pourrais-je faire pour que ce courriel affiche l’objet de cet envoi.

      Merci, et encore bravo.

    • Salut,

      J’ai fais une bidouille à moi, c’est peut-être pas propre, mais en attendant c’est cool, j’ai supprimé (obligatoire) remplacé #ENVsujet_contact par mon titre qui reste fixe, et le tour est joué, y a sûrement mieux, mais en attendant....

      Merci et salut

    Répondre à ce message

  • 2

    Bonjour à tous,

    Merci pour ce plugin d’une très grande simplicité de mise en œuvre. Dans la configuration du plugin, j’ai coché l’option « Permettre à l’utilisateur de choisir les destinataires ». Lorsqu’un utilisateur remplit le formulaire, nulle part il lui est demandé à qui il veut l’envoyé ! Ai-je raté quelque chose ?

    Merci de vos/votre réponse(s) et bonne journée à tous.

    Gérald

    • Ai-je raté quelque chose ?

      Avez-vous sélectionné plus d’un auteur (donc au moins deux) parmi les destinataires possibles ?

    • Je n’avais pas percuté qu’il fallait sélectionner les différents destinataires dans la page de config !

      Merci

    Répondre à ce message

  • Bonjour,

    Je le trouve génial, il se prend facilement en main.

    Il fonctionne bien, ce qui n’empêche pas d’avoir cette erreur : Warning : array_flip() [function.array-flip] : The argument should be an array in /homez.34/maiquez/www/mbs/ecrire/public/composer.php(51) : eval()’d code on line 213 dans l’espace privé, un rapport ? avec le plugin

    Un grand merci à Pierre Fiches, et RastaPopoulos.

    Répondre à ce message

  • 1

    Bonjour , le formulaire fct tres bien mais j’aimerais savoir si il est possible d’ajouter une pieces jointe ?

    • j’aimerais savoir si il est possible d’ajouter une pieces jointe ?

      Bientôt bientôt. C’est prévu pour la version suivante avec une dépendance non-obligatoire au plugin Facteur (qui gère les fonctionnalités avancées de courriel, dont l’envoi de pièces jointes).

    Répondre à ce message

  • Hello :)

    Nickel ce plug,mais chez moi ca délire !

    Obtenu ce soir en testant un formulaire de contact, embeddé dans un article comme suis :

    <div class="ajax">
        <formulaire|contact|auteur=4>
    </div>

    en validant le message, en lieu et place du formulaire je récupère :

    {"$erreur":" ","$annuler":true} 

    Version :
    SPIP 2.0.6 [13835] + plugin version 0.3 [27505]

    C’est grave Docteur ???

    Merci pour vos retours :)

    EDIT : Pardon pour le bruit ! Corrigé en mettant Spip-Bonux à jour (j’avais qques rev de retard ^^)

    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