这个 TypoScript 模板在 TYPO3 CMS 6.2.17 服务器上为我工作。
page.30 = CONTENT
page.30 {
table = tt_content
select {
orderBy = sorting
where = colPos = 0
}
renderObj = COA
renderObj {
wrap = <div>|</div>
10 = COA
10.10 = TEXT
10.10.if.isTrue.field = header_link
10.10.if.isFalse.field = image
10.10 {
stdWrap.data = header_link
stdWrap.typolink {
parameter.field = header_link
wrap = <img src="|" />
ATagBeforeWrap = 1
}
}
10.20 = TEXT
10.20.if.isFalse.field = header_link
10.20.stdWrap.field = header
10.20.stdWrap.wrap = <h1>|</h1>
}
}
结果显示tt_content header 字段,除非header_link 和image 字段都测试为阳性。以下是我在测试中使用的tt_content记录的相关字段。 (|| 表示空字段值。)
uid|hidden|Sorting|CType|header|image|deleted|colPos|header_link|
29|0|256|text|Regular text element|NULL|0|0||
30|0|512|image|Image element|0|0|0|file:37|
31|0|384|image|Image element with no image|0|0|0||
32|0|768|div|Divider|NULL|0|0||
我将 hidden 和 deleted 列作为提醒,因为如果将其中任何一个设置为 1,则 CONTENT select 函数将不会返回该记录以供 renderObj 使用。还检查开始和结束日期,以及当前用户是否具有对内容元素的访问权限。见"select" in the TypoScript Reference manual。
一个对象上的多个 TypoScript if 语句通过隐式逻辑 AND 连接在一起。请参阅"if" page in the TypoScript Reference 及其在"Explanation" 下具有两个条件的“更复杂”示例。
这是本次测试涉及的if逻辑。
Object page.30.renderObj.10.10.
uid|header_link|if.isTrue.field = header_link|image|if.isFalse.field = image|Result
29||no|NULL|no|not rendered
30|file:37|yes|0|yes|rendered
31||no|0|yes|not rendered
32||no|NULL|no|not rendered
Object page.30.renderObj.10.20.
uid|header_link|if.isFalse.field = header_link|Result
29||yes|rendered
30|file:37|no|not rendered
31||yes|rendered
32||yes|rendered
如果我们只对page.30.renderObj.10.10 对象使用if.isTrue.field = header_link 测试,输出显示会产生相同的结果,而不要使用if.isFalse.field = image 测试。但是,保持if.isFalse.field = image 测试更紧密地回答请求,并说明检查多个字段。