2015-12-14 122 views
1

我正在爲我的liferay 6.2構建freemarker主題,並且當我嘗試訪問沒有所需權限的頁面時,我很難獲取登錄portlet的窗口狀態。在這種情況下,liferay會「截獲」請求,並以最大化的窗口狀態(這是一個很好的行爲)在我的家庭佈局模板上呈現登錄portlet。Liferay主題:獲取Portlet窗口狀態

我的問題是,我的家庭佈局看起來不同於我的其他佈局模板。因此,portlet呈現的外觀和感覺都不正確。

有沒有辦法來檢查登錄portlet是否呈現或者是否獲取viewmode來檢查我是否要呈現我的主頁佈局?

這是我的家庭佈局檢查代碼到目前爲止。 Todo評論是我奮鬥的地方。

<#-- Check whether layout template of current page is home layout. --> 
<#assign isHomeLayout = false /> 
<#if themeDisplay.getLayout().getTypeSettingsProperty("layout-template-id") == "novofleet-home-layout"> 
    <#-- TODO: CHECK FOR LOGIN PORTLET AND WINDOW STATE AND RETURN FALSE IF PORTLET IS RENDERED AS MAXIMIZED --> 
    <#assign isHomeLayout = true /> 
</#if> 
+0

如果在頁面上最大化Portlet,或者您只對登錄Portlet感興趣,是否足以發現它?例如,即使您沒有在外觀上提供明確的「最大化」按鈕,搜索portlet也可以被最大化。 –

+0

我確定了。查看帖子更新。 –

+0

我已經提取了解決方案,並將其轉移到下面的明確答案。 –

回答

1

(從問題中提取答案)

我只是檢查是否有通過Liferay的網址參數處於最大化窗口狀態的任何門戶。新代碼:

<#-- Check whether layout template of current page is home layout. --> 
<#assign isHomeLayout = false /> 
<#if themeDisplay.getLayout().getTypeSettingsProperty("layout-template-id") == "novofleet-home-layout"> 
    <#assign isHomeLayout = true /> 

    <#-- Check for existence of url parameter which forces portlets to maximezed window state and revoke home layout --> 
    <#assign maximized = request.getParameter("p_p_state")!"defaultValue" /> 
    <#if maximized == "maximized"> 
     <#assign isHomeLayout = false /> 
    </#if> 
</#if>