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

  • Bonjour,
    Je m’aperçois que les fichiers joints au formualire sont stockés comme des documents SPIP. Ils apparaissent donc dans la médiathèque mais ne sont liés à aucun élément connu et il est donc impossible de les supprimer.

    Sinon c’est très bien ; c’est le seul plugin de formulaire sous SPIP3 que j’ai trouvé pour joindre des fichiers.

    dd

    Répondre à ce message

  • Bonjour à tous,
    J’utilise ce plugin depuis pas mal de temps maintenant. Pour la première fois je viens de l’installer sur un site hébergé chez OVH et j’ai un bug.
    Le plugin envoie des mails vides et j’ai une phrase d’erreur : « Warning : wordwrap() expects parameter 1 to be string, array given in /homez.441/sophiaco/www/ecrire/inc/envoyer_mail.php on line 170 »

    J’ai regardé le fichier et la ligne dont il me parle mais je ne vois rien d’anormal.

    Quelqu’un aurait une idée ?

    Merci d’avance
    Olivier

    Répondre à ce message

  • 3

    Bonjour,
    j’utilise ce formulaire, mais quand je fais #FORMULAIRE_CONTACT{mail@mail.fr}

    mail@mail.fr ne reçoit pas le mail....qu’est ce qu’il faut faire pour que cela marche ??? Merci de votre aide

    • Lire la documentation, peut-être.

    • Désolé j’ai lu mais je ne vois pas de solution à mon problème !

    • Ben si tu as lu, tu as du voir qu’il n’y absolument aucune mention de l’écriture que tu indiques dans ton premier message. Ça n’existe pas. Donc il n’y a rien de bizarre à ce que tu ne reçoivent pas de mail.

    Répondre à ce message

  • 1

    Bonjour

    le formulaire installé dans un article, fonctionne parfaitement

    mais comment en modifier l’aspect (css)

    taille de carctères en particulier

    merci

    philippe

    • Bonjour,

      Voici un bout de css vous permettant de changer l’apparence de votre formulaire au travers de votre propre feuille de styles. (à personnaliser selon votre goût donc)


      #contact-text width:400px ;overflow:hidden ;float:left ;
      #contact-image padding-top:60px ;width:308px ;height:297px ;overflow:hidden ;float:right ;
      label float:left ;clear:both ;font-size:14px ;font-weight:100 ;color :#5e5e5e ;
      legend float:left ;clear:both ;font-size:14px ;font-weight:100 ;color :#5e5e5e ;
      input width:330px ;float:left ;clear:both ;background-color :#f1f1f1 ;border:0px ;margin-bottom:7px ;padding-top:2px ;padding-bottom:4px ;padding-left:10px ;padding-right:4px ;
      input#infolettre.checkbox width:30px ;float:left ;clear:both ;background-color :#f1f1f1 ;border:0px ;margin-bottom:7px ;padding-top:2px ;padding-bottom:4px ;padding-left:10px ;padding-right:4px ;
      textarea width:390px ;background-color :#f1f1f1 ;border:0px ;padding-top:2px ;padding-bottom:4px ;padding-left:10px ;padding-right:4px ;color :#000 ;float:left ;clear:both ;margin-bottom:15px ;
      .boutons inputpadding:5px ;font-size:14px ;
      .boutons input:hovercursor:pointer ;padding:5px ;background-color :#FFF ;
      form padding-bottom:20px ;
      #main.article #coldroite p margin-bottom:20px ;display:block ;
      fieldset.previsu margin-bottom : 20px ;margin-top : 10px ;font-size : 20px ;padding : 40px ;background-color : #cfffcb ;

    Répondre à ce message

  • Bonjour et merci pour ce plugin,

    j’utilise la version 0.8.3 sur un spip 2.1.19 sur un serveur en 5.3.2-1.
    Le formulaire fonctionne a priori comme il faut, à ce détail près que je ne reçois aucun mail. J’ai testé toutes sortes de combinaisons dans la configuration au niveau des auteurs disponibles. Je l’ai testé en local, mais aussi sur mon serveur, ça ne change rien.

    J’ai envoyé des messages de différentes longueurs, aucun changement. Les messages sont bien archivés dans l’interface privée, mais ça n’est pas l’effet recherché.

    Je suis un peu à court d’idée et j’espère que quelqu’un aura l’idée que je n’ai pas eu et qui résolvera mon problème.

    Merci d’avance. : )

    Répondre à ce message

  • 1

    Bonjour,

    J’utilise le Formulaire Contact Avancé depuis un moment, sur plusieurs sites.
    Hier, un client s’aperçoit que les messages n’arrivent plus dans sa boite.

    J’ai fait un paquet de tests en me remettant en destinataire,
    j’ai mis à jour des plugins : no mail, rien.
    Ce matin, un mail venant d’une personne exterieure
    m’a un peu rassuré dans mon « malheur ».

    J’ai refait une batterie de test, en utilisant des nom et mails bidons,
    les messages arrivent.
    Lorsque je renseigne le formulaire avec mon adresse courriel( qui est dans les destinataires), le message n’arrive pas.
    Idem pour le client-propriétaire du site, lorsque il renseigne le formulaire avec ces infos persos
    (dont son adresse ’celle qui reçoit les form en « temps normal »), les messages ne lui, ne me, parviennent pas.

    Y aurait il pas fonction anti spam qui m’aurait, ainsi que le proprio du site, mis en indésirable ?

    Sachant que le problème a été signalé par des personnes « inquiètent » de ne pas avoir de réponse à leur message et qui n’avaient jamais utilisé le formulaire auparvant.

    Vous auriez une idée., une solution ?
    Merci.

    • Petites précisions :
      version spip 3.0.4
      Formulaire de contact avancé 0.68

      ...et jusque là tout marchait très bien.

    Répondre à ce message

  • 7
    crazy-sip

    Bonjour,

    Deux « bêtes » questions :
    -  comment modifier l’adresse mail d’expédition des messages ? (par défaut, cela semble être celle de l’auteur n°1)
    -  Dans la config, je coche « Sauvegarder les messages de contacts » mais je les retrouve où ensuite ?

    Merci d’avance (et merci pour ce plugin efficace et tout simple à utiliser)

    • Pour la première question, c’est le comportement par défaut de SPIP... Il faut aller dans « Configuration » puis « Identité du site » et mettre le mail par défaut du site...

      Pour la seconde, je cherche aussi...

    • L’adresse d’envoie est peut-être modifiable avec « Facteur » :
      ?exec=configurer_facteur
      Les messages sont visibles depuis :
      Activité > Messagerie de contact

    • Oui, l’adresse d’envoie peut être changé aussi avec Facteur ...si on l’installe...

      Pour la page des messages de contact, c’est vrai : je viens de le voir ...pour SPIP 3 (le bouton n’apparait pas avec 2.1 en prod, donc je pouvais chercher longtemps) :-)

    • crazyspip

      Bonjour, merci pour les réponses.

      Pour la 1re question, c’est ce que j’ai fini par faire : modifier le mail dans la config générale du site. Disons que comme le plugin permet de choisir le ou les auteur(s) de destination, je trouvais logique que l’adresse d’expédition soit celle(s) du ou des auteurs en question et je pensais donc avoir loupé un truc. Je n’avais pas installé facteur, inutile dans mon cas.

      Pour la seconde question, c’est sur un Spip 2.1 donc comme gilcot, j’aurais pu chercher longtemps... Pas de possibilité de les visualiser dans un 2.1 alors ?

    • Pour la seconde question, c’est sur un Spip 2.1 donc comme gilcot, j’aurais pu chercher longtemps... Pas de possibilité de les visualiser dans un 2.1 alors ?

      Normalement le lien devrait aussi être présent en 2.1. En tout cas chez moi, avec le plugin « bandeau », il y est.

    • C’est la réflexion que je me faisais vu que ça apparaissait avec SPIP 3.0 je me suis dit que c’est parce-que je n’ai pas le nouveau « bandeau » installé sur le SPIP 2.1 en question..

    • crazyspip

      Bonjour, et merci pour vos réponses Pierre et Gilcot !
      Je n’ai effectivement pas bandeau sur ce site, je vais l’installer.

    Répondre à ce message

  • bonjour,
    merci pour ce plugin formidable !

    est-ce que c’est possible d’appeller des champs que j’ai ajouté juste dans quelques formulaires de mon site ou est-ce que tout les champs seront d’office affichés dès que j’utilise un formulaire formidable ?

    Répondre à ce message

  • 4

    Bonjour,

    j’ai inséré :
         #FORMULAIRE_CONTACT{id_auteur}
    dans mon squelette auteur

    et pourtant si je coche « ... majorée par les auteurs éventuellement transmis au formulaire. »
    cela n’a pas d’incidence, donc mon code est faux ?

    De plus les champs des informations perso que j’ai défini dans la config ne sont pas reprises dans la partie publique.

    bon je tente quand même l’envoi mais rien ne se passe (le formulaire redevient vierge et le message n’arrive pas).

    flop, flop..

    Ma version de PHP : 5.2.3-1

    dd

    • donc mon code est faux ?

      Oui. C’est #ID_AUTEUR qui récupère.

      Ma version de PHP : 5.2.3-1

      C’est ce qu’indique la fonction phpinfo() (visible par exemple dans la page exec=info de l’espace privé), ou bien c’est ce qu’indique l’hébergeur ?

      Parce que les dernières personnes qui ont dit ça ne l’étaient en fait jamais. Par exemple sur OVH il faut spécifier explicitement qu’on veut PHP 5, sinon c’est le 4.

    • Bonjour,

      1./ A propos de l’option « majorée par les auteurs éventuellement transmis au formulaire. »

      De mon coté, je n’arrive pas à faire passer l’e-mail majoré avec un formulaire inséré via un modèle dans un article.

      Par exemple, impossible d’envoyer une copie du message à l’auteur 3 si je met :

      <?php include_once("/opt/nursit/sys/home/nursit/matrice/public/4.2/07/spip/ecrire/balise/formulaire_.php"); if ($lang_select = "fr") $lang_select = lang_select($lang_select); inserer_balise_dynamique(balise_FORMULAIRE__dyn(arguments_balise_dyn_depuis_modele('FORMULAIRE_CONTACT'), '3'), array('', '', '', '', 'fr', '1')); if ($lang_select) lang_select(); ?>

      Ai-je mal rédigé ma balise ?

      Version du Spip : 2.1.16
      Version du plugin : 0.8.2

      2./ A propos du fontionnement des commentaires sur Spip contrib
      (je n’ai pas trouvé de forume sur Spip contrib en lui même)

      Coucou les admin de Spip-contrib (et merci pour votre dévouement).

      Une fonctionnalité manque crucialement sur ce site : on passe de longue minutes à éplucher les commentaires pour savoir si une problématique a déjà été traitée.

      Pourrait-on créer au choix :
      -  Soit une fonctionnalité de recherche dans les commentaires d’un article.
      -  Soit un lien « Tous le commentaires » qui supprime la pagination des commentaires afin de mieux faire une recherche pour voir si un sujet a déjà été abonné par un internaute sur un plugin particulier.

      A bientôt !

    • Je me répond à ma question :

      L’option « majorée par les auteurs éventuellement transmis au formulaire. » sert à insérer des E-mail spécifique à un formulaire dans le sélecteur proposant au visiteur le choix de ses destinataires.

      Dans un premier temps j’avais pensé que l’option servait à ajouter un destinataire qui n’apparaissait pas dans le sélecteur.

      J’ai donc modifié le plugin pour ajouter un champ «  destinataire supplémentaire qui n’apparaîtra pas aux yeux des visiteurs ».

      Cette modification pourrait intéresser d’autres personnes et je peux la partager.

    • Coucou les admin de Spip-contrib (et merci pour votre dévouement).

      Une fonctionnalité manque crucialement sur ce site : on passe de longue minutes à éplucher les commentaires pour savoir si une problématique a déjà été traitée.

      Pourrait-on créer au choix :
      -  Soit une fonctionnalité de recherche dans les commentaires d’un article.
      -  Soit un lien « Tous le commentaires » qui supprime la pagination des commentaires afin de mieux faire une recherche pour voir si un sujet a déjà été abonné par un internaute sur un plugin particulier.

      +1

    Répondre à ce message

  • 2
    Guylaine Marcoux

    Bonjour et-ce que quelqu’un aurais l’aimabilié de m’aider car j’aimerais réduire dans le formulaire * champs obligatoires pour simplement un astérix est-ce possible ?

    Merci de votre aide

    • La chaîne est celle par défaut de SPIP. Mettre des astérisques n’est pas une option très accessible, ou alors il faut ajouter une légende avant le formulaire ET sûrement des « title » dessus indiquant ce que ça veut dire en français (j’avais un tutoriel précis mais je ne le retrouve pas).

      La seule manière pour ce plugin c’est de surcharger le squelette du formulaire, je crois.

    • mariechichi

      Pour modifier tout texte prédéfini par Spip, il te suffit de modifier sa « traduction » dans le fichier lang correspondant.

      L’intitulé « obligatoire » se situe dans le fichier ecrire>lang>ecrire_fr.php et se nomme « info_obligatoire_02 » .

      Tu peux le modifier directement dedans mais le mieux (pour éviter la suppression de tes modif lors des mises à jour de Spip) c’est de créer un nouveau fichier lang dans ton dossier « squelettes » pour y mettre toutes tes modifications. Tu commences par créer un sous-dossier « lang » dans « squelettes » et dedans tu y crées un nouveau fichier nommé « local_fr.php » qui va surcharger les autres fichier de langue (pour le français uniquement). Tu recopie le header et le footer du fichier lang que tu as ouvert précédemment ainsi que la ligne a modifier.

      Et le tour est joué ! Déclinable pour tous les intitulés dès que tu connais leur identifiant spip.

    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