Les boucles et balises de recherche

SPIP dispose d’un moteur de recherche intégré. Il faut donc prévoir une page permettant d’afficher les résultats des recherches.

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}}

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

  1. 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 de class="surlignable" (ou dans un bloc descendant d’un bloc de class="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 de class="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 »).

Auteur L’équipe de SPIP Publié le : Mis à jour : 19/09/22

Traductions : عربي, català, Deutsch, English, Español, français, italiano, Nederlands, українська