Ce tutoriel va vous permettre d'ajouter un champs au moteur de recherche interne d'Arfooo Annuaire.
Vous pourrez donc chercher par exemple l'adresse, le numéro de téléphone, fax...
Ouvrir :
- Code: Tout sélectionner
models/SiteModel.php
Chercher :
- Code: Tout sélectionner
function createSearchCriteria($phrase)
{
$phrase = strtr($phrase, '+-><()~*"', ' ');
$words = preg_split("#\s+#", $phrase);
$phrase = "+".implode(" +", $words);
$phrase = addslashes($phrase);
$c = new Criteria();
$c->add("MATCH (siteTitle, description)
AGAINST ('$phrase' IN BOOLEAN MODE)");
$c->addOr("LOCATE( '$phrase', url ) > 0 ");
return $c;
}
Remplacer par :
- Code: Tout sélectionner
function createSearchCriteria($phrase)
{
$rawPhrase = addslashes($phrase);
$phrase = strtr($phrase, '+-><()~*"', ' ');
$words = preg_split("#\s+#", $phrase);
$phrase = "+".implode(" +", $words);
$phrase = addslashes($phrase);
$c = new Criteria();
$c->add("MATCH (siteTitle, description)
AGAINST ('$phrase' IN BOOLEAN MODE)");
$c->addOr("LOCATE( '$rawPhrase', url ) > 0 ");
return $c;
}
Une fois cette modification effectué, rechercher la ligne :
- Code: Tout sélectionner
$c->addOr("LOCATE( '$rawPhrase', url ) > 0 ");
Une fois cette ligne localisé, il suffit d'ajouter après cette ligne, une nouvelle ligne contenant le nom du champs de la base de données.
Par exemple pour rechercher dans le champs fax, il faut ajouter cette ligne :
- Code: Tout sélectionner
$c->addOr("LOCATE( '$rawPhrase', faxNumber ) > 0 ");
Vous obtenez :
- Code: Tout sélectionner
$c->addOr("LOCATE( '$rawPhrase', url ) > 0 ");
$c->addOr("LOCATE( '$rawPhrase', faxNumber ) > 0 ");
- Code: Tout sélectionner
faxNumber
Cependant, à chaque nouveau champs ajouté, les requêtes à la base de données sont plus nombreuses, donc les performances seront diminuées.
Ce sera léger mais je tiens à le signaler.
Cordialement,
Arf

