web-dev-qa-db-ja.com

検索インデックスにカスタムページまたはビューページを追加するにはどうすればよいですか?

カスタムコントローラーにビルドされたカスタムページがあるとします。または、同様に、クラシックな「admin/content」ページなどのノードのリストを表示するビューページ。

特定のユーザー役割がサイトを検索するときにこのページを見つけられるようにしたい。検索では、ビュー/ページのコンテンツ全体にインデックスを付ける必要はなく、コンテンツの選択した部分にインデックスを付ける必要があります。

コアフックを使用してこれを行うことは可能ですか?そうでない場合、おそらく検索APIフックを使用していますか?インデックス作成プロセスをフックして、インデックスを作成するページを取得して送信することを考えています。しかし、コアデータベース検索またはSolrを使用した検索APIを使用して実装が機能する抽象的な方法でこれを行う方法はわかりません。

注Drupal 7または8個のアイデアをいただければ幸いです。

2
awm

はい、Core/Search APIモジュールのいずれかにカスタム検索インデックスを提供することが可能です。どちらのモジュールも D8プラグインAPI を使用して、新しいインデックスを提供するための独自のプラグインタイプを作成します。

  • Coreでは、SearchPluginプラグインタイプを使用して、検索のすべての側面に実装する必要があるメソッドを定義できます。これがどのように機能するかを確認するには、コアのプラグイン UserSearchNodeSearch プラグインを調べて、クエリとインデックス付けとのインターフェースを確認してください。

  • SearchAPIには、検索のさまざまな側面とのインターフェースとして、さまざまな プラグインタイプ があります。簡潔にするため、 SearchApiDatasource プラグインタイプを調べて、新しいインデックス可能なソースの提供を開始する必要があります。

「コアデータベース検索またはsolrを使用した検索apiを使用して実装が機能する抽象的な方法」に関しては、OOPと、使用しているプラ​​グインクラスを使用して賢くする必要があります。そのようなことをしたい場合は、モジュールで提供します。最初にそれぞれを実装してから、後で抽象化することをお勧めします(メリットがある場合)。

1
Shawn Conn