2

Assuming I have a project with the following web pages (Please see the screen shot)

enter image description here

The uids of Red, Blue, Post and Blog Page are 1,2,3 and 4 respectively.

Now, I would want to define an array or some kind of list in Typoscript which will contain the titles of all the root webpages. And this array, I can use it in my FLUID template and display all the titles.

Example:

  • in TypoScript

    arrayOfTitles= # titles of the pages with uid 1,2,3 and 4

  • in FLUID page

    <f:for each="{arrayOfTitles}" as="foo">
    <h1> {foo} </h1>
    </f:for>
    

Is this possbile

4

1 回答 1

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>

另一方面,也许最好执行简单的 DB 查询以从数据库中获取这些页面,然后创建简单的数组并将其作为参数分配给视图。在这种情况下,如果标题更改,您将不需要更改您的 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
}
于 2013-05-06T08:49:26.393 回答