TYPO3:通过cObject将变量传递给typoscript?

时间:2017-05-04 08:12:53

标签: typo3 typoscript fluid

我想在菜单中创建一个下拉登录表单,例如:http://bootsnipp.com/snippets/featured/fancy-navbar-login-sign-in-form

我有这个cObject,它为导航调用了typoscript:

<f:cObject typoscriptObjectPath="menu.navbar" />

我需要以某种方式将登录表单的内容放入菜单中。是否可以通过cObject将变量(在我的情况下是登录表单)传递给typoscript?

1 个答案:

答案 0 :(得分:5)

f:cObjectdata属性,可以使用不同类型的值。

通常,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,则需要具有键titlecontent的数据数组。渲染这样的内容对象可能看起来像流畅的那样:

<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周围的某处插入所需内容。