Les formulaires

SPIP permet une grande interaction du site avec les visiteurs ; pour cela, il propose de nombreux formulaires sur le site public, permettant tantôt de gérer les accès à l’espace privé, tantôt d’autoriser l’ajout de messages et signatures.

Les formulaires s’insèrent dans les squelettes par une simple balise ; SPIP se charge ensuite de gérer le comportement (souvent complexe) de ces formulaires en fonction de l’environnement et des configurations effectuées dans l’espace privé.

Fonctions interactives


-  #FORMULAIRE_RECHERCHE

Il s’agit du formulaire du moteur de recherche intégré à SPIP. Il est présenté dans l’article sur les boucles de recherche.


-  #FORMULAIRE_FORUM

Le #FORMULAIRE_FORUM gère l’interface permettant de poster des messages dans les forums publics. Il concerne donc en premier chef la boucle FORUMS mais peut être utilisé dans toutes les boucles acceptant un forum :

Le formulaire dépend évidemment du choix des forums modérés a posteriori, a priori ou sur abonnement.

Par défaut, une fois le message posté, le visiteur est renvoyé vers la page de l’élément [1] auquel il a répondu. On peut décider de renvoyer le visiteur vers une autre page en passant une url en paramètre à cette balise. Par exemple :

  • [(#FORMULAIRE_FORUM{'spip.php?page=merci'})] renverra vers la page spip ?page=merci.
  • [(#FORMULAIRE_FORUM{#SELF})] renverra vers la page où le formulaire de forum est placé (voir la balise #SELF).

Dans le cas (très spécifique) où l’on a autorisé la présence de mots-clés dans les forums publics, on peut affiner le comportement de ce formulaire avec des variables de personnalisation.


-  #FORMULAIRE_SIGNATURE

La balise #FORMULAIRE_SIGNATURE affiche un formulaire permettant aux visiteurs du site de signer les pétitions associées aux articles. Cette balise se place donc dans une boucle ARTICLES.

La signature des pétitions réclame obligatoirement une validation des signataires par email. Ce formulaire n’a donc d’intérêt que si votre hébergeur autorise l’envoi de mails par PHP.


-  #FORMULAIRE_SITE

La balise #FORMULAIRE_SITE affiche un formulaire permettant aux visiteurs du site de proposer des référencements de sites. Ces sites apparaîtront comme « proposés » dans l’espace privé, en attendant une validation par les administrateurs.

Ce formulaire ne s’affiche que si vous avez activé l’option « Gérer un annuaire de sites » dans la Configuration sur site dans l’espace privé, et si vous avez réglé « Qui peut proposer des sites référencés » sur « les visiteurs du site public ».

Les sites référencés étant, dans SPIP, attachés aux rubriques, on ne peut placer ce #FORMULAIRE_SITE qu’à l’intérieur d’une boucle RUBRIQUES.


-  #

Placée à l’intérieur d’une boucle AUTEURS, cette balise affiche le formulaire qui permet d’envoyer un mail à l’auteur. Cela permet d’écrire aux auteurs sans divulguer leur adresse email sur le site public.

Placé dans une boucle ARTICLES, ce formulaire permet d’envoyer un mail à tous les auteurs de cet article.

Placé dans une boucle FORUMS, ce formulaire permet d’envoyer un mail directement à l’auteur du message si l’auteur est enregistré sur le site.

Inscription, authentification...


-  #FORMULAIRE_INSCRIPTION

Sans doute le plus importante, la balise #FORMULAIRE_INSCRIPTION affiche le formulaire permettant l’inscription. Voir la documentation sur cette balise.


-  #FORMULAIRE_LOGIN

Cette balise génère un formulaire de connexion à un compte SPIP. Elle peut recevoir 3 arguments :

  • l’URL de destination après identification. Cas spécifique : la valeur @page_auteur permet d’être redirigé après connexion sur le squelette public de l’auteur qui se connecte.
  • un tableau associatif d’options dont les valeurs peuvent être :
    • login :le login de la personne à identifier, s’il est déjà connu
    • prive : valeur qui indique si le login mène à l’espace privé (si elle n’est pas vide) ou public (si c’est une chaîne vide).
    • autofocus : lorsque cette valeur est false (une chaîne vide), il n’y aura pas d’autofocus sur le champ login (sinon, celui-ci reçoit le focus automatiquement).

Par exemple, dans le squelette distribué avec SPIP, le fichier login.html contient l’appel suivant :

[(#FORMULAIRE_LOGIN{#ENV{url}|sinon{#URL_ECRIRE{accueil}}})]

Dans cet exemple théorique, le login redirige vers la page ’cible’ du privé, l’identifiant proposé est ’toto’ et il n’y a pas d’autofocus :
#FORMULAIRE_LOGIN{cible,#ARRAY{login,toto,prive,1,autofocus,""}}

Si votre site offre une inscription automatique à l’espace privé, les données de connexion à l’espace public sont identiques à celles de l’espace privé ; c’est-à-dire que les données envoyées à l’utilisateur pour s’identifier à l’espace public lui permettent également d’accéder à l’espace privé. Si, au contraire, vous avez interdit l’inscription automatique à l’espace privé, il faut impérativement avoir au moins un article dont les forums seront réglés en mode « sur abonnement » pour activer cette balise ; dès lors, SPIP pourra fournir des informations de connexion pour le site public sans accès à l’espace privé.


-  #URL_LOGOUT

C’est le pendant de #FORMULAIRE_LOGIN ; la balise génère une URL permettant à un visiteur authentifié de se déconnecter.

Noter que #URL_LOGOUT étant une balise dynamique, elle renverra toujours quelque chose de sorte que les parties conditionnelles (La syntaxe des balises SPIP) de la balise seront toujours affichées. Ainsi une notation du type [<a href="(#URL_LOGOUT)">déconnexion</a>] retournera le source html <a href="">déconnexion</a> lorsque le visiteur n’est pas connecté. Pour un affichage conditionnel du lien de déconnexion, voir plus bas.

On peut passer un paramètre à cette balise pour spécifier l’adresse de retour après la déconnexion. Par exemple

[(#URL_LOGOUT{#URL_PAGE{sommaire}})]

renverra vers la page d’accueil.

Exemple complet pour gérer la connexion / déconnexion dans un gros squelette

Le test sur la connexion d’une personne est l’un des rares cas où il est fortement conseillé d’utiliser du PHP dans les squelettes, afin de ne pas générer un cache différent par personne.

<?php include_spip('inc/session'); if (session_get('id_auteur') > 0) { ?>
<a href="#URL_LOGOUT">déconnexion</a>
<?php } else { ?>
#FORMULAIRE_LOGIN
<?php ?>

Exemple complet pour gérer la connexion / déconnexion dans un petit squelette ayant son propre cache

[(#SESSION{id_auteur}|non) #LOGIN_PUBLIC]
[(#SESSION{id_auteur}|oui)<a href="#URL_LOGOUT">déconnexion</a>]

Attention ici : la balise #SESSION fait que le squelette où elle se trouve va générer un cache différent par personne. Il ne faut surtout pas l’utiliser dans un gros squelette ni une page entière, mais uniquement dans une petite inclusion dédié à ce besoin.

Styles

On peut sensiblement modifier l’interface graphique des formulaires par l’intermédiaire des feuilles de style. Voir : « Ils sont beaux, mes formulaires ! »

Notes

[1article, rubrique, brève, site ou forum

Auteur L’équipe de SPIP Publié le : Mis à jour : 10/02/25

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands