вижу 2 варианта. простой и умный.
простой. использовать COA меню первого уровня не будут так часто добавялться, так что можно использовать что-то такое:
lib.menu = COA
lib.menu.10 = HTML
lib.menu.10.value(
<table width="100%" cellspacing="0" cellpadding="0"><tr><td width="160">
)
lib.menu.15 = HMENU
lib.menu.15{
special = list
special.value = 51
1 = TMENU
1 {
NO = 1
NO.linkWrap = <b> | </b>
}
}
lib.menu.20 = HTML
lib.menu.20.value(
</td><td width="270">
)
lib.menu.25 = HMENU
lib.menu.25 <lib.menu.15
lib.menu.25 {
special = list
special.value = 42
}
lib.menu.30 = HTML
lib.menu.30.value(
</td><td width="270">
)
lib.menu.35 = HMENU
lib.menu.35 <lib.menu.15
lib.menu.35 {
special = list
special.value = 39
}
lib.menu.40 = HTML
lib.menu.40.value(
</td><td width="160">
)
lib.menu.45 = HMENU
lib.menu.45 <lib.menu.15
lib.menu.45 {
special = list
special.value = 37
}
lib.menu.50 = HTML
lib.menu.50.value(
</td></tr></table>
)
задавая в для каждого первого уровня свои правила для вывода подменю. кстати, можно задать чтобы выводилось 5 пунктов последних добавленных в раздел.
второй вариант программерский, умный
использовать if. логика простоая. если pid =13, выводить однин кусок кода, в противном случае другой.