このバンドルは、さまざまな検索エンジンを使用した全文検索のための統一インターフェイスと、検索フォームと結果をレンダリングするための twig テンプレートを備えたコントローラーを提供します。
注: このバンドルのバージョン 2 を参照していますが、バージョン 1 と比較して大きな変更が加えられています。
この検索バンドルを使用すると、サイトへの検索の追加が簡単になります。
提供されるものは次のとおりです。
現時点では、Google サイト検索はそのままサポートされています。 Google REST API を使用する実装が 1 つと、フロントエンドで JavaScript のみを使用して検索を読み込むカスタム検索要素機能を使用する実装が 1 つあります。
他のサービスへの貢献も歓迎します。
composer require liip/search-bundle
を使用してバンドルをインストールします。
バンドルを app/Kernel.php に含めます。
好みの検索エンジンを app/config/config.yml に追加します。
liip_search :
clients :
google_rest :
api_key : ' %google.api_key% '
search_key : ' %google.search_key% '
または、JavaScript の Google カスタム検索エンジンを使用している場合:
liip_search :
clients :
google_cse :
cse_id : ' %google.search_key% '
liip_search_box twig 関数を使用すると、ページ上の任意の場所に検索ボックスを表示できます。
{{ liip_search_box(query, 'query-field-id', 'css-class') }}
次のパラメータを使用して検索ボックスをカスタマイズできます。
<form>
全体に適用する CSS クラス。検索アクションのルートを作成します。最も簡単なのは、メイン プロジェクトの routing.xml から提供されている routing.xml を使用することです。
liip_search:
resource: "@LiipSearchBundle/Resources/config/routing.xml"
デフォルトは URL /search
です。別のルートが必要な場合は、ルートを含めるときにprefix
オプションを使用するか、 _controller
のデフォルト値として%liip_search.controller.search_action%
使用して独自のルートを構成します。
このバンドルによって提供される検索結果テンプレートは、 LiipSearchBundle::layout.html.twig
テンプレートを拡張します。サイトの残りの部分と統合するには、次の 2 つのオプションがあります。
app/Resources/LiipSearchBundle/views/layout.html.twig
を作成し、基本レイアウトを拡張して、検索結果が必要な場所にliip_search_content
ブロックを配置します。app/Resources/LiipSearchBundle/views/Search/search.html.twig
を作成し、独自のテンプレート構造を構築しますsearch_results.twig.html
テンプレートをuse
liip_search_content
ブロックを取得できるはずです。もちろん、テンプレートをオーバーライドして、テンプレートの動作をカスタマイズすることもできます。 http://symfony.com/doc/master/book/templates.html#overriding-bundle-templates を参照してください。
これは、 liip_search
キーで設定できる内容の完全なリファレンスです。
search_factory
文字列、デフォルト値: null
LiipSearchBundleSearchFactoryInterface
を実装するカスタム サービスを指定します。このサービスは、検索を処理するためのPagerfanta
インスタンスを作成するためにコントローラーによって使用されます。
検索エンジン サービスのいずれかを設定する場合、このフィールドを設定する必要はありません。
search_route
文字列、デフォルト値: liip_search
送信された検索リクエストを処理するルートの名前。
restrict_language
ブール値、デフォルト値: false
検索サービスに結果をリクエストの言語に制限するように依頼する場合は、これを true に変更します。
これらのオプションのいずれかを設定すると、Google 検索エンジン サービスが有効になります。これらはclients.google_rest
の下にあります。
api_key
文字列、必須
Google API キー
search_key
文字列|配列、必須
Google 検索エンジンを識別するキー。ロケールごとに異なるエンジンを使用するために、ロケールごとにインデックスが付けられたキーのリストである場合があります。別の検索エンジンを通じてロケールを制御する場合、カスタム検索エンジンに追加の言語制限を適用しない限り、 restrict_language
true に設定する必要はありません。
api_url
文字列、デフォルト値: https://www.googleapis.com/customsearch/v1
REST 呼び出し用の Google Search API URL
restrict_to_site
文字列、デフォルト値: null
空のままにすると、Google 検索エンジン用に設定されたすべてのサイトが検索されます。 aa ドメインに設定すると、そのドメインに制限されます。
このセクションを構成すると、JavaScript フラグメントをレンダリングして CSE 検索を有効にする別のコントローラーがアクティブになります。この構成はclients.google_cse
の下にあります。
cse_id
文字列|配列、必須
Google カスタム検索エンジンを識別するキー。ロケールごとに異なるエンジンを使用するために、ロケールごとにインデックスが付けられたキーのリストである場合があります。 CSE は、 restrict_language
をサポートしていないため、言語ごとに異なる検索エンジンを使用することが、検索結果の言語を制限する唯一のオプションです。
「Google Search Engine APIから空のレスポンスを受け取りました」というSearchException
発生した場合は、出力されたURLをブラウザにコピーしてみてください。 JSON 応答を取得する必要がありますが、エラー ステータスになる可能性があります。
ステータス 500 と空のメッセージが表示された場合は、Google 管理パネルで検索エンジンを更新する必要がある可能性があります。
LiipSearchBundleSearchInterface
を実装し、サービスとして構成します。次に、 liip_search.search_client
そのサービス名に設定します。