有任何方法可以在当前项目之后立即对菜单项应用特殊格式, 这是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类/函数,而不是在typoscript中编写它。
答案 0 :(得分:0)
不幸的是,只有TypoScript才能实现这一点。我真的没有看到PHP的好解决方案。但是你可以使用PHP来完成它,但你需要加载相同的菜单项,就像在PHP中的菜单本身一样。这使得效率非常低,而且根本不灵活。
我想说为链接添加一个特殊的类属性,或者用JavaScript包装和执行你的格式化。修改活动项目之后的项目。
答案 1 :(得分: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)。
咆哮开始考虑到typoscript是特定于域的语言,它几乎是一个优雅的解决方案,主要用于菜单这样的标准化内容。 / rant end