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

  • merci beaucoup , je vais tenter de le faire via un plugin

    Répondre à ce message

  • 1

    Bonjour, je ne suis absolument pas doué pour les rajout d’un champ et cependant je dois en rajouter un ; je bidouille depuis pas mal de temps en essayant de comprendre comment fonctionne un plugin.
    Si je comprends bien il me faut créer un autre plugin pour rajouter un champ ?
    par exemple je veux rajouter le champ « site_web » . pouvez vous me guider un peu parce là je cale.

    Merci beaucoup

    • Comme indiqué juste au-dessus dans le chapitre « Ajouter un nouveau champ », il y a deux manières : soit dans un plugin, soit dans le « mes_options.php » de votre site.

      Dans ce dernier, vous ajoutez d’abord cette ligne

      $GLOBALS['spip_pipeline']['contact_infos_supplementaires'] .= '|nom_de_votre_fonction';

      Puis vous créez la fonction avec le nom que vous avez choisi :

      function nom_de_votre_fonction($champs){
          $champs['site_web'] = 'Adresse du site web'; // ou n'importe quel autre vrai titre à afficher
          
          return $champs;
      }

    Répondre à ce message

  • Merci encore pour ce plugin, simple d’utilisation qui fonctionne bien !

    moi j’ai juste un petit souci, qui dois venir d’ailleurs, avec les langues.
    lorsque je suis sur une partie de mon site anglaise, le formulaire est en anglais de prime abord, (formulaire ajax) mais lorsque j’envoie le form avec des erreurs, le texte passe en français.

    j’ai remarqué que si j’accéde au formulaire en rajoutant : &lang=en à la fin de l’url ça marche bien ...

    Je crois que je suis HS finalement, désolé si c’est le cas ;)

    Répondre à ce message

  • Bonjour,
    je voulais juste dire que ce plugin est super, il est simple, léger et n’est pas une usine à gaz avec 15 000 possibilités. Seul petit regret la dépendance avec CFG, jusqu’à présent je n’avais aucun plugin avec des dépendances obligatoires avec ce plugin mais je me suis finalement résolu à l’installer pour pouvoir utiliser ce plugin.

    Sinon un grand bravo aux développeurs aussi qui n’hésite pas à aider les personnes qui veulent modifier le plugin même si ces modifications ne leur semblent pas appropriées. Ça change d’autres développeurs Spip qui imposent leur choix et refusent que l’on touche à « leur création ». :p

    Répondre à ce message

  • 3

    Bonjour,
    il semble y avoir un petit problème d’incompatibilité avec le plugin lecteur multimédia v0.67 [27617], je ne peux pas accéder à la configuration du lecteur quand les 2 plugins sont activés...

    Version de Formulaire contact avancé : 0.3 [28385]

    installation sur un SPIP 2.0.8 [13982] avec les plugins suivants :
    cfg (1.12.4 [28724]) , crayon (1.4 [28729]), couteau suisse (1.8.08.00 [28677]), no-spam (0.3 [27835]), Spip-bonux 2.0 (1.8 [28731]), Thickbox v2 (0.3 [27182])

    une piste ?

    • Mais c’est assez imprécis « je ne peux pas accéder à la configuration du lecteur ». Je ne sais pas quoi dire à partir de là. Une erreur sur la page ? Une page blanche ? Des erreurs PHP qui s’affichent ? Etc.

      Il faut aussi essayer de désactiver le couteau suisse, comme ça juste pour voir... :)

      Le mieux étant évidemment de n’activer que ce qui pose problème.

    • oups :) en effet, cela manque de précision...
      le symptôme : page blanche

      testé avec
      1/ couteau suisse désactivé : idem
      2/ uniquement le formulaire + spip-bonux + le lecteur : tout pareil :p
      3/ tout activé sauf le formulaire : ça marche :)

    •  ?exec=player_admin fonctionne très bien même avec le plugin contact avancé activé.

      spip14013 mais sans le couteau suisse.

      Des pistes :

      • vider le cache à chaque essais
      • désactiver tout à tour crayon, palettes et le couto

    Répondre à ce message

  • Bonjour à tous,
    Quelqu’un pourrait-il m’aider car en voulant afficher le formulaire sur la page de mon site, grâce à la baliser #FORMULAIRE_CONTACT, j’ai une erreur qui s’affiche comme ceci :

    Fatal error : Call to undefined function : lire_config() in /homepages/21/d232923514/htdocs/plugins/plugin_contact/formulaires/contact.php on line 13

    Que dois-je changer dans cette ligne ?

    $valeurs[’type_choix’] = $type_choix = lire_config(’contact/type_choix’) ;
    Merci pour votre aide.

    Répondre à ce message

  • Si le plugin « Spip-listes » pouvait intégrer ces possibilités ce serait le paradis. Pouvoir gérer ses listes d’abonnés de façon un peu plus précise qu’avec des « idecopy », « info56 » et autres « parnold » serait un vrai plus. Le plugin Inscription2 est lourd et pas très ergonomique...

    Répondre à ce message

  • 1

    salut

    je veux changer le mot [Obligatoire] par une etoile pour reduire l’espace
    dans le formulaire de contact, je ne trouve pas le mot [Obligatoire] dans le fichier de langue.

    avez vous une idée

    merci

    • C’est une chaine de langue standard de SPIP, donc je ne l’ai pas répété dans le fichier le langue du plugin. Une étoile c’est un signe uniquement visuel qui est difficilement accessible pour ceux qui ont des lecteurs d’écran, mais chacun voit... :)

      Pour remplacer, il faut donc que vous surchargiez le formulaire /formulaires/contact.html pour mettre une étoile à la place de la chaine de langue.

    Répondre à ce message

  • 1
    Emmanuel

    Bonjour,
    Ce plugin est parfait pour ce que je souhaitais faire.
    J’ai toutefois un problème :
    Mon hébergeur demande de spécifier une adresse « From » pour pouvoir utiliser leur fonction mail().
    Je ne trouve pas où rajouter ça dans le script (ce que j’ai testé ne marche pas...)
    Merci.

    • Emmanuel

      Finalement, ça a l’air de marcher...
      Je ne sais pas ce qui a changé entre temps... mais bon...
      Tant mieux...

    Répondre à ce message

  • 1
    fulvio

    Encore moi...au fait aurait eu besoin de publier régulièrement des formulaires, et parfois avec et parfois sans champs supplémentaire et quen plus le champs supplémentaire je puisse depuis spip lui attribuer un nom (c’est une question qui change régulièrement) : Faisable ?

    • merci ! cest possible davoir un formulaire avec champ supplémentaire et un autre sans ?

      aurait eu besoin de publier régulièrement des formulaires, et parfois avec et parfois sans champs supplémentaire

      En fait il y a méprise : ce plugin sert uniquement à faire un formulaire de contact. Pour que les visiteurs contactent les auteurs du site. Point barre.

      Pour gérer des formulaires et leurs réponses, ça n’a rien à voir, c’est le but du plugin Forms&Tables qui n’est pas encore migré pour SPIP 2, ou du plugin spip-formulaires qui est bientôt prêt pour SPIP 2. Il faut regarder du côté de ces plugins en ce qui concerne votre besoin.

    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