【问题标题】:Typoscript Arrays and using them in FLUIDTyposcript 数组并在 FLUID 中使用它们
【发布时间】:2013-05-06 06:23:53
【问题描述】:

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

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

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

例子:

  • 在 TypoScript 中

    arrayOfTitles= # uid 为 1,2,3 和 4 的页面的标题

  • 在 FLUID 页面中

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

这可能吗

【问题讨论】:

    标签: arrays typo3 typoscript fluid


    【解决方案1】:

    来自大自然的 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 创建菜单对象(当然,您应该提供根页面的 uid,而不是 35、56)。

    最后用&lt;h1&gt;|&lt;/h1&gt; 包装每个项目并添加选项:doNotLinkIt=1,这个 sn-p 很可能会起作用(从我的头顶写的,所以你需要检查它):

    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
    }
    

    【讨论】:

    • 感谢您的回复。我是 Typo3 和 Typoscript 的新手。我很难理解解决方案。如您所述,我可以直接在我的模板中创建插件吗?我实际上是这样做的,但前端似乎没有呈现任何内容。或者有没有先启动插件之类的流程?
    • 我假设您创建了自定义扩展。对于原始 TS 中的简单用法,请使用 HMENU - 检查我的编辑
    • 如果我不想包装标题但希望将它们分配给某个变量怎么办。这样我就可以做一些额外的操作或在前端重用它们?
    • 另外,您能建议我创建自定义扩展的任何好的参考吗?我正在使用 Typo3 6.0.4
    • Extension Builder in version 2.5.0+ 专用于在 TYPO3 ver 6.0+ 中创建扩展
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2023-04-03
    • 1970-01-01
    • 2018-08-01
    • 2013-03-16
    • 1970-01-01
    相关资源
    最近更新 更多