2013-07-09 98 views
1

我想根據頁面中給定的參數創建某種類型的模板來顯示不同的Portlet,例如查詢字符串或請求參數。在Liferay 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 

的portlet列 「COL2」 正確顯示,但在列的portlet 「COL1」,它應該出現在/我的/ URL sneiders =稱作Snuffles,以此,不?正確顯示。不知怎的,LIFERAY只打印空的portlet,與CSS類portlet的靜態

但是,如果我改變的事情一點:

#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將在任何這些情況正確地顯示出來,這讓我覺得你需要一個「默認」的情況下,將處理所有列

有人遇到過這個問題?這是一個問題還是我做錯了什麼?

任何幫助將不勝感激。 最好的問候

回答

2

如果我沒有記錯,您可能需要在佈局中設置您的portlet,同時顯示所有列,否則佈局將無法正確保存。因此,當僅顯示column-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 
+0

我知道這個線程是相當古老的,但我們只是使用這種方法,它運作得非常好!我們使用$ themeDisplay.isSignedIn()來代替 – madoke