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

  • 3

    Bonjour,

    J’utilise depuis aujourd’hui ce plugin très pratique. Je me dis que la réponse a peut-être déjà été donnée mais il y a 390 pages de commentaires ici... J’avoue avoir lâchement baissé les bras après la 10e page...

    Je cherche à personnaliser un peu l’apparence du mail envoyé en changeant la barre grise contenant le nom du site par le logo du site, ou plutôt par l’url d’une image qui serait dédiée à l’illustration de ces mails. Je me dis que cela doit se faire dans la variable $texte ou $texte_final mais je ne trouve nul part comment est construit le corps du texte, c’est-à-dire, là ou on ajoute ce titre.

    En effet, il ne s’agit pas simplement d’ajouter l’image mais aussi d’enlever le titre sur fond gris...

    Quelqu’un aurait une piste ? J’avais cherché dans le « function formulaires_contact_traiter_dist($id_auteur=’’,$tracer=’’) » du fichier « formulaire/contact.php »...

    Tout grand merci par avance à tous !
    Bonne soirée.
    Fred

    • D’après ce que tu expliques, tu utilises le plugin Facteur, qui englobe les mails qui n’ont que du texte brut dans un wrapper HTML. Donc le plus simple c’est de surcharger ce wrapper, mais ça vaudra pour tous les mails du site qui sont en texte brut, pas juste pour ce mail de contact. C’est dans http://zone.spip.org/trac/spip-zone/browser/_plugins_/facteur/trunk/emails/texte.html

    • Ah ben ça me rassure, je ne comprenais pas pourquoi je ne trouvais rien. Effectivement, j’utilise facteur...

      Je vais donc regarder de ce côté-là. En fait, ça m’arrange plutôt bien que ça impacte le reste... Car j’ai aussi mis un plugin de newsletter qui devra aussi afficher cette image.

      Super ! Merci beaucoup et bonnes fêtes de fin d’année à tout le monde !

      Fred.

    • Parfait ! C’est bien ça ! Hourra ! et merci encore !

    Répondre à ce message

  • 5

    Bonjour,

    Complétement nouveau dans le spip et donc dans ce forum, je m’excuse auparavant de ne pas lire les 390 dialogues qui précèdent pour obtenir une réponse qui doit sûrement y être ! Enfin je me lance même si cette question doit paraître triviale à de nombreux d’entre vous: :

    Comment faire pour supprimer un destinataire dans la liste quand il n’est plus auteur sur le site ?

    Merci d’avance

    • question mal posée en fait !!

      comment oter un destinataire sans l’éliminer de l espace privé ?

      Merci

    • Ben en configurant le plugin, cf capture dans la doc ci-dessus. C’est TOI qui choisis le ou les destinataires qui seront proposés publiquement, parmi la liste complète des comptes utilisateurs.

    • Merci de ta réponse , c’est justement là que je cale : quand j ouvre le formulaire contact dans la partie privée , je n’arrive plus à enlever ni ajouter des utilisateurs. J ai du le faire par hasard la première fois et impossible d’y revenir !

      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.

      Par ailleurs tu parles du fichier contact_options.php que je n’arrive pas à trouver parmi les dossiers du plugin contact. Oùu est il passer ? je ne trouve nulle part les différents champs (je veux en modifier un) et aussi modifier le texte de remerciement (en rouge) retourné aux visiteurs après l’envoi du formulaire....

      En bref je suis paumé mais confiant car j aime l’esprit spip !!

      Merci encore

    • Comme ça tu n’arrives plus à y revenir ? La configuration d’un plugin, c’est la petite icônes d’outil qui se trouve dans le bloc du plugin en question dans la page d’admin des plugins.

      Pour la liste des champs, en SPIP 3 c’est dans ce fichier maintenant :
      http://zone.spip.org/trac/spip-zone/browser/_plugins_/contact/trunk/contact_fonctions.php

    • ¨Merci pour l adresse !

      en ce qui concerne l’outil pour la mise en forme du plugin, pas de soucis je l avais bien repéré, . C’est une fois la mise en place des paramètres du formulaire que certaine fonction sont inopérantes dans certaines configurations.. (impossible de modifier la liste des auteurs, et options de choix de destinataire sans effet sur la présentation)
      Mais je vais arrêter de faire perdre ton temps. le problème s’est résolu une fois le site mise en ligne. auparavant il tournait avec easyphp sur mon ordi. ou sur un site d’essai gratuit sans adresse mail . est la raison ?
      merci pour tout

    Répondre à ce message

  • 2

    Salut,

    J’ai identifié un petit problème lorsque le formulaire est inséré dans une rubrique avec utilisation des URL propre « arbo ». Dans ce cas, la balise formulaire rajoute un « # » à la fin de l’adresse de l’action (voir le code de formulaire_.php). Ce plugin rajoutant lui aussi la balise « #formulaire_contact », on peut se retrouver avec des action="/.../##formulaire_contact". Si on utilise le filtre |ancre_url pour ajouter l’ancre, tout rentre dans l’ordre.

    Bref, voici un correctif contact_utilisation_ancre_url_action.diff

    Olivier ;

    Répondre à ce message

  • 1
    haqqtiviste

    bonjour

    je vais donc poser une question plus simple : ou sont stockés les messages quand on a coché « sauvegarder les message sur le site » ?

    ceci afin de les récupérer

    merci d’avance

    • Dans la table spip_messages déjà fournie par la dist de SPIP. Peut-être qu’il faut activer la gestion de la messagerie interne pour avoir le droit d’accéder à ces pages dans l’admin.

    Répondre à ce message

  • haqqtiviste

    bonjour

    toujours la même question... :
    en 3.0.8 : lien vers la page de relecture (?exec=contact_messages) non accessible en bandeau
    et en cliquant sur le lien vers le message (?exec=contact_un_message&id_message=335) : message d’erreur : message non disponible

    une extraction globale de tous les messages est elle possible par une autre voie ?

    merci bcp.

    Répondre à ce message

  • 3
    Juliette

    bonjour,

    je vous contacte car je ne trouve pas de solution à mon problème : j’ai créé un formulaire de contact avancé qui fonctionne très bien, je suis sous spip 3.0.8 !
    MAIS... je ne reçois pas les mails, ni sur une adresse free, ni hotmail, ni gmail...
    mon site est hébergé chez hostpapa... je n’ai jamais eu de soucis auparavant avec sous les versions ultérieures de spip.
    Sur le site, aucun souci. le formulaire se rempli normalement, et il y a même le petit mot de la fin qui dit qu’il a été envoyé.
    mais je ne reçois rien... si quelqu’un à une petite idée, parce que là, je ne trouve pas...
    Merci

    • Pierre

      As-tu installé le plugin Facteur ? Si la fonction mail de php est désactivé par ton hébergeur, ça vaudrait le coup de l’installer et de configurer le SMTP.

    • Juliette

      rah lala, oui c’est ça effectivement j’avais oublié d’installer facteur !! Tout fonctionne ! Bêbête que je suis !!!!
      Merci ;)

    • bonjour

      j’ai le même problème, quant facteur est installé, que faut il faire pour que cela fonctionne ?

      merci

    Répondre à ce message

  • pour info, l’option qui permet de ne pas afficher la barre d’outils ne fonctionne plus, car le porte plume insère désormais automatiquement sur tout textearea de name=texte

    Répondre à ce message

  • Super plugin, merci beaucoup ! Je le trouve parfait en tout point sauf un qui m’ennuie un peu, la fameuse partie lors de l’envoie : CONFIRMER VOTRE ENVOI. Est-il possible de désactiver l’affichage de cette partie, et d’envoyer l’email lors de la première pression du bouton d’envoi du formulaire ? Merci !!

    Répondre à ce message

  • 2

    Bonjour
    j’ai 2 soucis qui doivent-être liés.
    J’ai installé le plugin « Formulaire de contact »
    créé mon formulaire (très bien !)
    choisis un seul destinataire (Contact)
    Ecris un article « Contact » avec ce formulaire
    Cet article fonctionne très bien.

    Mais quand je clique sur contact au pied de mes pages le lien ne mène pas à l’article « Contact » mais à une page permettant d’écrire un message à chacun des auteurs.
    Je voudrais que les visiteurs :
    -  ne puissent pas envoyer de messages aux auteurs (hormis Contact"
    -  que le lien contact mène à l’article « Contact ».

    Merci

    Merci

    • Je ne sais pas de quoi tu parles, ce plugin ne fait que fournir un formulaire (#FORMULAIRE_CONTACT), il ne touche à rien d’aucun squelette de personne. C’est aux gens de l’intégrer là où ils veulent l’intégrer.

    • J’ai compris et modifié le squelette là où il fallait le modifier.
      Merci

    Répondre à ce message

  • 1

    Bonjour,

    une petite correction dans l’exemple /formulaires/contact_champ_pays.html

    ligne 2 : (#ENV{name}|in_array{#ENV{obligatoires,#ARRAY}}|oui)obligatoire]

    il faut un underscore à obligatoire : #ENV{_obligatoire,#ARRAY}

    Par contre j’ai bien galérer pour ajouter un champ, l’explication et les exemples mériteraient d’être revisités.

    1) « <inclure>un_fichier.php</inclure> » = ça peut être mon_plugin_pipelines.php

    2) « montruc » = est le préfixe de mon_plugin

    3) $champs['nouveau_truc'] = 'Un titre'; ça correspond plus à : $champs['nom_nouveau_champ'] = 'titre nouveau champ';

    4) "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."

    C’est pas très explicite « le point précédant » . Faut vraiment gratter un moment pour comprendre que le point précédant est dans Personnaliser l’affichage des champs d’informations ;-)

    Sinon, il est super bien ce plugin. Bravo !!
    Cordialement

    • Merci pour ce plugin et merci a freebsnet pour me tirer cet épine du pied....

      Après avoir cherché la dernière version du plugin pour spip2 afin de ne pas avoir le bug des documents joints ; je me retrouve de nouveau face a un petit soucis ; l’icône pour consulter les messages enregistrés une fois l’option sélectionnée n’apparait plus avec cette dernière version du plugin....

      Une idée ?

      saludos

    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