問題
- 検索エンジンを無効化し、修正パック dxp-15-7110 をインストールした特殊な環境では、PublicとPrivateの両方のレイアウトが表示されない
環境
- Liferay DXP 7.1
解像度
- Liferayの機能には検索エンジンが欠かせません。 特別な用途のために無効にしておきたい場合は、以下の手順でサイト管理画面の「公開ページ」と「非公開ページ」の表示を元に戻すことができます:
- このファイル https://github.com/liferay/liferay-portal-ee/blob/7.1.x/modules/apps/layout/layout-admin-web/src/main/resources/META-INF/resources/view_layouts.jsp を上書きするOSGiフラグメントを作成し、以下の追加を適用する:
<%
- 行番号54で
com.liferay.portlet.layoutsadmin.display.context.GroupDisplayContextHelper helper = new com.liferay.portlet.layoutsadmin.display.context.GroupDisplayContextHelper(request);
int privatePagesCount = LayoutLocalServiceUtil.getLayoutsCount(
helper.getSelGroup(), true, 0);
int publicPagesCount = LayoutLocalServiceUtil.getLayoutsCount(
helper.getSelGroup(), false, 0);
boolean hasLayouts = false;
if ((privatePagesCount + publicPagesCount) > 0) {
hasLayouts = true;
}
%><c:when test="<%= hasLayouts %>">
代わりに
<c:when test="<%= layoutsAdminDisplayContext.hasLayouts() %>">
ここでは、便宜上、サンプルフラグメントを添付していますが、これはサポートされていないヒントとして提供されるものです。
追加情報
- この変更は、バグフィックス https://issues.liferay.com/browse/LPS-102623 の結果であり、その効果は意図した動作であると考えられます。
- 上記のJSPソリューションは、 https://github.com/liferay/liferay-portal-ee/pull/16497/commits/5b5990a3e4ffe0211883b476be3dea86acc3a822と同じパターンを踏襲しています。
- 上記の解決策では、 https://issues.liferay.com/browse/LPS-102623で説明したバグが再度発生します。
- JSP Overrides Using OSGi Fragments