Ein Silverstripe -Suchmodul, mit dem TNTSearch zum Indexinhalt verwendet wird.
composer require werkbot/werkbot-search
Fügen Sie der Seite die folgenden Erweiterungen hinzu
Page:: add_extension (SearchableExtension::class);
PageController:: add_extension (SearchControllerExtension::class); Sie müssen dev/build ausführen
Die Page::class muss eine Funktion erhalten, getIndexQuery definiert. Hier ist ein Beispiel für Seite:
/**
* 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;
}Dies ist eine einfache Abfrage, die vom Indexer verwendet wird, um Ihren Inhalt zu indizieren.
Diese Funktion kann jedoch angepasst werden, wie Sie möchten und auch zu DataObjects hinzugefügt werden.
Beachten Sie, dass vor der Erweiterung, die die Methode hinzufügt, hinzugefügt werden muss, wenn die getIndexQuery -Methode in einer SearchableExtension definiert ist. Andernfalls gibt die Methode die Standardeinstellung zurück: 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. Standardmäßig verwenden die hier verwendeten Vorlagen Klassen, die von externen CSS -Bibliotheken bereitgestellt werden. Wir empfehlen, beide für die beste Erfahrung zu installieren: