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

管理者以外のユーザーに対して商品メニューを非表示にする方法は?

投稿者

Alfonso Crisci

knowledge-article-header-disclaimer-how-to

knowledge-article-header-disclaimer

legacy-article

learn-legacy-article-disclaimer-text

問題

  • Liferay DXP 7.0および7.1では、特定のロール(例えば、通常/非管理者、サイトユーザー)に対して、製品メニュー(およびそれを開くためのアイコン)を非表示にする必要があることがあります:

DXP_Product_Menu.pngの場合

環境

  • Liferay 7.0 DXP
  • Liferay 7.1 DXP

解像度

  • Liferay DXPは、この要件をすぐに実現する方法を提供しません。
  • カスタマイズで目的の動作を実現することは可能です。 この要件に対するアプローチには、大きく分けて2つの方法があり、どちらもつながっています。

1. カスタムテーマ

カスタムテーマの portal_normal.ftl で、 <@liferay.control_menu /> タグを、以下のようなパーミッションチェックで囲みます:

<#if is_signed_in>
<#assign roles = user.getRoles()
showcontrolmenu = false
/>
<#list roles as role>
<#if role.getName() == "Administrator" || role.getName() == "Other Role" >
<#assign showcontrolmenu = true />
<#break>
</#if>
</#list>
<#if showcontrolmenu>
<@liferay.control_menu />
</#if>
</#if>

この代わりに、必要なコードをテーマの init.ftlで構築することもできます:

permission_checker = themeDisplay.getPermissionChecker() 
is_group_admin = permission_checker.isGroupAdmin(group_id)
is_omniadmin = permission_checker.isOmniadmin()
show_dockbar = is_group_admin || is_omniadmin

して使用します:

<#if show_dockbar> 
<@liferay_ui["quick-access"] contentId="#main-content" />
<@liferay_util["include"] page=body_top_include />
<@liferay.control_menu />
</#if>

を、 portal_normal.ftl. また、製品メニューのマージンは、変更後に調整が必要になる場合があります。 main.cssの中に、以下のようなものがあります:

@media only screen and (min-width:768px){
body.open #wrapper{
padding-left:0px;
}
}

は、視覚的なギャップを解消するのに役立つと思います。

2. コントロールメニューエントリー / テーマコントリビューター / テンプレートコンテキストコントリビューター

この方法については、関連するチュートリアルの一覧を紹介します:

上記に加え、いくつかの地域資源を紹介します:

注意:どちらの場合も、(少なくとも)「サインアウト」(/c/portal/logout)オプションが必要です:

DXP_Product_Menu_Sign_Out.png(英語のみ

をポータルのテーマで別の場所に移動する必要があります。そうしないと、製品メニューが無効になっているため、アクセスできなくなります。

追加情報

  • 製品メニューは最新のリリースで通常のユーザーロールから切り離されたため、Liferay DXP 7.2+ではこの問題は発生しなくなります。
  • 提供されるリソースは、カスタム開発のための純粋なヒントであり、実装は各開発者の裁量に任されます。
did-this-article-resolve-your-issue

legacy-knowledge-base