JavaScriptクライアント拡張の使用
Liferay DXP 7.4+
JavaScript(JS)クライアント拡張を使い、Liferayのコードへの依存やテーマの開発を気にすることなく、Liferayの任意のページ上で独自のJavaScriptを実行できます。 ここでは、JavaScript クライアント拡張機能 ( サンプルワークスペース から) から始めます。
前提条件
クライアント拡張の開発を開始するには、
-
サポートされているバージョンの Java をインストールしてください。
注サポートされているJDK、データベース、環境については、互換性マトリックスを確認してください。 推奨される JVM 設定については、 JVM 構成 を参照してください。
-
サンプルワークスペースをダウンロードし、解凍します。
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\=zipunzip com.liferay.sample.workspace-latest.zip
必要なツールやJSクライアント拡張は、サンプルワークスペースに含まれています。
クライアント拡張の検討
JSクライアント拡張機能は、ワークスペースの client-extensions/liferay-sample-global-js-2/ フォルダにあります。 client-extension.yaml ファイルに定義されています。
liferay-sample-global-js-2:
name: Liferay Sample Global JS 2
scriptElementAttributes:
async: true
data-attribute: "value"
data-senna-track: "permanent"
fetchpriority: "low"
type: globalJS
url: global.*.js
クライアント拡張機能の ID は liferay-sample-global-js-2 で、スクリプト要素の属性、 タイプ、追加する JavaScript ファイルなど、JS クライアント拡張機能のキー構成が含まれています。 プロパティの詳細については、 JavaScript YAML 設定リファレンス を参照してください。
オプションの scriptElementAttributes 設定は、Liferay DXP 2024.Q2/Portal GA120 で追加されました。 これを使用すると、生成された スクリプト HTML 要素にブール属性と文字列属性を追加できます。 trueに設定されたブール値は、HTMLでは値なしで表示され、falseに設定された場合は表示されません。 例えば、YAML で foo-boolean: true を設定すると、次の HTML が生成されます: <script foo-boolean foo-string="bar" ...>...</script>。
YAML ファイルには、 assemble ブロックも含まれています。
assemble:
- from: build/static
into: static
これは、 build/static フォルダー内のすべてのものが、ビルドされたクライアント拡張機能 .zip ファイルに静的リソースとして含まれる必要があることを指定します。 JSクライアント拡張のJavaScriptコードは、Liferayの静的リソースとして使用されます。
assets/global.jsファイルには、下記のコードが含まれています:
window.alert('Sample Global JS 2 deployed.');
ページを開くと、メッセージとともにアラートボックスが表示されます。 このファイルに追加して、追加のJavaScriptを実行します。
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 sample-global-js-2_1.0.0
クライアント拡張が正常にデプロイされたら、それを使用するようにLiferayを設定します。
ページでクライアント拡張を使用する
デプロイされたクライアント拡張を使用するために、Liferayのページを設定します。
-
インスタンス内のページで、上部にある 編集 アイコン
をクリックします。 -
サイドバーで、ページデザイン オプション メニュー (
) に移動し、メニュー上部の 設定 アイコン (
) をクリックします。![[Page Design Options]メニューの歯車アイコンをクリックすると、このクライアント拡張の設定にアクセスできます。](https://resources.learn.liferay.com/images/dxp/latest/en/development/customizing-liferays-look-and-feel/using-a-javascript-client-extension/images/01.png)
-
[詳細設定]タブをクリックし、ページ下部の JavaScript セクションを展開すると、 [JavaScript Client Extensions] 設定セクションがあります。
-
[Add JavaScript Client Extensions]をクリックして、新しいクライアント拡張をページの先頭またはページ下に追加します。
注クライアント拡張機能でブール値の
asyncまたはdefer属性を設定した場合、クライアント拡張機能をページに追加する際にこの動作を構成することはできません (上記のスクリーンショットを参照)。 クライアント拡張機能でasyncとdeferの両方を設定した場合、async属性が適用され、defer属性は無視されます。 -
[Save(保存)]をクリックします。
-
オプションで、編集モード以外のページでJavaScriptが実行されるように、ページを公開することもできます。
これで、クライアント拡張が設定され、有効になりました。 設定したページでは、クライアント拡張のメッセージを含むアラートウィンドウがポップアップ表示されます。

警告ウィンドウが最初に表示されない場合は、ページを強制的に更新してブラウザのキャッシュをクリアしてください(ほとんどのブラウザではCTRL + SHIFT + R)。 クライアント拡張を変更して再デプロイした場合、変更を確認するには、ページから削除し、再追加する必要があるかもしれません。
インスタンス全体でクライアント拡張機能を使用してください
Liferay DXP 2025.Q4以降およびPortal 2026.Q1以降で一般提供開始
JavaScript クライアント拡張機能の スコープ プロパティを company に設定すると、管理ページを含むインスタンスのすべてのページに適用されます。 例えば、 Liferay Sample Global JS 3 プロジェクトについては、 client-extension.yaml ファイルを参照してください。
assemble:
- from: build/static
into: static
liferay-sample-global-js-3:
name: Liferay Sample Global JS 3
scope: company
scriptLocation: head
type: globalJS
url: global.*.js
デプロイが完了すると、インスタンス内の任意のページにアクセスし、ブラウザのコンソールでページヘッダーで実行されたJavaScriptを確認できます。
console.log('Sample Global JS 3 deployed.');
- JavaScriptのスコープを設定できるのは、ワークスペースベースのクライアント拡張機能のみです。 UI を介して JavaScript クライアント拡張機能を作成する場合、スコープやスクリプトの場所を設定することはできません。クライアント拡張機能は常にページスコープであり、 サイトページ でのみ使用できます。
- 企業スコープの JavaScript クライアント拡張機能は、当初 リリース機能フラグ の背後でリリースされました。 DXP 2025.Q4 または Portal 2026.Q1 より前の Liferay バージョンでこの機能が利用可能かどうかを確認するには、 インスタンス設定 → 機能フラグ に移動し、フラグ インスタンス グローバル JavaScript クライアント拡張機能 (LPD-30371) を検索します。
さいごに
LiferayでJSクライアント拡張を使用できるようになりました。 次は他のクライアント拡張タイプのデプロイメントを試してみましょう。