我正在尝试创建一个社区选择框,使访问者能够跳转到开放的Liferay社区。然而,它似乎只对经过身份验证的用户有效。那么,我如何将“开放”社区列出给所有用户,包括注销的用户?
这是我当前的代码
#set ($myPlaces = $user.getMyPlaces())
#if($listTool.size($myPlaces) > 0)
<select id="communitySelector">
#foreach ($myPlace IN $myPlaces)
#if ($myPlace.isCommunity())
#set ($myPlaceURL = ${myPlace.getFriendlyURL()})
## Only link if theres pages
#if ($myPlace.hasPublicLayouts())
## Prefix web for 'public'
#set ($myPlaceURL = "${public_pages_url}${myPlaceURL}")
## Select if current community
#set($commSelected = "")
#if($themeDisplay.getLayout().getGroup().getName() == $myPlace.getName())
#set($commSelected = " selected='selected' ")
#end
<option $commSelected value="${portal_url}${myPlaceURL.toString()}">$myPlace.getName()</option>
#end
#end
#end
</select>
#end发布于 2012-02-04 15:41:31
在回答我自己的Liferay问题的悠久传统中,下面是我提出的解决方案的代码片段,用于向所有用户列出社区,包括公共/访客注销用户
## Grab this service as MyPlaces only available to authenticated users
#set($groupLocalService = $serviceLocator.findService("com.liferay.portal.service.GroupLocalService"))
## Get all Groups
#set($groupList = $groupLocalService.getGroups(-1, -1))
## Grab all groups that are Communities
#set($commList = [])
#foreach($group in $groupList)
#if($group.isCommunity())
$commList.add($group)
#end
#end
#foreach($comm in $commList)
## Exclude Control Panel which is also validated as Community in LR
#if($comm.getName()!="Control Panel")
#if($comm.hasPublicLayouts())
<a href="$comm.getFriendlyURL()">$comm.getName()</a><br />
#elseif($comm.hasPrivateLayouts() && $is_signed_in)
## Community is private so only print this link if user authenticated
<a href="$comm.getFriendlyURL()">$comm.getName()</a><br />
#end
#end
#end编辑-其他人在https://stackoverflow.com/a/8457759/417933上发布了一个类似的代码片段
https://stackoverflow.com/questions/9129751
复制相似问题