Typoscript数组并在FLUID中使用它们

时间:2013-05-06 06:23:53

标签: arrays typo3 typoscript fluid

假设我有一个包含以下网页的项目(请参见屏幕截图)

enter image description here

Red,Blue,Post和Blog Page的uid分别为1,2,3和4。

现在,我想在Typoscript中定义一个数组或某种列表,其中包含所有根网页的标题。这个数组,我可以在我的FLUID模板中使用它并显示所有标题。

示例:

    TypoScript中的
  • arrayOfTitles = #id 1,2,3和4页面的标题

  • FLUID页面中的
  • <f:for each="{arrayOfTitles}" as="foo">
    <h1> {foo} </h1>
    </f:for>
    

这是否可能

1 个答案:

答案 0 :(得分:5)

来自大自然的TypoScript是一个数组,所以最简单的方法就是在模板中添加这样的集合:

plugin.tx_yourext {
  settings {
    domains {
      10 = one
      20 = two
      30 = three
      40 = four
    }
  }
}

所以你可以直接在视图中使用它

<f:for each="{settings.domains}" as="title">
    <h1>{title}</h1>
</f:for>

另一方面,也许最好执行简单的数据库查询从数据库中获取这些页面,然后创建简单数组并将其作为参数分配给视图。在这种情况下,如果标题发生变化,您将无需更改TS。

SQL伪代码:

SELECT title FROM pages WHERE is_siteroot = 1 AND deleted = 0 AND hidden = 0 ORDER BY sorting ASC

编辑:

您也可以使用TypoScript中的常见HMENU(避免使用视图),只需使用special=list创建菜单对象(当然代替35,56,您应该为您的根页提供uid)。

最后用<h1>|</h1>包装每个项目并添加选项:doNotLinkIt=1,很可能这个代码段可以使用(从我的头顶写,所以你需要检查它):

lib.myTitles = HMENU
lib.myTitles {
  special = list
  special.value = 1,2,3,4

  1 = TMENU
  1.NO.wrapItemAndSub = <h1>|</h1>
  1.NO.ATagTitle.field =  title
  1.NO.doNotLinkIt = 1
}