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

  • RE : il me manque le mail
    impossible de rejoindre le correspondant
    le mail utilisé pour la reponse est l’adresse free par defaut du compte
    xxx@free.fr
    cette adresse n’est pas configuré dans spip je ne sais pas ou l’appelle a la fonction mail se fait et comment il a recupéré cette adresse
    merci

    probleme resolu par l’installation du plugin facteur
    avec aucun parametrage de ce plugin j’ai maintenant <**site**>mail de l’expediteur dans la demande de renseignement

    merci pour tous

    Répondre à ce message

  • 1

    RE : il me manque le mail
    impossible de rejoindre le correspondant
    le mail utilisé pour la reponse est l’adresse free par defaut du compte
    xxx@free.fr
    cette adresse n’est pas configuré dans spip je ne sais pas ou l’appelle a la fonction mail se fait et comment il a recupéré cette adresse
    merci

    • RastaPopoulos

      Est-ce que vous avez le plugin Facteur ?

      Je viens encore d’essayer avec ET sans, et dans les deux cas j’ai bien l’adresse demandée dans le formulaire en tant qu’expéditeur du mail (le champ « From » ou « De », dans le lecteur de courriels).

      Par exemple là je viens de taper l’adresse « truc@machin.com » dans le formulaire. Et quand le mail arrive, dans le champ « De » de Thunderbird, j’ai cette ligne :
      « Nom de mon site  »

      Et quand on fait répondre, ça répond bien à l’adresse tapée. Je n’arrive pas à reproduire votre bug.

    Répondre à ce message

  • 2

    Je cherche désespérément l’interface de configuration. Comment y accéder ?

    • Pierre_31

      Se rendre sur la page de configuration :
      url_de_mon_site/ecrire/?exec=cfg&cfg=contact

    • RastaPopoulos

      Plus généralement, il faut aller sur la page « Configuration -> CFG » ou bien tout simplement sur la page de gestion des plugins, sur la ligne affichant les plugins configurables, il y a une icône « outils » sur laquelle on peut cliquer pour configurer.

    Répondre à ce message

  • 1

    formulaire super simple a configuer
    http://assau.free.fr/hand/spip.php?article3
    juste l’adresse mail de celui qui le rempli ne m’ai pas communiqué
    dur dur de lui repondre

    • RastaPopoulos

      juste l’adresse mail de celui qui le rempli ne m’ai pas communiqué dur dur de lui repondre

      Ben normalement l’adresse de celui qui répond n’est pas dans le contenu du mail, mais tout simplement en tant qu’expéditeur du mail. Non ?

    Répondre à ce message

  • 1

    Bonjour,

    Génial mais...
    Si je force le recalcul de la page ou si je viens juste de vider le cache j’ai l’erreur :

    Fatal error : Allowed memory size of 8388608 bytes exhausted (tried to allocate 19456 bytes) in /home/ventedir/www/ecrire/public/composer.php(73) : eval()’d code on line 304

    Avec un cache de 24h, je suppose que l’erreur se produit chaque jour...
    Très très ennuyeux...

    Que faire alors ? une idée ?

    • RastaPopoulos

      Votre PHP est configuré pour utiliser seulement 8Mo de mémoire. C’est extrêmement peu ! Il faut au minimum 16Mo. Et si vous pouvez, plus.

    Répondre à ce message

  • 3

    Bonjour et merci pour le formulaire avance.

    Quand j’essaye d’envoyer un message, j’ai le message d’erreur suivant après avoir cliqué sur « Envoyer un message »

    Warning : rawurldecode() expects parameter 1 to be string, array given in ..../ecrire/inc/filtres.php on line 1762

    Quand je force l’envoi du message j’ai l’erreur suivante :

    Warning : rawurldecode() expects parameter 1 to be string, array given in .../ecrire/inc/filtres.php on line 1762

    J’ai activé Document à télécharger + installé le plugin Facteur. Je suis sous Spip 2.08

    Et le mail n’arrive pas...

    Merci pour ton aide

    • RastaPopoulos

      Comme déjà vu dans plusieurs autres messages en dessous :

      1. Ce n’est pas un bug bloquant, il n’empêche pas le courriel de partir.
      2. Ce n’est pas un bug du plugin mais de SPIP et il a normalement été corrigé.

      Pour ne plus avoir le bug, il faut donc mettre à jour SPIP. Soit en le récupérant par SVN si vous savez le faire. Soit il faut attendre la sortie de la version 2.0.9 qui intègrera le correctif.

    • RastaPopoulos

      Si le mail n’arrive pas, c’est une autre erreur qui n’a rien à voir avec le rawurldecod().

      As-tu bien configuré le plugin Facteur afin qu’il envoie avec le SMTP de ton choix ?

    • Merci pour tes réponses « super - rapides » :-)

      J’essaye d’utiliser de préférence php mailer.
      Quand je fais un test de configuration de facteur, je reçois bien un message du site.

      J’ai essayé plusieurs variantes pour le formulaire, mais rien ne semble passer.

      J’suis perdu

    Répondre à ce message

  • 1

    Bonjour,

    Intéressant pour certains usages. Mais il est dommage qu’il remplace le formulaire par défaut pour écrire à un auteur. Avoir les deux serait bien pratique (par exemple un formulaire général développé pour le site et des formulaires simples pour contacter les auteurs).

    • Mais de quoi parlez vous ? En quoi remplace-t-il celui des auteurs puisqu’ils n’ont pas le même nom ?

      #FORMULAIRE_CONTACT

      #FORMULAIRE_ECRIRE_AUTEUR

      Deux formulaires, deux usages différents.

    Répondre à ce message

  • 1

    Bonjour, je cherche désespérément la même chose, mais pour les sites. Le formulaire de base est trop limité. Existe-t-il un formulaire configurable s’appuyant sur « Champs Extras 2 » (je suis sous Spip 2.0.8) et auquel on peut ajouter des champs, lesquels champs apparaissent dans l’interface privée une fois le formulaire de sites soumis ?

    Répondre à ce message

  • 1

    Il manque un necessite dans plugin.xml : je suis en train de l’installer sur SPIP 2.0.8, mais ce plugin ne fonctionne pas sans CFG ;-)

    Répondre à ce message

  • 1

    Salut à tous,

    je viens d’installer se formulaire de contact sur mon nouveau site. Ca marche très bien par contre je trouve qu’il ne rend pas super bien niveau esthetique.

    J’aimerai changer un peu la forme du formulaire.
    En effet, les champs pour entrée les informations s’affiche sur toute la largeur de la page se qui n’est pas jolie.
    Peut on réduire la taille et modifier le positionnement de ces champs ? et si oui comment ?

    merci

    • Le formulaire utilise la structure HTML et les styles CSS par défaut préconisés dans SPIP. S’il s’affiche mal, c’est donc uniquement dû aux feuilles de styles utilisées sur votre site. Il faut donc modifier vos styles afin d’avoir le rendu visuel voulu.

      À mon sens, la méthode la plus simple pour styler les formulaires, c’est d’utiliser la feuille « spip_formulaires.css » fournit par défaut dans SPIP, et de la surcharger ou de l’améliorer en fonction de ses propres besoins.

      Y a-t-il une URL publique pour que je puisse voir plus facilement le problème ?

    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