2012-10-11 30 views
1

我需要幫助打印用戶所屬的私人和公共網站。如何僅顯示主題中的用戶的公共和私人網站

通過調用帖子中的代碼(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

感謝

回答

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 
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 
+0

這些屬性將禁用用戶站點,但OP詢問他是否可以顯示站點而不在列表中顯示用戶站點。用戶網站需要在那裏,但不應通過主題列出。 –

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())代碼,網站是一個用戶的公共或私人網站(即包含用戶的公共&私人網頁),然後不打印任何東西。