我想在菜单中创建一个下拉登录表单,例如:http://bootsnipp.com/snippets/featured/fancy-navbar-login-sign-in-form
我有这个cObject,它为导航调用了typoscript:
<f:cObject typoscriptObjectPath="menu.navbar" />
我需要以某种方式将登录表单的内容放入菜单中。是否可以通过cObject将变量(在我的情况下是登录表单)传递给typoscript?
答案 0 :(得分:5)
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
}
如果您有这样的TypoScript,则需要具有键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周围的某处插入所需内容。