2017-05-04 72 views
1

我想在我的菜单来创建一个下拉登录表单,就像这个例子:http://bootsnipp.com/snippets/featured/fancy-navbar-login-sign-in-formTYPO3:通过cObject将变量传递给typoscript?

我有这样的CObject,对导航要求Typo脚本:

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

我需要的内容登录表单以某种方式进入菜单输入框。是否有可能通过cObject传递一个变量(在我的例子中是登录表单)给typoscript?

回答

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 
} 

如果你有Typo脚本那样,数据阵列,具有键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周围的某处插入所需的内容。