我正在尝试使前端的布局取决于backend_layout
值。这是我的TypoScript:
temp {
layout = CASE
layout {
key.field = backend_layout
key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
default = LAYOUT_ONECOLUMN
1 = LAYOUT_ONECOLUMN
2 = LAYOUT_GALLERYTOP
}
pageContent = TEMPLATE
pageContent {
template = FILE
template.file = fileadmin/templates/index.html
workOnSubpart < temp.layout
marks {
COLUMN0 < styles.content.getLeft
COLUMN1 < styles.content.get
COLUMN2 < styles.content.getRight
COLUMN3 < styles.content.getBorder
}
}
}
page = PAGE
page {
10 < temp.pageContent
}
这是相应的html-excerpt:
<!-- ###LAYOUT_ONECOLUMN### begin -->
EINSPALTIG ;)
<!-- ###LAYOUT_ONECOLUMN### end -->
<!-- ###LAYOUT_GALLERYTOP### begin -->
###COLUMN0###
<div class="grid2">
###COLUMN1###
</div>
<aside class="grid1">
###COLUMN2###
</aside>
<!-- ###LAYOUT_GALLERYTOP### end -->
结果是一个空白页面。为什么这不起作用?出于调试目的,我做了以下事情:
temp {
layout = CASE
layout {
key.field = backend_layout
key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
default = TEXT
default.value = LAYOUT_ONECOLUMN
1 = TEXT
1.value = LAYOUT_ONECOLUMN
2 = TEXT
2.value = LAYOUT_GALLERYTOP
}
}
page = PAGE
page {
10 < temp.layout
}
按预期方式将“LAYOUT_GALLERYTOP”打印到页面上。
我做了第二次测试:
temp {
pageContent = TEMPLATE
pageContent {
template = FILE
template.file = fileadmin/templates/index.html
workOnSubpart = LAYOUT_GALLERYTOP
marks {
COLUMN0 < styles.content.getLeft
COLUMN1 < styles.content.get
COLUMN2 < styles.content.getRight
COLUMN3 < styles.content.getBorder
}
}
}
page = PAGE
page {
10 < temp.pageContent
}
这也产生了所需的布局,但当然不会响应更改后端的backend_layout值。
为什么我无法通过workOnSubpart
定义CASE
值。有解决方案或解决方法吗?
提前致谢。
答案 0 :(得分:2)
CASE是一个cObject,因此您需要使用stdWrap cObject功能:
temp {
layout = CASE
layout {
key.field = backend_layout
key.ifEmpty.data = levelfield:-2, backend_layout_next_level, slide
default = TEXT
default.value = LAYOUT_ONECOLUMN
1 = TEXT
1.value = LAYOUT_ONECOLUMN
2 = TEXT
2.value = LAYOUT_GALLERYTOP
}
pageContent = TEMPLATE
pageContent {
template = FILE
template.file = fileadmin/templates/index.html
workOnSubpart.cObject < temp.layout
marks {
COLUMN0 < styles.content.getLeft
COLUMN1 < styles.content.get
COLUMN2 < styles.content.getRight
COLUMN3 < styles.content.getBorder
}
}
}