Customizing Liferay's Look and Feel
ご覧のページは、お客様の利便性のために一部機械翻訳されています。また、ドキュメントは頻繁に更新が加えられており、翻訳は未完成の部分が含まれることをご了承ください。最新情報は都度公開されておりますため、必ず英語版をご参照ください。翻訳に問題がある場合は、 こちら までご連絡ください。

フロントエンドデータセットフィルタークライアント拡張機能の使用

Liferay DXP 2024.Q2+/ポータル GA120+

フロントエンド データ セット フィルター クライアント拡張機能は、カスタマイズ可能なフィルター インターフェイスを作成するための JavaScript 関数を定義します。 これらの拡張機能を データ セット に追加すると、カスタマイズされたフィルタリング機能が提供され、ユーザー エクスペリエンスが向上します。

前提条件

  1. サポートされているバージョンの Javaをインストールします。

    サポートされている JDK、データベース、環境については、 互換性マトリックス を確認してください。 推奨される JVM 設定については、 JVM 構成 を参照してください。

  2. サンプルワークスペースをダウンロードし、解凍します。

    curl -o com.liferay.sample.workspace-latest.zip https://repository.liferay.com/nexus/service/local/artifact/maven/content\?r\=liferay-public-releases\&g\=com.liferay.workspace\&a\=com.liferay.sample.workspace\&\v\=LATEST\&p\=zip
    
    unzip com.liferay.sample.workspace-latest.zip
    

これで、クライアント拡張機能を介して最初のカスタム フィルターを展開するためのツールが手に入りました。

カスタムフィルターの調査と変更

フロントエンドデータセットフィルタークライアント拡張機能は、サンプルワークスペースの client-extensions/liferay-sample-fds-filter/ フォルダーにあります。 client-extension.yaml ファイルに定義されています。

liferay-sample-fds-filter:
    name: Liferay Sample FDS Filter
    type: fdsFilter
    url: index.*.js

クライアント拡張機能のIDは liferay-sample-fds-filter で、JavaScriptリソースファイルの場所を定義する typeurl プロパティなど、カスタム要素クライアント拡張機能の主要な構成が含まれています。

また、assembleブロックが含まれています。

assemble:
    - from: build/static
      into: static

これは、 build/static フォルダ内のすべてを、ビルドされたクライアント拡張 .zip ファイルに静的リソースとして含めることを指定します。 クライアント拡張機能内の JavaScript ファイルは、Liferay では静的リソースとして使用されます。

コードを理解する

src/index.ts ファイルは、カスタマイズ可能なフィルター インターフェイスを提供する 3 つの主要な JavaScript 関数を定義します。 descriptionBuilderhtmlElementBuilderoDataQueryBuilderは、それぞれフィルターの状態の記述、フィルターの UI のレンダリング、および OData クエリの構築を担当します。

descriptionBuilder() 関数は、フィルターの内部状態 (selectedData) を受け取り、それを人間が読める文字列として返します。 ここでは、ユーザーが入力した OData クエリ文字列を返します。

function descriptionBuilder(selectedData: FilterData): string {
	return selectedData;
}

htmlElementBuilder() 関数は、フィルターを構成するときにユーザーに表示される UI をレンダリングします。 OData クエリ文字列の入力フィールドと送信ボタンを作成し、 setFilter コールバックを使用してフィルターの状態を更新するためのイベント ハンドラーをボタンに添付します。

div 要素を作成し、クラス名 dropdown-itemを割り当て、この div に入力フィールドとボタンを追加して、div を返します。

	const div = document.createElement('div');
	div.className = 'dropdown-item';

	div.appendChild(input);
	div.appendChild(button);

	return div;

oDataQueryBuilder() 関数は、フィルターの内部状態 (selectedData) を取得し、それをデータ セットをフィルター処理するための OData クエリ文字列として返します。

function oDataQueryBuilder(selectedData: FilterData): string {
	return selectedData;
}

次に、上記で定義した 3 つの主要な関数を組み込んだ FDSFilter インターフェイスを実装するオブジェクト fdsFilter が作成されます。 このオブジェクトはモジュールのデフォルトのエクスポートとしてエクスポートされます。

const fdsFilter: FDSFilter<FilterData> = {
	descriptionBuilder,
	htmlElementBuilder,
	oDataQueryBuilder,
};

export default fdsFilter;

次に、クライアント拡張機能をデプロイします。

カスタム要素クライアント拡張機能をLiferayにデプロイする

新しいLiferay インスタンスを起動し、以下を実行します。

docker run -it -m 8g -p 8080:8080 liferay/portal:7.4.3.132-ga132

http://localhost:8080でLiferayにサインインします。 メールアドレス test@liferay.com とパスワード testを使用してください。 プロンプトが表示されたら、パスワードを learnに変更します。

Liferay が起動したら、サンプル ワークスペースのクライアント拡張機能のフォルダーから次のコマンドを実行します。

../../gradlew clean deploy -Ddeploy.docker.container.id=$(docker ps -lq)

これにより、クライアント拡張が構築され、Liferayのdeploy/フォルダにzipをデプロイします。

クライアント拡張機能をLiferay SaaSにデプロイするには、Liferay Cloud コマンドラインツール を使用して lcp deployを実行します。

ヒント

ワークスペース内のすべてのクライアント拡張機能を同時にデプロイするには、 client-extensions/ フォルダーからコマンドを実行します。

Liferayインスタンスのコンソールでデプロイメントを確認します。

STARTED liferaysamplecustomelement1_7.4.13

クライアント拡張機能がデプロイされたので、フィルターが正しく動作しているかどうかを確認します。

データセットにカスタムフィルターを追加する

ベータ機能

重要

現在、この機能は ベータ機能フラグ (LPS-164563) によってサポートされています。

まず環境を設定します。

  1. LPS-164563 ベータ機能フラグを有効にします。

  2. Minium テンプレートを使用してサイト を作成します。

    これにより、データセットに表示される製品がデータベースに入力されます。

    Minium テンプレートに基づいてサイトを作成します。

  3. 次の設定を使用してデータセット を作成します。

    項目コンテント
    名前Products
    REST アプリケーション/headless-commerce-admin-catalog/v1.0
    REST スキーマProduct
    REST エンドポイント/v1.0/products

    製品を表示するためのデータセットを作成します。

  4. Products データ セットをクリックして編集を開始します。

    または、データ セットの横にある アクション (Actions menu) をクリックし、 編集 (Edit) を選択します。

  5. 可視化モード タブを選択します。

  6. 追加 (Add icon) をクリックし、 catalogIdid、および name フィールドを選択します。

    これにより、データ セットに表示されるテーブル視覚化モードに 3 つのフィールドが追加されます。

    テーブル視覚化モードに catalogId、id、および name フィールドを追加します。

  7. フィルター タブを選択します。

  8. 追加 (Add icon) をクリックし、 クライアント拡張を選択します。 次の設定を使用して情報を入力します。

    項目コンテント
    名前Filter by Name
    次の項目で絞り込むname
    クライアント拡張Liferay Sample FDS Filter

    Liferay サンプル FDS フィルター クライアント拡張機能をデータ セットに追加します。

    ヒント

    フィルターがさまざまなフィルター基準フィールドにわたって機能するようにするには、フロントエンド データ セット フィルター クライアント拡張機能をコーディングして、さまざまなフィールド名を動的に処理する必要があります。 Filter By で選択されたフィールドにはコードからアクセスできるため、フィルターを汎用的に適用でき、フィールドごとに個別のクライアント拡張機能を作成する必要がなくなります。

データ セットをコンテンツ ページに追加します。

  1. 新しいページを作成します または 編集を開始します

  2. 左側のフラグメントとウィジェット メニューで、フラグメントの下のデータセットを検索します。 フラグメントを編集領域にドラッグ アンド ドロップします。

  3. フラグメントをクリックします。 右側の [全般] タブには、データ セットを選択できるフィールドがあります。 追加 (Add icon) をクリックし、 製品 データ セットを選択します。

    製品データ セットを選択し、データ セット フラグメントを使用して表示します。

  4. ページを公開します。

フィルターをテストするには、次のページに移動します。

  1. ページ名の横にある アクション (Actions menu) をクリックし、 表示 (View icon) を選択します。

  2. フィルター をクリックし、検索バーの下にある 名前でフィルター オプションを選択します。

  3. 検索フィールドを選択し、 name eq 'Piston'と入力して、 [送信]をクリックします。

    表には、 ピストンという名前の製品のみが表示されます。

    OData クエリを使用して、製品を名前でフィルタリングします。

Liferay でフロントエンド データ セット フィルター クライアント拡張機能を正常にデプロイして使用できました。 次に、データ セット アクション を使用して 、データ セットをさらにカスタマイズしてみましょう。