Чистый способ переключения между страницей 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}" />