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

    Bonjour je viens d’installer ce plugin,mais je ne sais pas où installer ce code : .Appel classique
    #FORMULAIRE_CONTACT

    Appel avec l’auteur 34 pré-selectionné
    #FORMULAIRE_CONTACT34

    Appel AJAX (sans rechargement de la page)

    #FORMULAIRE_CONTACT

    Une petite explication serait la bienvenue SVP (je suis assez nul )

    Merci

    • RastaPopoulos

      Ben euuuh, je ne sais pas trop quoi dire de plus, c’est marqué en titre de chaque exemple :

      Dans un squelette : #FORMULAIRE_CONTACT

      Dans un contenu (un article par exemple) : <formulaire|contact>

    Répondre à ce message

  • 1

    J’ai également les mêmes warnings pour le formulaire que j’ai besoin d’installer.
    Le message n’arrive pas, même s’il est indiqué qu’il est parti.

    Est-il vraiment nécessaire d’installer le spip-branche ?
    Y’a-t-il une version du formulaire que je pourrais utiliser ?

    Lucie

    • RastaPopoulos

      Comme déjà dit maintes fois, pour les warning il faut la version 2.0.9 de SPIP car c’était un bug de SPIP et non du plugin. Et vous devez de toute façon absolument mettre à jour votre version puisque c’est une mise à jour de sécurité majeure (cf. toutes les annonces sur chaque site de la communauté).

      Pour le fait que le courrier n’arrive pas, là c’est plus probablement un problème de votre serveur où est hébergé le site. Est-ce que d’autres mails partent du site (notifications de publication, etc) ?

      Sûrement que la fonction mail() de PHP ne marche pas (chez Free elle est désactivée par exemple).

      La solution la plus simple est d’installer le plugin Facteur, qui vous permettra de configurer un serveur de mail perso (comme dans votre logiciel de courrier habituel). Cliquez sur « Téléchargement » en haut et cherchez Facteur.

    Répondre à ce message

  • 1

    J’ai installé le formulaire avancé qui fonctionne bien en mode saisie et envoi par messagerie.
    Est-il possible également de récupérer les données du formulaire dans une table Mysql ? Mon hébergeur est free.

    Merci pour la réponse

    • RastaPopoulos

      C’est quasiment fini de développé cette fonctionnalité. Ça sera ajouté dans une prochaine version.

    Répondre à ce message

  • 1

    Bonjour,

    Le formulaire fonctionne parfaitement sur mon SPIP 2.0.7.

    Juste une petite question : la liste des destinataires possibles s’affiche automatiquement sur 3 colonnes. Que faut-il modifier pour augmenter le nombre de colonnes ?

    Merci d’avance,

    Christophe

    • RastaPopoulos

      C’est juste le style par défaut défini dans la feuille de style « spip_formulaires.css » par défaut de SPIP.

      Le style de « ul.choix_mots li » a une largeur de 30%, soit environ un tiers.

    Répondre à ce message

  • 1

    La réponse à mon test comme promis :

    Je l’ai fait « à l’arrache », mais cela semble fonctionner.

    1- J’ai téléchargé l’archive « SPIP-branche-2.0.zip », et je l’ai décompressée.

    2- Je me suis connecté sur le serveur distant hébergeant mon site, j’ai archivé les répertoires ecrire, local, prive, squelettes-dist et tmp ainsi que les fichiers CHANGELOG.txt, htacces.txt, INSTALL.txt, spip.php et svn.revision pour pouvoir les réinstaller si problèmes.

    3- J’ai transféré ceux (répertoires et fichiers) portant le même nom depuis l’archive décompréssée mentionnée en 1.

    4- Je me suis reconnecté sur le site (public et espace privé) , le serveur m’a demandé de modifier les droits sur les répertoires tmp et local (cela ne me parait d’ailleurs pas très fiable pour la sécurité).

    5- Le serveur m’a demandé de valider la mise à jour de la bdd côté espace privé, elle s’est déroulée sans problème.

    6- J’ai testé à 2/3 reprises le formulaire, plus de message « warning... » et les mails sont bien arrivés à destination.

    J’ai comparé ma version en local et ma version distante de SPIP. En local, je suis en 2.0.7 (sous OSX 10.5.7 avec serveur MAMP 1.7).
    Le serveur distant est lui sous Linux (équipement informatique de l’université de Caen) avec la version 2.0.8.

    Je ne suis pas un spécialiste mais je pense que le problème doit plus venir de la différence des versions de SPIP que des serveurs. Je n’avais pas fait attention lorsque j’avais installé la version distante au n° de révision.

    Voilà pour le retour.

    Merci pour les infos et la rapidité.

    • RastaPopoulos

      Oui c’est ce que je disais : le bug de rawurlencode est un bug de SPIP. Mais il est aussi dans le 2.0.8. En installant la version que j’ai donné en lien, c’est la future version 2.0.9 (cad la 2.0.8 + les modifs qui ont été faites depuis sa sortie).

      Tout est bien qui fini bien.

    Répondre à ce message

  • 2
    gilles klein

    Merci pour la réponse (très) rapide. :)

    Je m’entête depuis deux bonnes heures à comprendre cette erreur : les mails semblent partir, mais ils n’arrivent pas.

    j’ai vérifié les adresses mails des destinataires. J’ai regardé dans les spams. Aucune trace des mails.

    Ci dessous le derniers log du fichier spip.log (pour éviter les robots spameurs, j’ai remplacé ici @ par trois petits points).

    « gilles klein a envoyé un mail à12 32

    — Envoi via le site Centre Iris... (http://www.centre-iris.fr/) —

    Jul 29 12:32:31 86.74.35.66 (pid 2868) Meta email_envoi invalide. Le mail sera probablement vu comme spam.
    Jul 29 12:32:31 86.74.35.66 (pid 2868) mail gilleskleininfos...gmail.com, caroline.gaume...63com.com
    essai envoi mail
    X-Originating-IP : 86.74.35.66
    From : gillesklein...mezimail.com (gillesklein at mezimail.com)
    Reply-To : gillesklein...mezimail.com (gillesklein at mezimail.com)
    Content-Type : text/plain ; charset=utf-8
    Content-Transfer-Encoding : 8bit
    MIME-Version : 1.0 »


    Je crains que ce soit un problème de configuration du serveur. Le site est installé sur le serveur windows du client.

    Mais je n’y connais rien, y a t’il un moyen de tester si c’est bien un problème du serveur ?

    • RastaPopoulos

      Est-ce que d’autres mails partent de SPIP ? Avec le formulaire auteur classique par exemple ?

      Dans ces cas, la première chose à voir est effectivement de s’assurer le que serveur sait envoyer des mails. C’est-à-dire que la fonction mail() de PHP fonctionne correctement.

      En cas de doute, vous pouvez utiliser le plugin Facteur, qui permet de configurer dans SPIP un autre serveur SMTP arbitraire. Ainsi, en utilisant le votre ou un dont vous êtes sûr qu’il marche, les courriers sont assurés de partir.

      Quand on a pas la main sur le serveur, c’est souvent le plus simple.

    • gilles klein

      Merci pour la réponse, je vais essayer facteur.

      Du coup j’utilise ce plugin pour d’autres sites installé sur un autre serveur et tout fonctionne à merveille. :)

    Répondre à ce message

  • ok, merci,

    désolé pour la répétition.

    J’essaierai cela ce soir et posterai le résultat, je suis à mon travail.

    Merci encore et bonne journée.

    Répondre à ce message

  • 1

    Bonsoir et merci pour ce plugin très pratique.

    J’ai moi aussi eu le fameux message :
    « Warning : rawurldecode() expects parameter 1 to be string, array given in /users/etu/2008/licpro/ppingaul/public_html/spip/ecrire/inc/filtres.php on line 1762 »

    Cela n’empêche pas les mails d’arriver.

    J’avais déjà testé le plugin auparavant sur d’autres sites dont le mien sans rencontrer aucun problème, y compris sur celui qui m’a remonté ce bug depuis lundi alors qu’il fonctionne dans le même environnement qu’auparavant (étonnant, non ?! - merci Monsieur Cyclopède).

    Plus sérieusement, je fonctionne avec la 2.0.8 et je n’ai pas trouvé de mise à jour. Savez-vous si ce bug a été corrigé depuis, à moins que je n’ai loupé un wagon, auquel cas je repars avec mes quatre piles (commentaires uniquement destiné aux nostalgiques de Pierre Desproges)

    Encore une fois merci.

    • RastaPopoulos

      Oui, comme je l’ai déjà dit, le bug a normalement déjà été corrigé sur la branche stable (2.0) du SVN de développement de SPIP.

      Pour l’avoir il faut donc

      Merci de confirmer si cela résout bien le problème.

    Répondre à ce message

  • 1
    gilles klein

    C’est peut-être une question un peu neu-neu, mais je ne vois pas ce plugin dans la liste des plugin accessible dans la partie admin. Ni dans formulaire... ni dans ’contact...’. Est-ce mes liens auto qui sont mauvais ou est-ce que ce plugin porte un autre titre ?

    • RastaPopoulos

      Il s’appelle : « plugin_contact | Formulaire de contact avancé ». Dans la liste venant de spip-contrib.

      Si on ne le voit toujours pas, il faut cliquer sur le lien « Mettre à jour les listes ».

    Répondre à ce message

  • 1

    Bonjour,
    J’aimerais mettre la mention « Veuillez indiquer une adresse email » en rouge lorsque l’on ne remplit pas un champ du formulaire. Quelle est la procédure ?
    Merci

    • RastaPopoulos

      C’est une chose qui n’est pas vraiment spécifique à ce plugin : les messages d’erreurs des formulaires qui suivent les recommandations de SPIP (c’est le cas de ce plugin), ont tous la classe CSS « erreur_message ».

      À vous ensuite de styler comme vous le désirez. Par exemple :

      .formulaire_spip .erreur_message{
              font-weight:bold;
              color:red;
      }

    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