Google Programmable Search Engine

Google APIキーを必要とせずに、Google Programmable Search Engineを統合してDrupalサイトや他のサイトを検索できるようにします。

google_cse
7,399 sites
28
drupal.org

インストール

Drupal 11, 10 v5.0.3
composer require 'drupal/google_cse:^5.0'
Drupal 9 v4.0.0
composer require 'drupal/google_cse:^4.0'

概要

Google Programmable Search Engine(旧称:Google Custom Search Engine)は、Drupalの組み込み検索をGoogleの検索技術で置き換えたり補完したりできる強力なモジュールです。このモジュールは、Googleの高度なインデックス作成とランキングアルゴリズムを活用して、1つ以上のサイトのセットを検索できる埋め込み検索エンジンを提供します。

このモジュールは、設定可能な検索Pluginを提供することでDrupalのCore Searchモジュールを拡張します。検索結果はJavaScriptレンダリングによりサイト上に直接表示するか、ユーザーをGoogleにリダイレクトして結果を表示することができます。オーバーレイ、全幅、2カラム、コンパクト、結果のみなど、複数のレイアウトオプションが利用可能です。

インライン検索機能を好むサイト向けに、検索入力と結果表示を同一ページ上で組み合わせるBlockが含まれており、サイドバーやコンテンツ領域に検索機能を埋め込むのに最適です。また、Googleのdata属性を通じた広範なカスタマイズをサポートしており、言語制限、国フィルタリング、SafeSearch設定など、検索動作のきめ細かい制御が可能です。

Features

  • Google APIキーを必要とせずにGoogle Programmable Search Engineを統合
  • 設定可能な検索PluginでDrupal Core Searchモジュールを拡張
  • 複数のレイアウトオプション:オーバーレイ、全幅、2カラム、コンパクト、結果のみ、Googleホスト
  • 検索結果をサイト上に表示(JavaScript必須)またはGoogleにリダイレクトするオプション
  • 任意のページに検索フォームとインライン結果を埋め込むためのスタンドアロン検索Block
  • URL柔軟性のためのカスタマイズ可能なクエリパラメータキー
  • 検索動作を制御するGoogleのdata属性(言語、国、SafeSearchなど)のサポート
  • 検索結果のARIA role属性を含むアクセシビリティ改善
  • ブランディングガイドラインに基づくオプションのGoogle透かし表示
  • カスタムCSSスタイルシートのオーバーライドサポート
  • 検索結果の前後に表示するプレフィックス・サフィックステキスト
  • 設定可能な検索入力幅
  • Drupal 7インストールからのマイグレーションサポート
  • 異なる検索設定のための複数検索インスタンスサポート

Use Cases

Drupalの組み込み検索を置き換え

Google Programmable Searchをデフォルト検索として設定し、サイトコンテンツに対するGoogleの優れたインデックス作成とランキングを活用します。ユーザーはオートコンプリートなどの機能を備えたおなじみのGoogle形式の結果を得られ、管理者は検索インデックス作成をGoogleに委託できるメリットがあります。

マルチサイト検索ポータル

複数のウェブサイトをインデックスするようにGoogle Programmable Search Engineを設定し、このモジュールを使用して単一のDrupalサイトから組織のすべてのウェブプロパティにまたがる統一された検索体験を提供します。

埋め込み検索Block

サイドバーやコンテンツ領域にGoogle Programmable Search Blockを配置して、同一ページ上で結果を表示するインライン検索を提供します。ドキュメントサイトやナレッジベースなど、現在のコンテキストを離れずに検索に素早くアクセスしたいユーザーに最適です。

多言語サイト検索

Googleのdata属性を使用して、言語や国によって検索結果を制限またはブーストします。複数言語のコンテンツを持つサイト向けに、異なる言語フィルターで複数の検索インスタンスを設定できます。

教育サイト向けセーフサーチ

data属性を通じてSafeSearchフィルタリングを有効にして、教育機関やファミリー向けウェブサイトで適切な検索結果を保証します。

Tips

  • モジュールをインストールする前にprogrammablesearchengine.google.comで検索エンジンを登録してください
  • 最もシームレスな統合のために、Drupalの検索入力と「結果のみ」レイアウトを組み合わせて使用してください
  • ファミリー向けサイトでは厳格なSafeSearchのためにdata-safeSearch属性を「active」に設定してください
  • カスタムCSSを使用してGoogleの検索結果スタイリングをサイトのテーマに合わせてください
  • 異なるユースケース(サイト検索とドキュメント検索など)のために複数の検索インスタンスを作成できます
  • Googleの透かし表示はGoogleのブランディングガイドラインに従っています - 要件についてはドキュメントを確認してください
  • アクセシビリティ準拠のため、「アクセシビリティ改善を追加」オプションを有効のままにしてください
  • JavaScriptを無効にして検索機能をテストし、noscriptフォールバックが正しく動作することを確認してください

Technical Details

Admin Pages 1
Google Programmable Search ページを追加 /admin/config/search/pages/add/google_cse_search

新しいGoogle Programmable Searchページインスタンスを作成します。異なる設定で複数のインスタンスを作成できます。

権限 1
Google Programmable Searchを表示

ユーザーがGoogle Programmable Searchの結果を表示・使用できるようにします。検索設定の管理権限は「検索を管理」権限で個別に制御されます。

Hooks 4
google_cse_form_search_block_form_alter

Google PSEがデフォルト検索として設定されている場合にCore検索Blockフォームを変更します。検索入力の幅、透かし表示を設定し、設定に応じてGoogleにリダイレクトします。

google_cse_library_info_build

検索Pluginで設定されたカスタム外部CSSファイルのライブラリ定義を動的に構築します。

google_cse_entity_insert

新しいGoogle CSE検索ページEntityが作成された際に、新しいルートを登録するためにルーターCacheをクリアします。

google_cse_migration_plugins_alter

Drupal 7からアップグレードする際にGoogle CSE設定のマイグレーションを含めるようにマイグレーションPluginを変更します。

Troubleshooting 5
検索結果が表示されない

ブラウザでJavaScriptが有効になっていることを確認してください。結果を「このサイト上」で表示するよう設定されている場合、JavaScriptが必要です。また、Google検索エンジンID(cx)が正しく入力されていることを確認してください。

Blockで同一ページに結果が表示されない

Google Programmable Search Blockを検索結果ページに配置しないでください。このBlockは他のページへの埋め込み用に設計されており、検索ページに配置すると競合が発生します。

Data属性が機能しない

data属性のキーが「data-」で始まり、値には英数字、アンダースコア、ハイフン、ピリオドのみが含まれていることを確認してください。各属性にはキーと値の両方を指定する必要があります。

カスタムクエリパラメータが認識されない

クエリパラメータキーを変更した後、すべてのDrupal Cacheをクリアしてください。モジュールは自動的にルートを再構築しますが、Cacheされたページでは古いパラメータが使用されている場合があります。

検索フォームが正しい幅で表示されない

「検索入力の幅」設定が0より大きい値に設定されていることを確認してください。0に設定するとブラウザのデフォルトの入力幅が使用されます。

Security Notes 4
  • モジュールは検索エンジンID(cx)とSafeSearch設定のURLクエリパラメータが設定値と一致することを検証し、URLの改ざんを防止します
  • Data属性の値は英数字のみの文字制限により検証され、XSSを防止します
  • プレフィックスとサフィックスのHTMLコンテンツはXSSフィルタリングを受けます - scriptタグは除去され、基本的なHTMLは許可されます
  • カスタムCSS URLは外部スタイルシートとして読み込まれるため、信頼できるソースからのものである必要があります