問題
- ポートレット(例えばブログポートレット)をIframeで埋め込むと、"height = 100%" であっても、ポートレットはスクロールバー付きの約150pxの高さで表示されます。
再生産ステップ:
-
Content & Data --> Blogsにアクセスし、ブログエントリーと新しいジャーナル記事を追加する。
-
サイトビルダー --> ページにアクセスし、コンテンツページを作成し、ブログポートレットを追加します。また、アセットパブリッシャーを追加し、"ダイナミック "に設定します。
-
ポートレットのコンフィギュレーションを開き、「共有」を選択し、コードスニペットをコピーしてください。 たとえば、こんな感じだ:
<iframe frameborder="0" height="100%" src="http://localhost:8080/widget/web/guest/test/-/blogs" width="100%"></iframe>
(コード内の高さは100%のままであるべきです) それから、ページを公開します。
-
Site Builder --> Pagesにアクセスして、別のコンテンツページを追加し、そこにHTMLフラグメントを追加します。フラグメントを編集するには、先にコピーしたコードをフラグメントエディタに貼り付け、保存します。
実際の結果 ブログはページに表示されるが、縦スクロールになる。
期待される結果 スクロールの必要なく、ページ全体にブログが表示される。
Environment
- Liferay DXP 7.3
- Liferay DXP 7.4
解決策
- 現在の振る舞いは予想通りだ。 なぜなら、
height="100%
は、フラグメントが親から受け継ぐ高さのパーセンテージを指しており、HTMLに埋め込んだときにコントロールできないからです。 いくつかの回避策を提案することができる:-
フラグメントの高さをパーセンテージなしで正確に指定する(例:
height="1290"
またはheight="1290px"
); -
カスタムCSSを使用する:
.[$FRAGMENT_CLASS$] > div { height: 100%; } .component-html { height: 100%; }
-
HTMLフラグメントの代わりにIFrameウィジェットを使用する;
-
カスタムHTML & CSSでカスタムフラグメントを作成する。
-
- 最後の2つのオプションでは、カスタマイズは私たちのサポートと互換性がないため、カスタムCSSやフラグメントを提供することはできません。 カスタマイズのサポートが必要な場合は、グローバルサービスチーム(GS)にお問い合わせください。
会員限定記事
Liferay エンタープライズ サブスクリプションをお持ちのお客様は1500件を超えるベストプラクティス、トラブルシューティング、その他のソリューション記事を閲覧できます。ログインすると、記事全体をお読みいただけます。
ログイン