Liferayで任意の検索条件にヒットするコンテンツの一覧を表示する - Liferayで任意の検索条件にヒットするコンテンツの一覧を表示する - aegif Labo Blog Liferay
null Liferayで任意の検索条件にヒットするコンテンツの一覧を表示する
こんにちは。おおたにです。
今回は、任意の検索条件にヒットするコンテンツの一覧を表示する方法を紹介します。
従来のアセットパブリッシャーや動的コレクションでは、所定のユーザインタフェースで設定できる範囲でしかコンテンツ取得条件を設定できないため、コンテンツ一覧に表示したいコンテンツの条件次第ではアセットパブリッシャーやコレクション表示を利用できないことがありました。
今回紹介する方法では、検索ブループリントを利用して従来の設定よりも自由度の高いコンテンツ取得条件を指定し、コレクション表示に用いることができます。
なお、比較的新しいLiferay Quarterly Release、かつベータ版の機能を利用しますのでご注意ください(今回はLiferay DXP 2024.Q1で動作確認しましたが、もう少し古いバージョンでも実装されていそうです)。
事前準備
ベータ機能はデフォルトでは全て無効化されているため、利用するベータ機能を有効化する必要があります。具体的な手順は以下のとおりです。
1. 管理者でログインする
2. アプリケーションメニュー > コントロールパネル > インスタンス設定 > 機能フラグ > ベータ を開き、「検索ブループリントのコレクション」を有効にする
なお、このオプションが表示されない場合はまだ実装されていないバージョンということになります。
検索ブループリントを作成する
まずは検索ブループリントを作成します。今回は、タイトルもしくは本文に「liferay」が含まれるWebコンテンツを直接返すような検索ブループリントを定義してみます。
1. アプリケーションメニュー > アプリケーション > ブループリント を開き、「+」アイコンをクリックし、タイトルに「sample blueprint」と入力して作成ボタンをクリックする
2. クエリ要素タブで、以下のクエリ要素を追加する
- FILTER > 検索をHEADバージョンに制限
- MATCH > 複数フィールドに対するテキストの一致
- 一致するテキスト : liferay
3. クエリ設定タブで、検索可能なタイプを「選択したタイプ」に変更し、アセットタイプ「Webコンテンツ」を選択する
4. 保存ボタンをクリックする
以上で検索ブループリントの作成は完了です。
コレクションプロバイダを確認する
次に、検索ブループリントがコレクションプロバイダとして登録されていることを確認します。
1. 適当なサイトに移動し、プロダクトメニュー > コンテンツ > Webコンテンツ を開き、動作確認用に以下のWebコンテンツを作成する
- タイトル : search hit test 1 ライフレイ、本文 : 適当(ただし「liferay」を含めない)
- タイトル : search hit test 2 liferay、本文 : 適当
- タイトル : search hit test 3 ライフレイ、本文 : 適当(ただし「liferay」を含めない)
- タイトル : search hit test 4 liferay、本文 : 適当
2. サイトビルダー > アセットリスト > コレクションプロバイダー を開き、「sample blueprint」が表示されていることを確認する
3. 「sample blueprint」のアクションメニュー > 項目の参照 をクリックし、アセットのリストに「search hit test 2 liferay」と「search hit test 4 liferay」が表示されていることを確認する
これで検索ブループリントがコレクションプロバイダとして登録され、適切にコンテンツ一覧を取得していることが確認できました。なお、ベータ機能「検索ブループリントのコレクション」が無効化されていると、コレクションプロバーダーに検索ブループリントが表示されません。
コレクション表示でコンテンツ一覧を表示してみる
では、実際にコンテンツの一覧をページ上に表示してみましょう。
コンテンツページに「コレクション表示」フラグメントを配置し、「コレクション」欄にコレクションプロバイダ「sample blueprint」を設定します。
あとは、適宜表示を整えれば完了です(フラグメントを使ったコンテンツページ作成について学びたいという場合は弊社までお問い合わせください)。
このような形で、任意に指定した検索条件にヒットするコンテンツの一覧を表示することができました。
今回の紹介は以上です。上記の例はシンプルなものでしたが、検索ブループリントはElasticsearchクエリなどの低レベルな検索条件指定もできるため、実質的には相当な自由度でコレクション表示のコンテンツ取得条件を設定できるようになったと言えます。
皆様も是非試してみてください。