Le formulaire de recherche
Pour afficher le formulaire de recherche, il suffit d’insérer la balise :
#FORMULAIRE_RECHERCHE
Le formulaire renvoit par défaut vers spip.php?page=recherche
; vous devez donc réaliser un squelette recherche.html
permettant d’afficher les résultats.
Vous pouvez décider d’utiliser une autre page d’affichage des résultats. Pour cela, il faut utiliser la balise de la manière suivante :
#FORMULAIRE_RECHERCHE{#URL_PAGE{xxx}}
où xxx
est la page vers laquelle vous désirez envoyer l’utilisateur, et xxx.html
est son squelette.
Le squelette des résultats
Les boucles permettant d’afficher les résultats de la recherche sont, en réalité, des boucles déjà abordées ici : ARTICLES, RUBRIQUES, BREVES et FORUMS. Vous pouvez en effet effectuer des recherches non seulement sur les articles, mais aussi sur les rubriques, les brèves et les forums.
- La seule différence, par rapport à ce qui est documenté dans le manuel de référence des boucles, est le choix du critère de sélection, qui doit être {recherche}
. Les autres critères d’affichage et les balises de ces boucles restent ici valables.
- Cependant, afin de classer les résultats par pertinence, on utilisera de préférence ce nouveau critère d’affichage : {par points}
. Les résultats sont en général affichés par ordre décroissant de score {!par points}
, c’est-à-dire de pertinence.
- Enfin, on pourra utiliser la balise #POINTS
, qui affiche la pertinence des résultats (attention, dans l’absolu cette valeur n’est pas très explicite, elle est surtout utile pour le classement des résultats).
- La balise #RECHERCHE
affiche la requête formulée par le visiteur.
Exemple de boucle complète :
<h1><:resultats_recherche:>[ (#RECHERCHE)]</h1>
<B_articles>
<h2><:info_articles_trouves:></h2>
<ul>
<BOUCLE_articles(ARTICLES) {recherche} {!par points}>
<li>#POINTS <a href="#URL_ARTICLE">#TITRE</a></li>
</BOUCLE_articles>
</ul>
</B_articles>
Surligner la requête dans les autres pages
SPIP offre une option pour souligner la requête au sein des pages, il faut l’activer en ajoutant les lignes suivantes dans le fichier mes_options.php
define('_SURLIGNE_RECHERCHE_REFERERS',true);
Pour bénéficier de la mise en évidence des termes de la recherche dès la première page d’affichage (par exemple dans le cas où la recherche ne renvoit pas vers recherche.html), ajouter dans le fichier mes_options.php :
if (isset($_REQUEST['recherche'])) {
$_GET['var_recherche'] = $_REQUEST['recherche'];
}
La mise en évidence des termes de la recherche se fait par le biais de la bibliothèque jQuery qui colorie en jaune le terme recherché
- Si la variable
recherche
existe dans l’url, elle est d’abord nettoyée pour éviter toute attaque par injection, puis, si le terme de la recherche se trouve directement dans un bloc declass="surlignable"
(ou dans un bloc descendant d’un bloc declass="surlignable"
), il s’affiche en highlight dans un<span class="spip_surligne">.../span>
- S’il se trouve directement dans un bloc de
class="pas_surlignable"
(ou dans un bloc descendant d’un bloc declass="pas_surlignable"
), il s’affiche normalement (nohighlight). - L’apparence visuelle du surlignement peut être changée en modifiant la définition de style de
.spip_surligne
(voir : « Modifier l’habillage graphique »).