【发布时间】:2020-10-22 09:58:28
【问题描述】:
希望有人知道我可以如何简化以下 TypoScript,以便我可以将模板常量中的页面 ID 列表传递给模板脚本。比如说,我定义了一个 TEASER_IDS = 6,7,9,12,4,TypeScript 遍历该列表并将其用于 select.pidInList 一个又一个,而不必在 TypoScript 中手动创建一个 CONTENT 对象每个 ID。
lib.teaser = COA
lib.teaser {
10 = CONTENT
10 {
stdWrap.wrap = <div class="part">|</div>
table = tt_content
select.orderBy = sorting
select.pidInList = 6
select.where = colPos=1
select.languageField = sys_language_uid
}
20 = CONTENT
20 {
stdWrap.wrap = <div class="part">|</div>
table = tt_content
select.orderBy = sorting
select.pidInList = 7
select.where = colPos=1
select.languageField = sys_language_uid
}
}
page.50.30 < lib.teaser
是TYPO3版本10.4.8
编辑:新版本,但我希望每个元素都被包装,所以结果是
//this is what it should look like
<div class="header">CONTENT ID 6 colPos 1</div>
<div class="text">CONTENT ID 6 colPos 2</div>
<div class="header">CONTENT ID 7 colPos 1</div>
<div class="text">CONTENT ID 7 colPos 2</div>
<div class="header">CONTENT ID 4 colPos 1</div>
<div class="text">CONTENT ID 4 colPos 2</div>
TypoScript 现在:
lib.teaser = COA
lib.teaser {
10 = CONTENT
10 {
stdWrap.wrap = <div class="header">|</div>
table = tt_content
select.orderBy = sorting
select.pidInList = 6,7,4
select.where = colPos=1
select.languageField = sys_language_uid
}
20 = CONTENT
20 {
stdWrap.wrap = <div class="text">|</div>
table = tt_content
select.orderBy = sorting
select.pidInList = 6,7,4
select.where = colPos=2
select.languageField = sys_language_uid
}
}
page.50.30 < lib.teaser
代码给了我,这是有道理的,但我不知道如何更改代码,所以它给了我上面提到的新代码的首选输出
//this is not what i want
<div class="header">
CONTENT ID 6 colPos 1
CONTENT ID 7 colPos 1
CONTENT ID 4 colPos 1
</div>
<div class="text">
CONTENT ID 6 colPos 2
CONTENT ID 7 colPos 2
CONTENT ID 4 colPos 2
</div>
【问题讨论】:
-
嗯,
pidInList正是这样做的:select.pidInList = 6,7 -
哦,是的,谢谢。确实:) 但是,我想单独包装它。比如说,目前所有的内容元素都被包装在一起。我会用一些新的来更新上面的问题,因为需要来自多个 colPos 的内容元素
-
不要使用两个 CONTENT 对象,因为它们都会遍历所有匹配的 CE。相反,如果 colPos 具有相应的值,请使用选项覆盖
wrap。 -
请问这是如何实现的?如何检查 colPos 是否具有特定值?我认为这远远超出了我的知识范围
标签: typo3 typoscript typo3-10.x