Тема Liferay: получение состояния окна портлета

Я создаю тему freemarker для своего liferay 6.2 и изо всех сил пытаюсь получить состояние окна портлета входа в систему, когда пытаюсь получить доступ к странице без необходимых разрешений. В этом случае liferay «перехватывает» запросы и отображает портлет входа в систему поверх шаблона моего домашнего макета в развернутом состоянии окна (что является хорошим поведением).

Моя проблема в том, что мой домашний макет отличается от других моих шаблонов макетов. Таким образом, портлет отображается с неправильным внешним видом.

Есть ли способ проверить, отображается ли портлет входа в систему или нет, и если он получает режим просмотра, чтобы проверить, хочу ли я отображать свой домашний макет или нет?

Это мой код для проверки макета дома. 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>

person Sebastian Sommerfeld    schedule 14.12.2015    source источник
comment
Достаточно ли будет узнать, развернут ли какой-либо портлет на странице, или вас интересует только портлет входа в систему? Например, портлет поиска также можно развернуть, даже если вы не предлагаете явную кнопку развертывания во внешнем виде.   -  person Tobias Liefke    schedule 15.12.2015
comment
Я остановился именно на этом. Смотрите обновление поста.   -  person Sebastian Sommerfeld    schedule 15.12.2015
comment
Я извлек ваше решение и переместил его в явный ответ ниже.   -  person Tobias Liefke    schedule 16.12.2015


Ответы (1)


(Ответ извлечен из вопроса)

Я только что проверил, есть ли какой-либо портлет в развернутом состоянии окна с помощью параметров URL-адреса 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>
person Tobias Liefke    schedule 16.12.2015