将寄存器值分配给TYPO3 CASE键

问题描述 投票:0回答:2

正在制作一些复杂的菜单,并希望使用CASE(或类似格式)来确定给定分支中子菜单的数量,以确定要使用的菜单样式。

代码:

5 = HMENU
5 {
    entryLevel = -1

    1 = TMENU
    1 {
        expAll = 1

        NO = 1
        NO {
           ...
        }

        IFSUB = 1
        IFSUB {

            10 = CASE
            10 {
                key.data = {register:count_menuItems}

                1 = COA
                1 {
                    data = {field:title}
                    data.insertData = 1
                }

                2 = COA
                2 {
                    data = {field:title}
                    data.insertData = 1
                }

                default = COA
                default {
                    data = {field:title}
                    data.insertData = 1
                }
            }

            wrapItemAndSub = |
        }
    }

    2 = TMENU
    2 {
        maxItems = 2
        expAll = 1
    ...
    }
}

我如何让CASE工作?我已经尝试过不带大括号。

typo3 typoscript typo3-10.x
2个回答
0
投票

找到答案。据我所知,CASE适用于stdwrap.cObjects,因此代码

10 = CASE
10 {
   key.data = {register:count_menuItems}
   ...
}

应该是

stdWrap.cObject  = CASE
stdWrap.cObject {
   key.data = register:count_menuItems
   if.isTrue.data = register:count_menuItems
   ...
}

以这种方式工作。


0
投票

您应该获得更多有关如何输入打字稿中的字段,注册和其他数据的信息。

如果拥有属性,您通常可以修改获取常量文本以外的其他信息的方式。

在您的示例中,是key属性,常量没有意义。

如果要访问“当前”记录/数据的字段,则只需使用key.field = fieldname

如果是其他数据,则将其修改为key.data = register:registername可以通过key.data = field:fieldname

访问字段

如果您希望这些数据与其他信息相关联,则可以使用自动换行:

key.data = register:registername
key.wrap = prefix- | -suffix

注意:包装纸的各个部分在连接之前已被修剪

另一种方式是内联表示法,您甚至可以使用多个值:

key = {register:registername}-with-{field:fieldname}
key.insertData = 1

这里有两个替代品。每个都必须用花括号{}包裹,并且您需要告诉TYPO3有要做的替换:insertData = 1

© www.soinside.com 2019 - 2024. All rights reserved.