f:cObject
有一个data
属性,可以采取不同类型的值。
通常data属性需要一个数组,然后您可以使用这些值来使用typoscript中的.field
属性来呈现内容对象。
一个例子:
lib.testFluid = COA
lib.testFluid {
wrap = <div>|</div>
10 = TEXT
10.field = title
10.wrap = <b>|</b>
20 = TEXT
20.field = content
}
如果你有Typo脚本那样,数据阵列,具有键title
和content
预期。渲染这样的内容对象将可能是这样的流体:
<f:cObject typoscriptObjectPath="lib.testFluid" data="{title: 'Hello World', content: 'Foobar'}" />
不过,如果你只是有一些“内容”(如字符串内容),并希望将它输出在你的内容对象一个地方,你可以按原样传递它,并使用TypoScript中的.current
属性让它使用“当前值”。
lib.testFluid = COA
lib.testFluid {
wrap = <div>|</div>
10 = TEXT
10.current = 1
10.wrap = <b>|</b>
}
而在流体:
<f:cObject typoscriptObjectPath="lib.testFluid" data="simple text content" />
或
<f:cObject typoscriptObjectPath="lib.testFluid">simple text content</f:cObject>
当然数据中也需要正常变量。根据你的用例,其中一种情况可能是你想要的。
编辑:然而,它似乎有点复杂,如果你想与HMENU一起使用数据。嵌套的TMENU实例(或其他菜单)具有不同的数据值,因为它正被HMENU用该菜单条目的当前页面覆盖。您可能必须做一些令人费解的包装,或避免在TMENU/GMENU等中插入所需的内容。我建议在这种情况下完全用流体渲染菜单。
编辑2 - 实施例
像这样被行不通:
lib.testFluid = HMENU
lib.testFluid {
special = directory
special.value = 1
wrap = <ul>|</ul>
1 = TMENU
1 {
NO.stdWrap.cObject = COA
NO.stdWrap.cObject {
10 = TEXT
10.field = title
10.noTrimWrap = || |
20 = TEXT
20.current = 1
}
}
}
20.current = 1
将不包括从由流体视图助手提供的数据的值,这是因为“数据”的TMENU已被HMENU内容对象更改为当前页面。
但是,应该可以在HMENU周围包裹COA或类似物以在HMENU周围的某处插入所需的内容。