Liferay 主题:获取 Portlet Window 状态

Liferay Theme: get Portlet Window State

我正在为我的 liferay 6.2 构建一个 freemarker 主题,当我试图在没有所需权限的情况下访问页面时,我正在努力获取登录 portlet 的 window 状态。在这种情况下,liferay "intercepts" 以最大化 window 状态请求并在我的主页布局模板顶部呈现登录 portlet(这是一个很好的行为)。

我的问题是我的主页布局看起来与我的其他布局模板不同。因此 portlet 呈现错误的外观。

有没有办法检查登录 portlet 是否呈现,以及是否获取视图模式以检查我是否要呈现我的主页布局?

到目前为止,这是我的家庭布局检查代码。 Todo-Comment 是我挣扎的地方。

<#-- 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>

(从问题中提取的答案)

我刚刚通过 Liferay 的 url 参数检查了是否有任何处于最大化 window 状态的 portlet。新代码:

<#-- 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>