

This snippet dynamically splits the menu in 2 parts.
So the 1st part contains the 1st half of the menuitems and the 2nd part contains the 2nd half of the menuitems.
1st part
<menuitem1>
<menuitem2>
<menuitem3>
2nd .part
<menuitem4>
<menuitem5>
<menuitem6>
TYPOScript:
lib.splitmenu = COA lib.splitmenu { 10 = HMENU 10.special = directory 10.special.value = 1 10.1 = TMENU 10.1 { wrap = <div>1st part<br>|</div> NO { stdWrap.cObject = COA stdWrap.cObject { 10 = TEXT 10.field = title if.value.data = register:count_HMENU_MENUOBJ if.negate = 1 if.isLessThan.prioriCalc=1 if.isLessThan.cObject=TEXT if.isLessThan.cObject.insertData=1 if.isLessThan.cObject.value = ({register:count_menuItems}+1)/2 wrap = |<br> } } } 20 < .10 20.1.wrap = <div>2nd part<br>|</div> 20.1.NO.stdWrap.cObject.if.negate > } page.200 < lib.splitmenu
This snippet was submitted by Peter Klein




lib.splitmenu = COA
lib.splitmenu {
10 = HMENU
10 {
special = directory
special.value = 1
1 = TMENU
1 {
wrap = <div>1st half of menu items<br />|</div>
NO {
allStdWrap {
wrap = |<br />
if {
value.data = register:count_HMENU_MENUOBJ
negate = 1
isLessThan {
prioriCalc = 1
cObject = TEXT
cObject.insertData = 1
cObject.value = ({register:count_menuItems} + 1) / 2
}
}
}
stdWrap.if < .allStdWrap.if
}
ACT < .NO
ACT = 1
ACT.stdWrap.wrap = <strong>|</strong>
}
}
20 < .10
20.1.wrap = <div>2nd half of menu items<br>|</div>
20.1.NO.stdWrap.if.negate >
20.1.NO.allStdWrap.if.negate >
20.1.ACT.stdWrap.if.negate >
20.1.ACT.allStdWrap.if.negate >
}
Enjoy!
if the menu has child menuitems, how to write the ts using this method. thanks.
Add comment