SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

Télécharger

Les boucles et balises de recherche

Mai 2001 — mis à jour le : 21 juin

Toutes les versions de cet article :

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 :

  1. <h1><:resultats_recherche:>[ (#RECHERCHE)]</h1>
  2.  
  3. <B_articles>
  4. <h2><:info_articles_trouves:></h2>
  5. <ul>
  6.         <BOUCLE_articles(ARTICLES) {recherche} {!par points}>
  7.         <li>#POINTS <a href="#URL_ARTICLE">#TITRE</a></li>
  8.         </BOUCLE_articles>
  9. </ul>
  10. </B_articles>

Surligner la requête dans les autres pages

SPIP offre une option pour souligner la requête au sein des pages. Cette option était activée par défaut jusqu’à SPIP 2.0. A partir de SPIP 3.0, il faut l’activer à la main 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 :

  1. if (isset($_REQUEST['recherche'])) {
  2.   $_GET['var_recherche'] = $_REQUEST['recherche'];
  3. }

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 »).

Pour les versions inférieures à SPIP 2.0
#DEBUT_SURLIGNE, #FIN_SURLIGNE sont deux balises qui indiquent à SPIP dans quelle partie de la page colorer les mots recherchés. Ces balises propres au site sont disponibles à n’importe quel endroit des squelettes.

Quand l’internaute arrive sur une page depuis la page des résultats de recherche, les mots cherchés sont automatiquement colorés dans la page trouvée. SPIP ne distingue pas, par exemple, entre un menu, du code javascript ou le texte de l’article, il colore les mots partout, ce qui peut être moche ou même créer des problèmes dans les scripts. On peut utiliser ces deux balises pour limiter la coloration à une partie de la page. Par exemple :

  1. <BOUCLE_article(ARTICLES) {id_article}>
  2. <INCLURE{fond=inc-menu-rubriques}>
  3. #DEBUT_SURLIGNE
  4.         <h1>#TITRE</h1>
  5.         #CHAPO
  6.         #TEXTE
  7. #FIN_SURLIGNE
  8. #NOTES
  9. </BOUCLE_article>

-  La variable de personnalisation $nombre_surligne représente le nombre maximum de fois où un mot recherché sera surligné dans le texte. Par défaut, cette valeur est définie à 4.

Les balises #DEBUT_SURLIGNE et #FIN_SURLIGNE ainsi que la variable de personnalisation $nombre_surligne sont obsolètes en 2.0.3.


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé