我有这些模板结构
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
我想渲染1列结构,2列结构,Default(Home)页面结构。
这是我的setup.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} == '2column'">
<f:render section="2column"/>
</f:if>
<f:if condition ="{templateName} == '1column'">
<f:render section="1column"/>
</f:if>
我的页眉页脚已成功包含在内。但是我在渲染不同的模板时遇到了问题。 因此,请告诉我,如果条件允许,我会使用权利吗?如果不是,请告诉解决方案我应该怎么做才能渲染不同的模板?
答案 0 :(得分:3)
除了一些误解或错别字:
您选择了其他模板,但尚未将模板名称作为变量提供给模板。
在templateName定义之后,FLUIDTEMPLATE
对象中需要类似以下内容:
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
之类的变量,因为它没有选择模板