TYPO3 / TypoScript:如何设置备选项?

3
我想通过使用两个备选方案将字符串输出到渲染的HTML中。
我的typoscript在顶级页面(我的网站的根页面)中定义,并传递给所有较低级别的页面。
结构:
主页 - 1级页面 -- 2级页面
文件的常规输出:
该字符串来自TemplaVoila字段(页面/编辑/扩展/MyField):field_copyright_name 为了将其输出到HTML输出中的所需位置,存在一个TemplaVoila映射(类型:Typoscript对象路径),名为:lib.copyright_name 以下typoscript可以完成此工作:
lib.hint_copyright_name = COA
lib.hint_copyright_name.10 = TEXT
lib.hint_copyright_name.10 {
    setCurrent.dataWrap = {field:field_copyright_name}
    current = 1
}

这个功能适用于所有页面和层级,只要该字段(在页面属性中)不为空。

第一个备选方案:

如果该字段为空(例如在第二层级),则typoscript应该从上面的页面获取值(在第一层级),如果那里也是空的,则应该从主页获取。不知道怎么做。你能帮忙吗?

第二个备选方案:

如果第一个备选方案仍然返回空字符串(因为该字段在所有层级都为空),则应该退回到默认值“版权所有”。

要启用此备选方案而不使用“第一个备选方案”很容易:

switchdefault_copyright_name = TEXT
switchdefault_copyright_name {
    setCurrent.dataWrap = {field:field_copyright_name}
    current = 1
    override = "Copyright by me"
    override.if.isFalse.field = field_copyright_name
}


lib.hint_copyright_name = COA
lib.hint_copyright_name.10 < switchdefault_copyright_name

但是如何集成“第一回退”呢?

编辑:

我尝试了:

setCurrent.data = {levelfield:-1, field_copyright_name, slide}

或者
setCurrent.data = levelfield:-1, field_copyright_name, slide

或者
setCurrent.dataWrap = {levelfield:-1, field_copyright_name, slide}

或者
setCurrent.dataWrap = levelfield:-1, field_copyright_name, slide

但是没有成功 - 没有输出。


你能在你的根页面尝试像这样的东西吗: lib.hint_copyright_name.10 { data = {field:field_copyright_name}:0 // {field:field_copyright_name}:1 // {field:field_copyright_name}:2 } 或者使用字段: lib.hint_copyright_name.10 { field = field_copyright_name:0 // field_copyright_name:1 // field_copyright_name:2 } 我不确定这是否有效。 - Rito
Rito的建议不起作用(因为我不想将级别总数限制为3)。 - DanielaWaranie
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接