Как использовать опцию split для управления свойствами меню typo3?
Я пытаюсь решить проблему проектирования в typo3. По сути, мне нужно реализовать меню с вкладками (только вкладки с активным состоянием), которое создается из каталога, но каждое активное (с вкладками) меню должно иметь свой цвет bg (соответствующий блоку тела вкладки). Сначала я решил использовать TMENU, но ранее я познакомился с функциональностью optionsplit как способ достижения этого, но я не могу придумать, как добиться этого с помощью TMENU, поэтому в настоящее время я экспериментирую с GMENU, однако я не понимаю Результаты. Ниже мой текущий код, который дает мне пустые пробелы. Я экспериментирую с копированием изображений вкладок и централизацией текста внутри изображения, но использую опцию для копирования файлов.
temp.navmenu1 = HMENU
special = directory
special.value = {$idMenu}
entryLevel = 1
temp.navmenu1.1 = GMENU
temp.navmenu1.1 {
NO = 1
NO{
NO.Wrap = <ul style="display: inline; "> | </ul>
backColor = #d9d9d9
10 = TEXT
10.text.field = title
10.offset = 0,5
10.align = center
10.niceText = 1
}
ACT < .NO
ACT{
XY = [4.w],[4.h]
4 = IMAGE
4.file = {$hmtab}|*|{$midtab}|*|{$endtab}
}
}
# Temp items aren't rendered, so let's copy it into a TSOP
tv.navmenu1 < temp.navmenu1
page = PAGE
page.typeNum = 0
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page
2 ответа
Я не думаю, что новый сайт должен использовать GMENU
больше Вместо этого вы должны использовать TMENU
с CSS.
Вот базовый пример, с которого следует начать:
10 = HMENU
10 {
special = directory
# start with pid 3
special.value = 3
1 = TMENU
1 {
expAll = 1
wrap = <ul>|</ul>
NO = 1
NO {
wrapItemAndSub = <li>|</li>
ATagTitle = abstract // description // title
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active">|</li>
CUR < .NO
CUR.wrapItemAndSub = <li class="current">|</li>
}
2 < .1
3 < .1
4 < .1
4.wrap = <ul class="level-4">|</li>
}
Конечно, теперь вы можете использовать option split
за wrapItemAndSub
вот так: wrapItemAndSub = <li class="first">|</li> |*| <li class="normal">|</li> |*| <li class="last">|</li>
Остальное в то время просто обычный CSS.
Если ваша проблема заключается в том, что вы хотите обернуть разные подменю на одном уровне разными атрибутами класса, взгляните на свойство submenuObjSuffixes объекта TMENU.
Хотя невозможно использовать optionsplit с переносом (просто потому, что перенос выполняется только один раз), вполне возможно получить желаемый результат, используя подменю ObjSuffixes.
Вот пример:
1 = TMENU
1 {
wrap = <ul>|</ul>
submenuObjSuffixes = |*| b |*| c
NO = 1
NO {
wrapItemAndSub = <li>|</li>
}
}
2 < .1
2.wrap = <ul class="firstItem">|</ul>
2b < .1
2b.wrap = <ul class="middleItems">|</ul>
2c < .1
2c.wrap = <ul class="lastItem">|</ul>
3 < .2
3b < .2b
3c < .2c
4 < .2
4b < .2b
4c < .2c
Это обернет первое меню 2-го уровня с классом "firstItem", последнее меню 2-го уровня с "lastItem" и все промежуточные объекты с классом "middleItems".
Пожалуйста, поймите, что суффиксы добавляются ко ВСЕМ последующим уровням меню. Таким образом, если вы используете подменю ObjSuffixes на уровне 1, это повлияет не только на уровень 2, но и на уровни 3, 4, ... и вы должны определить соответствующие параметры на этих уровнях, иначе они не будут отображаться.