Custom Search

コンテンツタイプフィルタリング、タクソノミーセレクター、言語フィルター、カスタマイズ可能な検索パスなどの高度なオプションでデフォルトのDrupal検索フォームをカスタマイズします。

custom_search
12,360 sites
31
drupal.org

概要

Custom Searchは、デフォルトのDrupal検索機能を拡張・カスタマイズする強力なモジュールです。サイト管理者が検索体験のあらゆる側面を制御できる、高度に設定可能な検索Blockを提供します。

このモジュールにより、ユーザーが詳細検索ページに移動することなく、検索フォーム内に直接コンテンツタイプセレクター、タクソノミーボキャブラリーフィルター、言語オプションを追加できます。すべてのフォーム要素はドロップダウンリスト、チェックボックス、またはラジオボタンとして表示でき、ドラッグ&ドロップインターフェースで順序を並べ替えることができます。

追加機能には、カスタマイズ可能なラベルとプレースホルダーテキスト、送信ボタンの代わりに画像を使用する機能、詳細検索条件フィールド(OR、フレーズ、除外)、Tokenによる置換をサポートするカスタム検索パスがあります。また、コンテンツタイプフィルタリングリンクを含む検索結果表示のカスタマイズオプションも提供します。

Features

  • ラベル、プレースホルダーテキスト、ヒントテキスト、サイズ、最大長を設定可能なカスタマイズ可能な検索ボックス
  • テキストまたは画像オプションによる送信ボタンのカスタマイズ
  • 特定のNodeタイプで検索をフィルタリングできるコンテンツタイプセレクター(select、複数選択、チェックボックス、ラジオボタン表示をサポート)
  • 検索結果から特定のタイプを非表示にするコンテンツタイプ除外機能
  • 各ボキャブラリーに対して設定可能な深さ、ラベル、セレクタータイプを持つタクソノミーボキャブラリーフィルター
  • 特定の言語または現在の言語に検索を制限できる言語フィルター
  • OR(いずれかの単語を含む)、フレーズ(完全一致)、除外(単語を除外)を含む詳細検索条件フィールド
  • [key]、[types]、[terms]、[current_path]置換のためのTokenをサポートするカスタム検索パス
  • すべての検索フォーム要素のドラッグ&ドロップによる並べ替え
  • 検索フィールドにフォーカスするまで二次オプションを非表示にするポップアップ領域
  • コンテンツタイプ、作成者、日付情報の表示を制御する検索結果のカスタマイズ
  • 結果の上または下に配置されるコンテンツタイプフィルターリンクによる結果フィルタリング
  • Search APIを検索バックエンドとして使用するためのSearch API Page統合
  • フォームバリデーション、ポップアップ表示、チェックボックス処理のためのJavaScript拡張
  • 検索結果と個別の結果アイテム用のカスタムテンプレート

Use Cases

複数タイプサイトのコンテンツ固有検索

複数のコンテンツタイプ(記事、イベント、製品、FAQ)を持つウェブサイトで、Custom Searchを使用して訪問者が特定のコンテンツタイプに検索をフィルタリングできるようにします。ブロックを設定してコンテンツタイプのチェックボックスまたはドロップダウンを表示し、ユーザーが希望するコンテンツカテゴリ内のみを検索できるようにします。

カテゴリ分けされたコンテンツのタクソノミーフィルター検索

タクソノミー(例:トピック、カテゴリ、タグ)でコンテンツが整理されているサイトでは、検索フォームにボキャブラリーセレクターを追加します。ユーザーは特定のカテゴリやトピック内で検索でき、例えば「テクノロジー」タグが付いた検索語を含むすべての記事を見つけることができます。

多言語サイト検索

多言語ウェブサイトでは、言語セレクターを有効にして、ユーザーが特定の言語内で検索したり、検索を現在のインターフェース言語に制限したりできるようにします。これにより、ユーザーは希望する言語でコンテンツを見つけることができます。

条件フィールド付き詳細検索

OR、フレーズ、除外条件フィールドを有効にして、パワーユーザーに検索ブロック内で直接詳細検索オプションを提供します。ユーザーは特定の単語のいずれかを含むページ、完全一致フレーズ、または特定の用語を除外して検索できます。

外部または専門検索用のカスタム検索パス

ユーザーの選択に基づいて検索を異なる宛先にルーティングするカスタム検索パスを設定します。例えば、製品検索をコマース検索ページにルーティングしたり、検索語用の[key]などのURLトークンを使用して外部検索サービスと統合したりします。

ポップアップオプション付きのミニマリスト検索

ポップアップリージョン機能を使用して、メイン検索インターフェースをクリーンに保ちます。検索ボックスと送信ボタンをメインブロックリージョンに配置し、コンテンツタイプフィルター、タクソノミーセレクター、その他のオプションをポップアップリージョンに移動します。ユーザーが検索フィールドにフォーカスしたときにのみ表示されます。

ブランド検索ボタン

デフォルトのテキストベースの送信ボタンを、サイトのデザインに合わせたカスタム画像に置き換えます。ブロック設定で検索アイコンやブランドボタン画像をアップロードします。

Tips

  • コンテンツタイプが1つだけ選択されていても、ユーザーにセレクターを表示したい場合は「- すべて - を強制表示」オプションを使用してください
  • 「- すべて - で検索を制限」オプションを設定すると、すべてのコンテンツを検索するのではなく、セレクターに表示されているコンテンツタイプのみに検索を制限します
  • 使用頻度の低いオプションをポップアップリージョンに配置して、メイン検索フォームをクリーンに保ちながら、必要に応じて詳細オプションを提供できます
  • [current_path]トークン付きのカスタムパスを使用して、サイトの現在のセクション内に留まるコンテキスト対応の検索を作成できます
  • 複数選択またはチェックボックスを使用する場合、引数セパレーター設定により、複数の選択が検索クエリでどのように結合されるかが決まります
  • モジュールは新しいコンテンツタイプと言語が作成されると、自動的に検索ページ設定に追加します
  • 画像ボタンには、画像の場所の柔軟性のためにpublic://パス、相対パス、またはストリームラッパーURIを指定できます

Technical Details

Admin Pages 1
ブロックレイアウト /admin/structure/block

Custom Search formブロックを配置および設定します。配置されたCustom Search formブロックの「設定」をクリックしてブロック設定にアクセスします。

Hooks 5
hook_entity_bundle_create

新しいコンテンツタイプが作成されたときに、結果設定の設定に新しいNodeタイプを自動的に追加します。

hook_form_alter

検索ページの追加/編集フォームを変更してCustom Search設定を追加し、結果ページの検索フォームを変更して設定されたオプションを適用します。

hook_preprocess_block

Custom Searchブロックにrole='search'属性とcontainer-inlineクラスを追加します。

hook_theme

検索結果と個別の結果アイテム用のカスタムTheme hookを定義します。

hook_theme_registry_alter

Coreの検索結果テンプレートをCustom Searchテンプレートでオーバーライドします。

Troubleshooting 5
検索フォームは表示されるが、オプションが結果を正しくフィルタリングしない

Searchモジュールが適切に設定され、コンテンツがインデックスされていることを確認してください。ブロック設定で選択された検索ページがサイトの検索設定と一致していることを確認してください。設定変更後にDrupal Cacheをクリアしてください。

タクソノミーボキャブラリーセレクターにタームが表示されない

ボキャブラリーにタームがあり、深さ設定が0(深さを制限)に設定されていないことを確認してください。ブロック設定でボキャブラリーセレクタータイプが「無効」に設定されていないことを確認してください。

カスタム検索パスが機能しない

パスが正しい形式(パス|ラベル、1行に1つ)で入力されていることを確認してください。[key]、[types]、[terms]などのTokenのスペルが正しいことを確認してください。宛先パスが存在し、アクセス可能であることを確認してください。

ポップアップリージョンの要素が表示されない

ブラウザのCacheとDrupal Cacheをクリアしてください。custom_search/custom_search.frontライブラリが正しく読み込まれていることを確認してください。ブラウザコンソールでJavaScriptエラーを確認してください。

検索結果に期待されるコンテンツタイプや日付情報が表示されない

検索ページ設定フォーム(管理画面 > 環境設定 > 検索ページ > 編集)で結果情報設定を構成してください。希望する情報フィールド(コンテンツタイプ、作成者、日付)を有効にしてください。