由于您无法在需要使用打字稿的情况下处理继承的布局。我的解决方案是这样的:
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
// since TYPO3 7 this already is computed by the core and this gives the same:
pageLayout = TEXT
pageLayout.data = pagelayout
:
}
}
避免使用 file 以更好地使用 ..RootPaths 实现。
由于我们使用文件中定义的 backendlayouts(包含在 pageTSconfig 中),键名以 pagets__ 开头,因此您也可以使用 backend_layout 记录的数量。
我使用常量{$resDir} 来定义可以轻松更改的资源的根。在站点扩展中,这可能是:
resDir = EXT:site_project1/Resources
我还使用当前活动的页面布局定义了一个流体变量,以便在模板中进一步区分。
如果您希望 ...RootPaths 对于每个布局都不同,您需要使用类似于我选择的模板名称的 CASE 对象构建 cObject。
一般而言:如果您的变量中有可用的后端布局,所有这些都可以在流体模板中处理:您只需要一个起始模板,它调用一个布局,所有进一步调用到局部由当前布局个性化,如
<f:render partial="{pageLayout}/header" arguments="{_all}" />