legacy-knowledge-base
公開されました Jul. 2, 2025

Pjaxを使用して埋め込まれたコンテンツを表示する際の制限事項

投稿者

Justin Choi

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

この記事では、Liferayプラットフォームにおいて、 pjax を使用してプログラム的にネストされたコンテンツをレンダリングする場合の、基本的な製品の制限について説明します。 (PjaxはjQueryプラグインで、AJAX(XmlHttpRequest)とpushState()を使って高速ブラウジングを実現するスタンドアローンのJavaScriptモジュールです。)。

この問題は、 Liferay.widget の呼び出しがpjaxと衝突することです。 この問題は、SPAが有効であるかどうかにかかわらず再現されます。 最後に、この問題はLiferay Portal 6.2 EEとLiferay Digital Enterprise 7.0の両方で発見されています。

再現までの手順

  1. Hello World ポートレットに移動します。
  2. 三点 オプションメニュー → 設定をクリックします。
  3. コードスニペットをコピーしてください:
    	<script src="http://localhost:8080/o/frontend-js-web/liferay/widget.js" type="text/javascript"></script>
    		<script type="text/javascript">
    			Liferay.Widget({url: 'http://localhost:8080/widget/group/managers-dashboard/dev-page/-/com_liferay_hello_world_web_portlet_HelloWorldPortlet'});
    	</script>
    
  4. [設定] ウィンドウを閉じます。
  5. Webコンテンツ表示 ポートレットをページに追加します。
  6. (+) の記号をクリックすると、新しい 基本的なWebコンテンツが追加されます。
  7. Hello World EmbedTitle に入力してください。
  8. Editor Switch (< / >) ボタンをクリックし、コードスニペットを入力します。
  9. 上記のコードスニペットを貼り付けます。
  10. [Publish]をクリックします。

この時点で、Hello WorldポートレットはWebコンテンツ記事内で公開され、Webコンテンツ表示ポートレット内でレンダリングされるのではなく、画面全体を埋め尽くします。
01.png

しかし、ページを更新すると、Webポートレットは正しく描画されます。
02.png

Liferay Portal 6.2 EEとLiferay Digital Enterprise 7.0の両方でこの問題に対処し、APIを壊さないようにするために、強く示唆された潜在的な解決策の1つは、埋め込みコンテンツを表示するための代替手段として iframe を使用することです。

この時点で、Liferay Engineeringは Liferay.widget のすべての呼び出しを非推奨とし、このAPIは今後のリリースでは使用されません。

解像度

ステータス固定

Liferay Digital Experience Platform (DXP) 7.1 にアップデートするか、フィックスパック DXP 7.0 Fix Pack 35 以降を適用してください。

追加情報

LPS-75743 を参照し、最終的に解決してください。

did-this-article-resolve-your-issue

legacy-knowledge-base