0

有什么方法可以在当前项之后立即为菜单项应用特殊格式,即 CUR + 1。类似于:

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            ...
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            allWrap = ...
        }

        # The next item
        CUR + 1 = 1
        CUR + 1 {
            allWrap = ...
        }
    }
}

如果您有任何反馈,我将不胜感激。还有替代方案:可以编写一个 PHP 类/函数,而不是用打字稿写这个。

4

2 回答 2

0

所以我设法自己解决了这个问题。答案是使用所谓的寄存器来标记我们是否传递了当前对象。例如:

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
                # Normal Case (However the an item should normally be rendered
                10 = TEXT
                10 {
                   if {
                       isTrue.data = register:cid
                       value = NORMAL RENDERING
                   }
                }
                20 = TEXT
                20 {
                   if {
                       isTrue.data = register:data
                       value = RENDERING (IMMEDIATELY) AFTER THE CURRENT ITEM
                   }
                }
                # Unset the register (after we've done with our special formatting)
                30 = LOAD_REGISTER
                30.cid= 0
            }
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
              # However the Current item should normally be rendered
              10 = TEXT
              10.field = title
              # Mark that we've reached the current item
              20 = LOAD_REGISTER
              20.cid= 1
            }    
        }     
    }
}

使用 LOAD_REGISTER 设置的寄存器基本上是一种运行时变量,可以在遍历菜单项(或其他)的过程中设置和重置。因此,它可以用来记录我们通过菜单项的进度,特别是注意我们是否通过了当前菜单项(CUR)。

rant start 考虑到打字稿是特定领域的语言,它主要用于菜单等规范化的东西,这算不上一个优雅的解决方案。/咆哮结束

于 2011-10-28T15:00:29.757 回答
0

不幸的是,仅使用 TypoScript 是不可能的。我也没有真正看到使用 PHP 的好的解决方案。但是,您可以使用 PHP 来执行此操作,但您需要在 PHP 中加载与菜单本身相同的菜单项。这使得它非常低效且根本不灵活。

我会说向链接添加一个特殊的类属性,或者使用 JavaScript 包装并执行您的格式化。在活动项目之后的项目被修改的位置。

于 2011-10-26T15:28:09.463 回答