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

  • 2

    Bonsoir,

    Sur un site SPIP 4.1.9 tout neuf, lorsque je veux activer « Formulaire de contact avancé », Spip m’affiche « Le plugin Formulaire de contact avancé dépend du plugin ORGANISEUR ≥ 0.8.5. ».
    Le plugin demandé est-il bien le plugin « Organiseur » suivant « https://plugins.spip.net/organiseur.html » et qui est en version « 3.1.0 stable » et compatible Spip 4.1 et 4.2 ?

    Remarque :
    une fois le plugin Organiseur installé et activé, il n’affiche pas « Version : 3.1.0 » comme sur sa fiche sur plugins.spip.net, mais « Version :
    0.7.4 ».

    Merci d’avance,

    Cordialement,

    Hervé

    • Oui, ce plugin ne fait plus partie des plugins-dist désormais

    • Résolu !

      Je suis aller cherche l’url de téléchargement sur le site Plugins SPIP et j’ai fait l’installation par le formulaire « Télécharger un plugin depuis son archive » en espace privé, puis je l’ai activé et j’ai donc remplacé la version 0.74, par la version 3.1.0.

      Mais il semble y avoir un bug dans le dépôt des plugins, car lorsque sous spip 4.1.9 avec le dépôt proposé par défaut « SPIP-Zone - Plugins » et actualisé le 17/03 à 18:45, si l’on recherche organiseur, la version proposée la vielle version 0,74.

      Bonne soirée.

      Hervé
      Ps j’ai signalé l’erreur sur plugins.spip.net

    Répondre à ce message

  • stéphan

    Bonjour
    J’ai installé le plugin sur spip 4.0 avec le squelette hjtml5 Escape Velocity.
    Celui-ci demande l’installation du plugin de contact avancé pour afficher le formulaire de contact.
    Après installation le test d’envoi de message affiche ceci :

    Warning: Undefined array key "pj_fichiers" in /home/clients/498d6d9ec9ae142cdb994dd2fdb2d3b2/sites/monsite.fr/plugins/auto/contact/v1.0.3/formulaires/contact.php on line 205
    
    Warning: reset(): Argument #1 ($array) must be passed by reference, value given in /home/clients/498d6d9ec9ae142cdb994dd2fdb2d3b2/sites/monsite.fr/plugins/auto/contact/v1.0.3/formulaires/contact.php on line 324
    
    Warning: Undefined variable $inforigine in /home/clients/498d6d9ec9ae142cdb994dd2fdb2d3b2/sites/monsite.fr/plugins/auto/contact/v1.0.3/formulaires/contact.php on line 365
    
    Warning: Undefined array key "facteur_filtre_iso_8859" in /home/clients/498d6d9ec9ae142cdb994dd2fdb2d3b2/sites/monsite.fr/plugins/auto/contact/v1.0.3/formulaires/contact.php on line 384

    Apparemment cela serait un problème de pièce jointe
    Merci de votre aide.
    Stéphan

    Répondre à ce message

  • 3
    P’tit Ben

    Bonjour,

    Je me sers de ce plugin sur mon site, mais il ne fonctionne pas avec la version 4 de spip. Est-il prévu de le mettre à jour ? Ou est-il remplacé par un autre plugin ?

    Merci d’avance pour les réponses.

    • P’tit Ben

      Je me réponds à moi-même : ajouter :
      define(’_DEV_VERSION_SPIP_COMPAT’,« 3.2.99 ») ;
      dans le fichier mes_options.php puis réactivé le plugin…

    • Est-ce que tout marche effectivement ? Si oui on va peut etre marquer le plugins comme compatible.

    • P’tit Ben

      A priori, ça fonctionne correctement, mais je n’ai pas tout vérifié.
      Et comme je viens de lire ci-dessous « il n’est plus maintenu (juste laissé en l’état), il est préférable d’utiliser le plugin Formidable », je me demande si ce n’est pas ce que je devrais faire.

    Répondre à ce message

  • 2
    Nicolosko

    Bonjour,

    merci pour le plugin, il est vraiment simple d’emploi.
    J’ai toutefois une question :
    comment envoyer directement le message sans passer par la phase de prévisualisation ?

    Si quelqu’un a une idée, je suis preneur.
    Merci
    Nico

    • Salut, as tu trouvé une solution ?

    • Ce n’est pas prévu par le plugin, ce n’est pas configurable. Mais il n’est plus maintenu (juste laissé en l’état), il est préférable d’utiliser le plugin Formidable (qui lui n’a pas de prévisu de base).

    Répondre à ce message

  • 1
    Emmanuelle

    gentes dames, damoiselles, gentilshommes et damoiseaux

    l’option qui permettait d’afficher une case « Mademoiselle » viens de disparaître
    c’est problématique sur les formulaires existants qui utilisent cette option

    comment je fais ?

    • Emmanuelle

      Alors, j’ai testé.
      Au temps pour moi, mea culpa et toussa : les messages sont enregistrés de manière brute en un seul champ texte dans la messagerie de SPIP.
      Donc, la modification faite par toutati ne casse rien :

      • Les message déjà enregistrés conservent la mention Mademoiselle.
      • Et les nouveaux messages ne disposent pas du choix Mademoiselle

      C’est donc techniquement parfait.

    Répondre à ce message

  • 1
    Fabius kavuganyi

    Hello friends I have tried this plugin, I wanted to add Ajax to my form but still it’s not work I have added a div with ajax class but still not working If there is someone to help me please help

    Répondre à ce message

  • 1
    JeromeD

    Bonjour,
    Pensez-vous qu’il serait possible de définir un nouveau champ intégré au plugin sur le principe de l’infolettre - case à cocher avec texte personnalisé pour la RGPD afin d’être en conformité sans avoir à bidouiller les pages ?
    Merci d’avance pour votre retour.
    Cordialement
    Jérôme

    • le plugin n’es plus maintenu, je vous invite à utiliser formidable, qui vous permettra de faire ceci (et bien plus !)

    Répondre à ce message

  • 5

    Bonjour à tous !

    Je souhaite juste ajouter un commentaire sur la doc.
    J’ai souhaité ajouter un champ dans mon formulaire de contact. Le problème c’est que je ne savais pas ou cela s’ajoutait : directement dans le formulaire ou dans le paramétrage côté back-office ?

    Du coup après un simple rafraichissement du cache de mon navigateur... mon nouveau champ est apparu dans le paramétrage (Back-office/interface d’administration). Je pense qu’il faudrait le préciser dans la documentation. Qu’en pensez-vous ?

    • heu, je ne comprend pas en quoi un rechargement a pu ajouter le champ. Tu as du faire quelque chose d’autres, et c’est ca qu’il faudrait ajouter à la doc ;-)

    • Merci pour ta réponse Maïeul !

      le problème c’est qu’avec le code que j’ai ajouté hier (celui de la doc dans mes_options.php)... pas de nouveau champ que ce soit côté utilisateur et/ou côté administrateur... et ce matin en ouvrant mon navigateur et l’interface administrateur, le champ est apparu !

    • tu avais fait un recalcul du cache ?

    • Oui j’ai essayé, en ajoutant &var_mode=recalcul, mais ça ne fonctionne pas. Du coup j’ai trouvé une solution.

      Pour afficher mon champ, j’ai dû passer par l’interface admin > gestion des plugins > l’icône configuration (clé/marteau). Le champ s’ajoute correctement !

      Si ça peut aider quelqu’un.

    • Ça s’ajoute dans un pipeline oui, donc il faut recalculer les pipelines en allant dans la page d’admin des plugins (seulement ça suffit).

    Répondre à ce message

  • 2

    J’ai une question concernant les langues : sur la page ecrire/ ?exec=configurer_contact il y a un champ « Introduction ». Dans ce bloc de texte on insère du texte dans une seule langue. J’ai rempli en français, la langue par défaut.

    Le formulaire est multilingue et s’adapte automatiquement en anglais quand on est sur des pages déclarées en anglais, sauf cet encart de texte qui reste en français en plein milieu d’une page en anglais.

    Quelqu’un a une idée ?

    Répondre à ce message

  • 10

    J’ai mis l’abonnement à l’infolettre sur mon formulaire. J’utilise MailSubscribers pour gérer les abonnement à la newsletter. Lors de mes essais, l’abonnement ne se fait pas... Une piste ?

    Merci d’avance.

    • Bonjour,

      J’utilise aussi « Mailsubscribers » et j’ai le même problème de pouvoir gérer l’inscription aux infolettres depuis un formulaire « Contact avancé » (pas possibilité d’activer le choix des infolettres) ou « Formidables » (le choix des infolettres s’affiche dans ce dernier mais ne s’enregistre pas à la validation).

      Je suis donc également preneur d’une solution !

      Amicalement.

    • Merci, je vais voir ça, cette extension avait complètement échappé à mes recherches !

    • normal, elle est pas documenté.

      Si cela marche, il faudrait contacter tcharllss je pense pour lui proposer de rédiger une doc.

    • Oui, je viens de l’installer, elle fonctionne et abonne correctement aux listes.

      Amicalement.

    • super !

      Est-ce que tu te sentirais de faire une doc (en ayant demandé préalablement à Tcharllss ?)

    • Hu hu, j’avais fini par oublier l’existence de ce plugin !
      Il n’est pas documenté, mais facilement trouvable sur plugins.spip.net en cherchant avec « formidable » tout de même.
      Je ne saurais pas trop quoi mettre dans la doc, il n’y a vraiment pas grand chose à dire.
      Mais n’hésitez pas si vous voulez.

    • Super. Même une doc simple sur contrib est mieux que pas de doc. Car sans doc, ce n’est pas trouvable, sauf si on connaît un peu les arcanes de SPIP.

    • C’est fait, j’en ai proposé un dans la rublique Formidable (Intérêt, Installation, Utilisation). J’ai inséré l’icône de l’extension et quelques mots-clefs, mais je n’ai pas l’habitude de ce type de contribution pour peaufiner plus.

    • ne t’inquiète pas, on a des administrateurs qui te feront des retours

    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