如何仅显示主题中用户的公共和私有网站

时间:2012-10-11 19:02:22

标签: liferay-6 liferay-theme

我需要帮助打印用户所属的私人和公共网站。

通过重新发布帖子中的代码(How do I get Sites of which the user is a member in Liferay theme?),我可以获取网站,但它也会为用户提供私人页面和公共页面。

如何避免打印用户的私人和公共页面,因为我只需要社区或网站。

<ul>
    #foreach($site in $user.mySites)
       #if ($site.hasPrivateLayouts())
              <li><a href="/group${site.friendlyURL}">$site.descriptiveName</a></li>
       #end
       #if ($site.hasPublicLayouts())
              <li><a href="/web${site.friendlyURL}">$site.descriptiveName</a></li>
    #end
    #end
</ul>

环境:Liferay 6.1

由于

3 个答案:

答案 0 :(得分:1)

我认为不应该为用户使用mysites部分,而应使用用户服务和组服务来获取用户组。

#set($userId = $getterUtil.getLong($request.remote-user))
#set($userLocalService = $serviceLocator.findService("com.liferay.portal.service.UserLocalService"))
#set($user = $userLocalService.getUserById($userId))
#set($groupLocalService=$serviceLocator.findService("com.liferay.portal.service.GroupLocalService"))
#set($userGroup = $groupLocalService.getUserGroup($companyId,$getterUtil.getLong($userId)))

$userGroup

答案 1 :(得分:1)

我认为您可以使用相同的代码进行一些更改:

<ul>
    #foreach($site in $user.mySites)        
        <!-- if it is NOT a user's public or private site only then print it -->
        #if(!$site.isUserPersonalSite())            
            #if ($site.hasPrivateLayouts())
                <li><a href="/group${site.friendlyURL}">$site.descriptiveName</a></li>
            #end

            #if ($site.hasPublicLayouts())
                <li><a href="/web${site.friendlyURL}">$site.descriptiveName</a></li>
            #end
        #end
    #end
</ul>

请注意if(!$site.isUserPersonalSite())代码,如果该网站是用户的公共或私人网站(即包含用户的公共和私人网页),则不要打印任何内容。

答案 2 :(得分:0)

更新liferay根目录中的portal-ext.properties

中的以下属性
# Deactivate Personal Community with *private* pages:
layout.user.private.layouts.enabled=false   

# Deactivate Personal Community with *public* pages:
layout.user.public.layouts.enabled=false