Чистый способ переключения между страницей Typo3 и ссылкой на действие

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

Теперь я использовал оператор if then, но это увеличивает количество двойных строк кода. Смотрите пример:

<f:if condition="{var}">
    <f:then>
        <f:link.page pageUid="{PageId}">

            // a lot of code lines

        </f:link.page>
    </f:then>
    <f:else>        
        <f:link.action pluginName="Name" controller="Cont">

            // the same a lot of code lines again

        </f:link.action>
    </f:else>
</f:if>

1 ответ

Решение

Вы можете извлечь код из ссылок в частичное.

Для этого сначала создайте частичный шаблон. Внутри расширения Extbase они размещаются в разделе Ресурсы / Личные / Частичные по соглашению (вы можете изменить это, используя setPartialsRootPath() метод для объекта шаблона, но обычно это не требуется).

# Resources/Private/Partials/LinkContent.html
<!-- Insert your shared code lines here -->

Затем укажите частичное в вашем шаблоне:

<f:if condition="{var}">
    <f:then>
        <f:link.page pageUid="{PageId}">
            <f:render partial="LinkContent" />
        </f:link.page>
    </f:then>
    <f:else>        
        <f:link.action pluginName="Name" controller="Cont">
            <f:render partial="LinkContent" />
        </f:link.action>
    </f:else>
</f:if>

Обратите внимание, что вам придется явно передавать переменные в партиал из родительского шаблона:

<!-- Assuming there's a variable "foo" in your template -->
<f:render partial="LinkContent" arguments="{foo: foo}" />

Кроме того, вы можете импортировать всю область в частичную:

<f:render partial="LinkContent" arguments="{_all}" />
Другие вопросы по тегам