SPIP Blog

Du logiciel libre et de la tendresse

Accueil > Développement > Une page de contact dans mon SPIP

Une page de contact dans mon SPIP

jeudi 21 avril 2011, par tetue

Comment afficher simplement un formulaire de contact dans un site SPIP ? Facile, puisqu’il y en a autant que d’auteurs !

Beaucoup cherchent comment ajouter une « page contact » à leur site SPIP, avec un formulaire dédié, en installant des plugins pour ce faire... sans savoir que c’est déjà possible, dans SPIP, naturellement.

Y’a autant de formulaires de contact que d’auteurs !

Pour comprendre, reprenons depuis le début... À la première installation de SPIP, un premier compte utilisateur est créé, celui du « webmestre », qui est l’auteur numéro 1. Vérifiez que son adresse email est renseignée et qu’il est auteur d’au moins un article publié [*], puis rendez-vous sur le site public, à la page de cet auteur (en ajoutant « /?auteur1 » après le nom de domaine) : cette page affiche un formulaire qui permet d’écrire à l’auteur. Le voilà votre formulaire de contact !

PNG - 14.9 ko
Formulaire de contact de SPIP

De même, chaque nouvel auteur dont l’adresse courriel est renseignée [*], dispose d’un formulaire personnel, qui permet de le contacter sans divulguer son adresse. C’est ainsi dans SPIP, par défaut. Il n’y a effectivement pas un formulaire de contact, mais autant de formulaires de contact que d’auteurs.

Ce n’est pas exactement ce que nous cherchons, mais cela révèle que le mécanisme est présent dans SPIP, nativement, sans qu’il soit nécessaire d’ajouter quoique ce soit. À partir de là, il ne faut plus grand chose, comme nous allons le voir, pour réaliser une page contact. Un peu d’astuce, d’espièglerie...


Transformer un auteur en page « contact »

Voici la méthode la plus simple, qui utilise le squelette auteur.html de la distribution de SPIP.

  1. Créez un utilisateur dédié, appelé « Contact », par exemple l’auteur n°1
  2. N’oubliez pas de renseigner son adresse email [*]
  3. Vous pouvez utiliser le champ « bio » pour donner d’autres informations de contact, comme par exemple l’adresse postale
  4. Pour que l’auteur existe en tant que tel, attribuez-lui un article publié [*]
  5. Affichez la page ?auteur1 pour vérifier que tout fonctionne
  6. Faites un lien vers cette page, depuis votre barre de navigation ou dans le pied de page, en ajoutant cette ligne à l’endroit voulu de vos squelettes :
    <a href="#URL_AUTEUR{1}">Contact</a>
    ou mieux :
    <BOUCLE_contact(AUTEURS){id_auteur=1}><a href="#URL_AUTEUR">#NOM</a></BOUCLE_contact>

C’est tout !

Transformer un article en page « contact »

Cette seconde méthode est moins évidente, mais néanmoins aussi facile que la précédente. Elle repose sur le fonctionnement spécifique du formulaire SPIP.

SPIP est distribué avec plusieurs formulaires prêts à l’emploi. Vous aviez spontanément et désespérément cherché la balise « #FORMULAIRE_CONTACT », mais il faut le savoir, c’est le tag « #FORMULAIRE_ECRIRE_AUTEUR » qui fabrique et affiche ce formulaire. Cette balise est un peu magique : elle fonctionne dans une boucle AUTEURS, évidemment, mais aussi dans les boucles ARTICLES, entre autres. Comme le dit la doc en ligne sur les formulaires SPIP : placé dans une boucle ARTICLES, ce formulaire permet d’envoyer un mail à tous les auteurs de cet article, sans autre forme de prise de tête. Ça ouvre des perspectives intéressantes, en permettant notamment de contacter plusieurs personnes d’un coup, façon mailing list !

  1. Créez un article intitulé « Contact » ou « Écrivez-nous », par exemple le n°7. Vous pouvez utiliser les champs pour afficher d’autres informations de contact, comme l’adresse postale, etc.
  2. Associez à cet article le (ou les) auteur(s) à contacter
  3. Ajoutez simplement la balise #FORMULAIRE_ECRIRE_AUTEUR dans votre squelette article.html. Pour que ce formulaire ne s’affiche pas dans tous les articles, mais seulement dans celui-ci, conditionnez sa présence ainsi :
    [(#ID_ARTICLE|=={7}|oui)#FORMULAIRE_ECRIRE_AUTEUR]
  4. N’oubliez pas de publier l’article ! Il est consultable à l’adresse URL ?article7 : vérifiez son bon fonctionnement.
  5. Pour finir, faites un lien vers cette page, en ajoutant cette ligne à l’endroit voulu de vos squelettes :
    <a href="#URL_ARTICLE{7}">Contact</a>
    ou mieux :
    <BOUCLE_contact(ARTICLES){id_article=7}><a href="#URL_ARTICLE">#TITRE</a></BOUCLE_contact>
PNG - 80.8 ko
Ma page contact

Je préfère utiliser un article pour fabriquer la page de contact, afin de pouvoir le ranger dans une rubrique et l’afficher dans l’arborescence du site, en bénéficiant de la jolie ré-écriture d’URL des articles et surtout pour pouvoir le dépublier facilement si besoin était — bref, pouvoir le manipuler comme n’importe quelle autre page du site, juste depuis l’espace privé.

- Mieux : un modèle prêt à l’emploi

On rêverait pouvoir tout faire depuis l’espace privé, sans devoir toucher aux squelettes du site, en insérant par exemple <formulaire_ecrire_auteur> dans le champ d’un article... Ce n’est malheureusement pas possible. Mais il suffit de fabriquer une noisette pour cela :

  1. Dans le sous-repertoire /modèles de votre dossier « squelettes », créez un fichier formulaire_contact.html contenant notre balise magique dans une boucle, nécessairement :
    <BOUCLE_article(ARTICLES){id_article}>#FORMULAIRE_ECRIRE_AUTEUR</BOUCLE_article>
  2. Vous pouvez ensuite utiliser ce formulaire dans n’importe quel article, en saisissant <formulaire_contact|id_article=7>, sans oublier de passer l’identifiant en paramètre.

Cette noisette est distribuée dans ma trousse (qui fait aussi plein d’autres choses astucieuses et bien pratiques — ou pas). C’est la méthode que j’emploie sur tous mes sites, parce que codée une bonne fois pour toutes. Mais nous sommes d’accord, ce n’est qu’une rustine, en attendant la distribution d’un joli <form|contact> prêt à l’emploi.

Créer un squelette « contact » dédié

  1. Il s’agit de créer un squelette dédié, contact.html, contenant la balise #FORMULAIRE_ECRIRE_AUTEUR dans une boucle AUTEURS (ou ARTICLES, selon l’une des deux approches exposées précédemment)
  2. Cette page est consultable à l’adresse URL ?page=contact
  3. Voici comment la lier dans les squelettes :
    <a href="#URL_PAGE{contact}">Contact</a>

Cette troisième méthode n’est pas la plus simple et est moins avantageuse que les précédentes, car cette page n’est pas un objet éditorial de SPIP : c’est un fichier quasi statique, qu’on ne peut donc pas « dépublier » facilement depuis l’espace privé, qui, de même, n’est pas facilement éditable, et qui ne bénéficie pas de la réécriture d’URL en vigueur sur le site, etc.


[*] Pour que ce formulaire marche, il faut :

  • ne pas oublier de renseigner l’adresse courriel de l’auteur, c’est évident, mais ça va mieux en le disant ;
  • que l’auteur ait au moins un article publié ;
  • et que le serveur hébergeant le site accepte d’envoyer des mails.

Il ne reste plus qu’à ajouter un skin CSS prêt à l’emploi ou de vous inspirer de ceux-ci : Beautiful Contact Forms for your Inspiration pour habiller joliment votre formulaire.

Mais nous sommes d’accord : ce serait mieux si telle page existait par défaut. Ça pourrait être une bête ?page=contact, avec un #FORMULAIRE_ECRIRE_AUTEUR mieux nommé #FORMULAIRE_CONTACT qui, placé hors boucle, enverrait par défaut à l’auteur 1 (ou même à « l’adresse e-mail du webmestre » renseignée dans la configuration du site et dont j’ignore quelle est l’utilité si elle ne sert pas à ça).

Pour des besoins plus évolués (champs supplémentaires, stockage en base, etc.), orientez-vous vers les plugins dédiés, comme le très bon « Formulaire de Contact Avancé »... qui tient en 1125 fichiers ! Mais... avez-vous vraiment besoin de tout ça ?


Voir en ligne : http://romy.tetue.net/formulaire-de...