У меня есть эти шаблоны структуры
Resources/private/Layouts/default.html
Resources/private/Partials/Footer.html
Resources/private/Partials/Header.html
Resources/private/Partials/Search.html
Resources/private/Templates/Default.html
Я хочу визуализировать структуру 1column, структуру 2column, структуру страницы Default (Home).
Это мой setuo.typoscript
page {
typeNum = 0
shortcutIcon = EXT:demo_site/Resources/Public/Icons/favicon.ico
10 = FLUIDTEMPLATE
10 {
templateName = TEXT
templateName.stdWrap.cObject = CASE
templateName.stdWrap.cObject {
key.data = pagelayout
pagets__default = TEXT
pagets__default.value = Default
pagets__2column = TEXT
pagets__2column.value = 2column
pagets__1column = TEXT
pagets__1column.value = 1column
default = TEXT
default.value = Default
default <.pagets__2column
Ресурсы / частные / Шаблоны / default.html
<f:section name="Jumbotron">
--------
</f:section>
<f:section name="2column">
--------
</f:section>
<f:section name="1column">
--------
</f:section>
Ресурсы / частный / Макеты / default.html
<f:if condition ="{templateName} == 'Jumbotron'">
<f:render section="Jumbotron"/>
</f:if>
<f:if condition ="{templateName} == ƈcolumn'">
<f:render section="2column"/>
</f:if>
<f:if condition ="{templateName} == Ƈcolumn'">
<f:render section="1column"/>
</f:if>
Мой верхний колонтитул включен успешно. Но у меня проблема с отображением различных шаблонов. Поэтому, пожалуйста, скажите, правильно ли я использую условие? если нет, то расскажите, пожалуйста, решение Что мне делать, чтобы сделать разные шаблоны?
Всего 1 ответ
Помимо некоторых заблуждений или опечаток:
Вы выбрали разные шаблоны, но не указали имя шаблона в качестве переменной для вашего шаблона.
Вам нужно что-то вроде этого в вашем объекте FLUIDTEMPLATE
после определения templateName:
page.10 {
templateName = ...
templateName.stdWrap.cObject {
:
}
// copy template name to a variable:
variables.templateName < .templateName
// define further variables:
variables {
:
}
}
Похоже, что вы на самом деле не используете разные шаблоны, но вы можете использовать разные партиалы (или разделы) для разных макетов.
Тогда вам не нужны разные файлы шаблонов, и определение page.10.templateName не обязательно. Убедитесь, что у вас есть конструкция для переменной жидкости.
у вас есть два назначения по default
в вашем объекте CASE
. первое будет перезаписано со второго. (с одинаковыми значениями)
Вы используете поле pagelayout
со значениями, обычно используемыми для полей backend_layout
и backend_layout_next_level
.
может быть, это чистое решение для вас:
page {
10 = FLUIDTEMPLATE
10 {
templateName = Default
variables {
templateName = CASE
templateName {
key.data = levelfield:-1, backend_layout_next_level, slide
key.override.field = backend_layout
default = TEXT
default.value = Default
pagets__default = TEXT
pagets__default.value = Default
pagets__2column = TEXT
pagets__2column.value = 2column
pagets__1column = TEXT
pagets__1column.value = 1column
:
}
:
}
}
}
и ваш файл шаблона ( Default.html
) должен содержать этот вызов:
<f:render section="{templateName}" arguments="{_all}" />
хотя я бы предпочел использовать партиалы вместо разделов и переименовать переменную в нечто вроде layout
как он не выбирает шаблон