TYPO3:通过 cObject 将变量传递给打字稿?
TYPO3: pass variable to typoscript via cObject?
我想在我的菜单中创建一个下拉登录表单,如本例所示:http://bootsnipp.com/snippets/featured/fancy-navbar-login-sign-in-form
我有这个 cObject 为导航调用错别字:
<f:cObject typoscriptObjectPath="menu.navbar" />
我需要以某种方式将登录表单的内容放入菜单错字中。是否可以通过 cObject 将变量(在我的例子中是登录表单)传递给打字稿?
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'}" />
但是,如果您只有一些 "content"(例如字符串内容)并希望将其输出到内容对象的一个位置,您可以按原样传递它并使用 .current
属性 在 TypoScript 中让它使用 "current value".
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>
当然data也取普通变量。根据您的用例,其中一种情况可能就是您想要的。
编辑: 但是,如果要将数据与 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 的 "data" 已被 HMENU 内容对象更改为当前页面。
但是,应该可以在 HMENU 周围包裹 COA 或类似内容,以便在 HMENU 周围的某处插入所需的内容。
我想在我的菜单中创建一个下拉登录表单,如本例所示:http://bootsnipp.com/snippets/featured/fancy-navbar-login-sign-in-form
我有这个 cObject 为导航调用错别字:
<f:cObject typoscriptObjectPath="menu.navbar" />
我需要以某种方式将登录表单的内容放入菜单错字中。是否可以通过 cObject 将变量(在我的例子中是登录表单)传递给打字稿?
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'}" />
但是,如果您只有一些 "content"(例如字符串内容)并希望将其输出到内容对象的一个位置,您可以按原样传递它并使用 .current
属性 在 TypoScript 中让它使用 "current value".
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>
当然data也取普通变量。根据您的用例,其中一种情况可能就是您想要的。
编辑: 但是,如果要将数据与 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 的 "data" 已被 HMENU 内容对象更改为当前页面。
但是,应该可以在 HMENU 周围包裹 COA 或类似内容,以便在 HMENU 周围的某处插入所需的内容。