Un module de recherche Silverstripe qui utilise TNTSearch pour indexer le contenu.
composer require werkbot/werkbot-search
Ajouter les extensions suivantes à la page
Page:: add_extension (SearchableExtension::class);
PageController:: add_extension (SearchControllerExtension::class); Vous devrez exécuter dev/build
La Page::class devra définir une fonction getIndexQuery . Voici un exemple de page:
/**
* getIndexQuery
* This query is used when building the index
*
* @return string|boolean - FALSE if not set
*/
public function getIndexQuery ()
{
return " SELECT
concat( " Page_ " , SiteTree.ID) AS ID,
SiteTree.ClassName,
SiteTree.Title,
SiteTree.Content
FROM
Page
LEFT JOIN
SiteTree
ON
SiteTree.ID = Page.ID
WHERE
SiteTree.ShowInSearch = '1' "
AND
SiteTree.Content IS NOT NULL;
}Il s'agit d'une question simple utilisée par l'indexeur pour indexer votre contenu.
Cette fonction peut être personnalisée comme vous le souhaitez et peut également être ajoutée aux DataObjects.
Notez que si la méthode getIndexQuery est définie dans une DataExtension, la SearchableExtension doit être ajoutée avant l'extension qui ajoute la méthode. Sinon, la méthode renverra la valeur par défaut: false.
SearchableDataObject:: add_extension (SearchableExtension::class); // MUST BE APPLIED FIRST for getIndexQuery to return SQL Query string.
SearchableDataObject:: add_extension (SearchableDataObjectExtension::class); // Defines getIndexQuery SQL Query string. Par défaut, les modèles utilisés ici utilisent des classes fournies par les bibliothèques CSS externes. Nous suggérons d'installer les deux pour la meilleure expérience: