【发布时间】:2011-05-24 10:26:58
【问题描述】:
我想通过使用两个后备将字符串输出到呈现的 HTML。
我的打字稿在顶级页面(我网站的根页面)中定义,并传递到较低级别的所有页面。
结构:
- 首页
- 第 1 级页面
- 第 2 级页面
- 第 1 级页面
文件的常规输出:
字符串来自 TemplaVoila 字段(页面/编辑/扩展/MyField):field_copyright_name
要将其输出到 HTML 输出中的所需点,存在一个 templaVoila 映射(类型:Typoscript 对象路径),命名为:lib.copyright_name
以下打字稿可以完成这项工作:
lib.hint_copyright_name = COA
lib.hint_copyright_name.10 = TEXT
lib.hint_copyright_name.10 {
setCurrent.dataWrap = {field:field_copyright_name}
current = 1
}
这适用于字段(在页面属性中)不为空的所有级别的所有页面。
第一个后备:
如果该字段为空(在该页面的属性中,例如在第 2 级),打字稿应该从上面的页面中获取值(在第 1 级,如果它也是空的,它应该从主页中获取)。不知道该怎么做。你能帮忙吗?
第二个后备
如果第一个回退仍然返回一个空字符串(因为该字段在所有级别都是空的),它应该回退到默认值“我的版权”。
在没有“第一次后备”的情况下启用此后备很简单:
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 } or with field: lib.hint_copyright_name.10 { field = field_copyright_name:0 // field_copyright_name:1 // field_copyright_name:2 } 我不确定这是否有效。
-
Rito 的建议不起作用(因为我不想将级别限制为总共 3 个)。
标签: typo3 fallback typoscript fallbackvalue