2

我想为已登录的用户隐藏内置的“登录”portlet。

配置窗口截图

如何设置权限以实现此目的?

4

4 回答 4

3

Liferay 使用 RBAC 权限模型,这可能不允许您通过权限来实现这一点。这是因为从授予来宾的权限中贬低系统角色是完全不合逻辑的。

从我的脑海中考虑其他一些选择:

  • 创建一个布局模板,它根据当前用户是否不是来宾来显示或隐藏某些 portlet 列(不完全确定这是否会那么容易,因为它取决于布局模板速度环境中确切可用的变量)
  • 将登录 portlet 包装在另一个 portlet 中
  • 只需挂钩登录 portlet的 JSP
  • 也许是Javascript?可能是最简单的解决方案,但不是最好的
于 2012-11-29T22:53:15.873 回答
2

实现此目的的另一种方法是创建一个包含 Login portlet 的公共页面,假设该页面称为 Login(该页面及其 portlet 应该可供客人查看)。

接下来,创建另一个页面并将其命名为 Welcome。将一些portlet 放在上面供登录用户查看。该页面最好是私有的,但是如果它是公共的,请确保您更改权限,以便客人无法看到 portlet 等。

现在转到控制面板 > 门户 > 门户设置并修改导航链接(将鼠标悬停在问号图标上以获得解释每个链接作用的信息工具提示)。

这是一个示例,继我上面提到的登录和欢迎页面之后:

在此处输入图像描述

简单!没有代码修改或自定义主题!

于 2012-11-30T16:49:27.120 回答
0

Liferay 将登录类添加到您的<body>元素中。如果您可以忍受它在 HTML 中可用,但只是没有显示,请添加

.signed-in .portlet_login {
    display:none;
}

或类似于您的主题或 login-portlet 的外观和感觉高级样式。

于 2012-11-30T20:33:40.173 回答
0

您可以根据$is_signed_in签入来渲染/不渲染许多东西Theme VM files

is_signed_intrue用于登录用户和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   
于 2012-12-10T06:11:03.443 回答