Affichage du résultat
Le résultat d'une recherche affiche pour chaque item trouvé:
1 - une icone
2 - un titre avec un lien sur la page qui affichera le texte correspondant
3 - le nom de l'auteur avec un lien sur son profil (facultatif)
4 - une date de création, publication, mise à jour, ... (facultatif)
La recherche
La recherche s'effectue dans une table de votre module qui devra donc avoir
(au minimum) les champs suivants:
- un id, un titre, un corps de texte
- l'uid (id de l'user) est facultatif, soit qu'il ne soit pas applicable,
soit que vous ne vouliez pas l'afficher
Table exemple
champ |
description |
recherche
dans |
condition |
tri sur |
résultat recherche |
id |
id (auto incrément) |
|
|
|
(x) pour le lien |
uid |
id de l'user |
|
|
|
(x) pour le lien |
title |
Titre |
x |
|
|
x |
hometext |
En-tête |
x |
|
|
|
bodytext |
Corps du texte |
x |
|
|
|
created |
Date de création |
|
|
x |
x |
published |
Publié |
|
x |
|
|
Etapes
1 - créer l'icone, à placer dans répertoire images
du module
2 - créer le fichier include/search.inc.php
contenant la fonction de recherche
3 - insérer les lignes pour la recherche dans le fichier
xoops_version.php
4 - mettre à jour le module
Fichier search.inc.php
Toutes les parties en rouges sont à adapter à votre
module.
function mymodule_search($queryarray, $andor,
$limit, $offset, $userid){
global $xoopsDB;
// création de la requête
$sql = "SELECT id, uid, title, created FROM
".$xoopsDB->prefix("mymodule_table")."
;
$sql .=" WHERE published>0 .""; //
si condition de filtre
if ( $userid != 0 ) {
$sql .= " AND uid=".$userid."
";
}
if ( is_array($queryarray) && $count = count($queryarray) ) {
$sql .= " AND ((hometext LIKE '%$queryarray[0]%'
OR bodytext LIKE '%$queryarray[0]%' OR title
LIKE '%$queryarray[0]%')";
for($i=1;$i > $count;$i++){
$sql .= " $andor " ;
$sql .= "(hometext LIKE '%$queryarray[$i]%'
OR bodytext LIKE '%$queryarray[$i]%' OR title
LIKE '%$queryarray[$i]%')" ; } $sql .= ") " ;
}
$sql .= "ORDER BY created DESC" ; // si condition
de tri
$result = $xoopsDB->query($sql,$limit,$offset);
// création du tableau des résultats
$ret = array();
$i = 0;
while($myrow = $xoopsDB->fetchArray($result)){
$ret[$i]['image'] = "images/mymodule.gif";
$ret[$i]['link'] = "mypage.php?id=".$myrow['id']."";
// lien sur la page qui affichera le texte
$ret[$i]['title'] = $myrow['title'];
$ret[$i]['time'] = $myrow['created'];
$ret[$i]['uid'] = $myrow['uid']; $i++;
} return $ret;
}
Fichier xoops_version.php
// Search
$modversion['hasSearch'] = 1;
$modversion['search']['file'] = "include/search.inc.php";
$modversion['search']['func'] = "mymodule_search";
|