Как использовать опцию 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, ... и вы должны определить соответствующие параметры на этих уровнях, иначе они не будут отображаться.

Другие вопросы по тегам