Поскольку вы не можете обрабатывать унаследованные макеты в условиях, вам необходимо использовать typoscript. Мое решение заключается в следующем:
page.10 = FLUIDTEMPLATE
page.10 {
templateRootPaths.1 = {$resDir}/Private/Templates
partialRootPaths.1 = {$resDir}/Private/Partials
layoutRootPaths.1 = {$resDir}/Private/Layouts
templateName = TEXT
templateName.cObject = CASE
templateName.cObject {
key.data = levelfield:-1, backend_layout_next_level, slide
key.override.field = backend_layout
#Default Template
default = TEXT
default.value = subpage
# homepage
pagets__homepage = TEXT
pagets__homepage.value = homepage
pagets__subpage = TEXT
pagets__subpage.value = subpage
}
variables {
:
pageLayout = TEXT
pageLayout.data = levelfield:-1, backend_layout_next_level, slide
pageLayout.override.field = backend_layout
:
}
}
Избегайте использования file
для более эффективной реализации с ..RootPaths.
Поскольку мы используем backendlayouts, определенные в файлах (которые включаются в pageTSconfig), имена ключей, начинающиеся с pagets__
, вы также можете использовать номера записей backend_layout.
Я использую константу {$resDir}
, чтобы определить корень ресурсов, которые можно легко изменить. В siteextension это может быть:
resDir = EXT:site_project1/Resources
Я также определить переменную жидкости с текущей активной макет страницы для дальнейшей дифференциации в шаблонах.
Если вы хотите, чтобы ...RootPaths
отличался для каждого макета, вам нужно построить cObject с CASE obejct, подобным моему выбору имени шаблона.
В общем: все это может быть обработано в жидкостных шаблонах, если у вас есть макет бэкэнда доступен в вашем переменных: вам нужно только иметь один стартовый шаблон, который вызывает макет, где все последующие звонки на частичные индивидуализированы по текущей раскладке как
<f:render partial="{pagelayout}/header" arguments="{_all}" />
Посмотрите на этот вопрос: http://stackoverflow.com/questions/39614470/typoscript-condition-backend-layout-with -slide – bschauer
@bschauer Я тоже видел этот пост, но как я могу использовать 'lib.backendLayout' внутри условия? '[lib.xx = 1]', похоже, не работает ... – Norman