首页 > 解决方案 > TypoScript if 条件与当前年份的字段 crdate [9.5.7]

问题描述

我有一个 HMENU,special = directory我尝试只选择这些,该字段crdate在当前年份。

我尝试了以下 TypoScript,但如果它们是在 2018 年创建的,它们也会显示树中的所有子页面。

lib.news.jahr = COA
lib.news.jahr{
5 = TEXT
5{
    current = 1
    setCurrent.data = date:U
    setCurrent.wrap = |
    prioriCalc = 1
    strftime = %Y
    wrap = <h3>News&nbsp;|</h3>
}

10 = HMENU
10{
    special = directory
    special.value = 87
    wrap = <ul>|</ul>

    1 = TMENU
    1{
        NO.wrapItemAndSub = <li>|</li>
        NO.if{
            equals.data = date:U
            equals.strftime = %Y
            equals.prioriCalc = 1
            value.data = field:crdate
            value.data.strftime = %Y
        }
    }
}
}

TypoScript 必须在最新版本 9.5.7 中工作

标签: if-statementtypo3typoscripttypo3-9.x

解决方案


菜单项没有 if。https://docs.typo3.org/typo3cms/TyposcriptReference/MenuObjects/Tmenuitem/Index.html

使用类似的东西

NO.allStdWrap.if {
  value.field = crdate
  value.strftime = %Y
  equals.data = date:Y
}

但是您必须使用 wrapItemAndSub 以外的包装,否则您会得到空的 li 标签。

或者您可以使用 USERDEF1 而不是 NO 和 itemArrayProcFunc 与 PHP 函数来过滤数组。


推荐阅读