我想为已登录的用户隐藏内置的“登录”portlet。
如何设置权限以实现此目的?
Liferay 使用 RBAC 权限模型,这可能不允许您通过权限来实现这一点。这是因为从授予来宾的权限中贬低系统角色是完全不合逻辑的。
从我的脑海中考虑其他一些选择:
实现此目的的另一种方法是创建一个包含 Login portlet 的公共页面,假设该页面称为 Login(该页面及其 portlet 应该可供客人查看)。
接下来,创建另一个页面并将其命名为 Welcome。将一些portlet 放在上面供登录用户查看。该页面最好是私有的,但是如果它是公共的,请确保您更改权限,以便客人无法看到 portlet 等。
现在转到控制面板 > 门户 > 门户设置并修改导航链接(将鼠标悬停在问号图标上以获得解释每个链接作用的信息工具提示)。
这是一个示例,继我上面提到的登录和欢迎页面之后:
简单!没有代码修改或自定义主题!
Liferay 将登录类添加到您的<body>
元素中。如果您可以忍受它在 HTML 中可用,但只是没有显示,请添加
.signed-in .portlet_login {
display:none;
}
或类似于您的主题或 login-portlet 的外观和感觉高级样式。
您可以根据$is_signed_in
签入来渲染/不渲染许多东西Theme VM files
。
is_signed_in
将true
用于登录用户和false
其他用户。
下面的一些例子来自portal_vm.vm
#if(!$is_signed_in)
<a href="$sign_in_url" id="sign-in" rel="nofollow">$sign_in_text</a>
#end
#if($is_signed_in)
#if($permissionChecker.isOmniadmin()== true)
#dockbar()
#end
#if(!$is_signed_in)
$theme.include($themeServletContext, "/jsp/someJsp.jsp")
#end