Dieses Bundle bietet eine einheitliche Schnittstelle für die Volltextsuche mit verschiedenen Suchmaschinen und einen Controller mit Twig-Vorlagen zur Darstellung von Suchformularen und -ergebnissen.
Hinweis: Sie sehen sich Version 2 dieses Bundles an, bei der es im Vergleich zu Version 1 große Änderungen gab.
Dieses Suchpaket vereinfacht das Hinzufügen einer Suche zu Ihrer Website.
Für Sie bereitgestellt sind:
Derzeit wird die Google-Site-Suche standardmäßig unterstützt. Es gibt eine Implementierung, die die Google REST API verwendet, und eine Implementierung, die die Funktion „Benutzerdefiniertes Suchelement“ verwendet, die die Suche nur mit Javascript im Frontend lädt.
Beiträge für andere Dienste sind willkommen.
Installieren Sie das Bundle mit composer require liip/search-bundle
.
Fügen Sie das Bundle in app/Kernel.php ein.
Fügen Sie Ihre bevorzugte Suchmaschine in app/config/config.yml hinzu:
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
Oder wenn Sie die benutzerdefinierte Javascript-Suchmaschine von Google verwenden:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
Mit der Zweigfunktion liip_search_box können Sie an einer beliebigen Stelle auf der Seite ein Suchfeld anzeigen:
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
Sie können das Suchfeld mit diesen Parametern anpassen:
<form>
angewendet werden soll.Erstellen Sie eine Route für die Suchaktion. Am einfachsten ist es, einfach die bereitgestellte „routing.xml“ aus Ihrem Hauptprojekt „routing.xml“ zu verwenden:
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
Standardmäßig wird die URL /search
verwendet. Wenn Sie eine andere Route wünschen, verwenden Sie beim Einfügen der Route die prefix
oder konfigurieren Sie Ihre eigene Route mit %liip_search.controller.search_action%
als Standardwert für _controller
.
Die von diesem Bundle bereitgestellten Suchergebnisvorlagen erweitern die Vorlage LiipSearchBundle::layout.html.twig
. Für die Integration in den Rest Ihrer Website haben Sie zwei Möglichkeiten:
app/Resources/LiipSearchBundle/views/layout.html.twig
und erweitern Sie Ihr Basislayout, indem Sie einen liip_search_content
-Block an der Stelle einfügen, an der Sie die Suchergebnisse haben möchten.app/Resources/LiipSearchBundle/views/Search/search.html.twig
und erstellen Sie Ihre eigene Vorlagenstruktur. Sie sollten in der Lage sein, die Vorlage search_results.twig.html
zu use
, um den Block liip_search_content
abzurufen.Natürlich können Sie auch jede der Vorlagen überschreiben, um deren Funktion anzupassen. Siehe http://symfony.com/doc/master/book/templating.html#overriding-bundle-templates
Dies ist die vollständige Referenz dessen, was Sie unter dem Schlüssel liip_search
konfigurieren können:
search_factory
string , Standardwert: null
Geben Sie einen benutzerdefinierten Dienst an, der LiipSearchBundleSearchFactoryInterface
implementiert. Dieser Dienst wird vom Controller verwendet, um Pagerfanta
-Instanzen zur Abwicklung der Suche zu erstellen.
Wenn Sie einen der Suchmaschinendienste konfigurieren, müssen Sie dieses Feld nicht festlegen.
search_route
string , Standardwert: liip_search
Der Name der Route, die übermittelte Suchanfragen verarbeitet.
restrict_language
boolean , Standardwert: false
Ändern Sie dies in „true“, wenn Sie den Suchdienst bitten möchten, die Ergebnisse auf die Sprache der Anfrage einzuschränken.
Durch die Konfiguration einer dieser Optionen wird der Google-Suchmaschinendienst aktiviert. Sie befinden sich unter clients.google_rest
.
api_key
string , erforderlich
Ihr Google API-Schlüssel
search_key
string|array , erforderlich
Der Schlüssel zur Identifizierung Ihrer Google-Suchmaschine. Kann eine Liste von Schlüsseln sein, die nach Gebietsschema indiziert sind, um unterschiedliche Engines pro Gebietsschema zu verwenden. Wenn Sie Gebietsschemas über separate Suchmaschinen steuern, müssen Sie restrict_language
nicht auf „true“ setzen, es sei denn, Sie möchten, dass Ihre benutzerdefinierten Suchmaschinen zusätzlich eine Sprachbeschränkung erhalten.
api_url
Zeichenfolge , Standardwert: https://www.googleapis.com/customsearch/v1
Die Google Search API-URL für REST-Aufrufe
restrict_to_site
string , Standardwert: null
Bleibt dieses Feld leer, werden alle für die Google-Suchmaschinen konfigurierten Websites durchsucht. Legen Sie eine Domäne fest, um die Domäne auf diese Domäne zu beschränken.
Durch die Konfiguration dieses Abschnitts wird ein anderer Controller aktiviert, der das Javascript-Fragment rendert, um die CSE-Suche zu ermöglichen. Diese Konfiguration befindet sich unter clients.google_cse
.
cse_id
string|array , erforderlich
Der Schlüssel zur Identifizierung Ihrer benutzerdefinierten Google-Suchmaschine. Kann eine Liste von Schlüsseln sein, die nach Gebietsschema indiziert sind, um unterschiedliche Engines pro Gebietsschema zu verwenden. CSE unterstützt die restrict_language
nicht , daher sind unterschiedliche Suchmaschinen pro Sprache Ihre einzige Möglichkeit, die Sprache der Suchergebnisse einzuschränken.
Wenn Sie SearchException
mit der Meldung „Leere Antwort von Google Search Engine API erhalten“ erhalten, versuchen Sie, die URL, die ausgegeben wird, in einen Browser zu kopieren. Sie sollten eine JSON-Antwort erhalten, diese hat jedoch wahrscheinlich einen Fehlerstatus.
Wenn Sie den Status 500 mit einer leeren Nachricht erhalten, besteht die Möglichkeit, dass Sie die Suchmaschine im Google-Admin-Panel erneuern müssen.
Implementieren Sie LiipSearchBundleSearchInterface
und konfigurieren Sie es als Dienst. Setzen Sie dann liip_search.search_client
auf diesen Dienstnamen.