在Liferay Velocity模板中切换portlet列

时间:2013-07-09 18:33:37

标签: liferay liferay-6 velocity

我正在尝试创建某种模板,根据页面中的给定参数显示不同的portlet,例如查询字符串或请求参数。

我有以下代码:

#if( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#else
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end

列“col2”中的portlet正确显示,但列“col1”中的portlet(应出现在/ my / url?sneiders = snuffles中)未正确显示。 liferay以某种方式打印空portlet,使用css类portlet-static

然而,如果我改变一点:

#if( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#elseif( $request.getParameter('sneiders') == 'snuffzen')
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#else
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end

Portlet将在任何这些情况下正确显示,这使我认为您需要一个处理所有列的“默认”案例

有人遇到过这个问题吗?这是一个问题还是我做错了什么?

任何帮助将不胜感激。 最诚挚的问候

1 个答案:

答案 0 :(得分:2)

如果我没记错的话,您可能需要在显示所有列时在布局中设置portlet,否则布局将无法正确保存。因此,当仅显示第1列时放置portlet时,先前在第2列中设置的portlet将会消失。

您可以考虑做这样的事情,这样您就可以正确设置布局(但用户将无法使用参数来显示两列):

#if( $themeDisplay.getPermissionChecker().isOmniadmin() )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#elseif( $request.getParameter('sneiders') == 'snuffles' )
    <div class="col1" id="col1">$processor.processColumn("col1")</div>
#else
    <div class="col2" id="col2">$processor.processColumn("col2")</div>
#end