Как показать только публичные и частные сайты пользователя в теме

Мне нужна помощь в печати частных и общедоступных сайтов, членом которых является пользователь.

Повторив код из сообщения (Как мне получить сайты, участником которых является пользователь в теме Liferay?) Я могу получить сайты, но он также дает личные и общедоступные страницы пользователей.

Как не печатать личные и публичные страницы пользователя, так как мне нужны только Сообщества или, точнее, Сайты.

<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

Спасибо


person user1666444    schedule 11.10.2012    source источник


Ответы (3)


Я думаю, что вместо использования раздела 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
person lucky    schedule 15.10.2012

Я думаю, вы можете использовать тот же код с некоторыми изменениями:

<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()), если сайт является общедоступным или частным сайтом пользователя (т. е. содержит общедоступные и частные страницы пользователя), то ничего не печатайте.

person Prakash K    schedule 19.02.2013

Обновите следующие свойства в вашем portal-ext.properties корневом каталоге liferay.

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

# Deactivate Personal Community with *public* pages:
layout.user.public.layouts.enabled=false
person Adel    schedule 18.01.2013
comment
Эти свойства отключат пользовательские сайты, но OP спрашивает, может ли он отображать сайты без отображения пользовательских сайтов в списке. Пользовательские сайты должны быть там, но не должны быть перечислены в теме. - person Prakash K; 19.02.2013