Liferay:为登录用户隐藏登录Portlet

时间:2012-11-29 16:43:08

标签: liferay portlet

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

Screenshot of config window

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

4 个答案:

答案 0 :(得分:3)

Liferay使用RBAC权限模型,这可能不允许您通过权限实现此目的。这是因为从授予访客权限中删除系统角色是完全不合逻辑的。

从头脑中考虑其他一些选择:

  • 创建一个布局模板,显示或隐藏一些portlet列,具体取决于当前用户是否不是guest(不完全确定这是否容易,因为它取决于布局模板速度环境中哪些变量可用)< / LI>
  • 在另一个portlet中包装登录portlet
  • 只需挂钩登录portlet 的JSP
  • 即可
  • Javascript可能吗?可能是最简单的解决方案,但不是最好的解决方案

答案 1 :(得分:2)

实现此目的的另一种方法是创建一个包含Login portlet的公共页面,假设该页面名为Login(此页面和guest虚拟机应该可以查看它)。

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

现在转到控制面板&gt;门户&gt;门户网站设置和修改导航链接(将鼠标悬停在问号图标上,以获取信息工具提示,说明每个链接的作用)。

以下是一个示例,继续我上面提到的登录和欢迎页面:

enter image description here

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

答案 2 :(得分:0)

Liferay将已登录的类添加到您的<body>元素中。如果您可以使用HTML格式,但只是未显示,请添加

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

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

答案 3 :(得分:0)

您可以根据$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