我正在尝试创建某种模板,根据页面中的给定参数显示不同的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将在任何这些情况下正确显示,这使我认为您需要一个处理所有列的“默认”案例
有人遇到过这个问题吗?这是一个问题还是我做错了什么?
任何帮助将不胜感激。 最诚挚的问候
答案 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