Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Генерарция иерархического меню (http://forum.typo3.ru/showthread.php?t=9509)

tram 02.06.2011 01:06

Генерарция иерархического меню
 
Доброго времени суток.
Помогите, пожалуйста, с созданием tsconfig-а для генерации иерархического меню.

Суть вопроса - необходимо, что б меню имело следующую структуру:
<div class="l1">Element1 Level1</div>
<div class="l1">Element2 Level1</div>
<div class="l1">Element3 Level1
<div class="l2">Elem1 Level2</div>
<div class="l2">Elem2 Level2</div>
</div>
<div class="l1">Element4 Level1</div>

Но мне упорно выдет структуру:
<div class="l1">Element1 Level1</div>
<div class="l1">Element2 Level1</div>
<div class="l1">Element3 Level1</div>
<div class="l2">Elem1 Level2</div>
<div class="l2">Elem2 Level2</div>
<div class="l1">Element4 Level1</div>

Пересмотрев различные примеры и документацию нашел только одно решение: принять структуру как есть и выстраивать отображение с помощью css.
Но данное решение не подходит, это во первых.
А во вторых - чувствую что нужное решение есть, а найти не могу.

Буду признателен за помощь.

dmartynenko 02.06.2011 17:55

Из какой структуры страниц вы генерируете меню? Приведите пример, скриншот.

tram 03.06.2011 03:14

Структура - самая что ни на есть простая:
Some root level page
Element1 level1 page
Element11 level2 page
Element12 level2 page
Element2 level1 page
Element21 level2 page
Element22 level2 page
Element3 level1 page
Element31 level2 page
Element32 level2 page
Сократил и упростил ts-файл по построению меню - в принципе базовая версия большинства примеров получилась. Можем от него отталкиваться.
Его содержание:

Код:

[GLOBAL]

page.20.subparts.LEFTMENU >

page.20.subparts {
  LEFTMENU = COA
  LEFTMENU {
    10 = HMENU
    10 {
      entryLevel = 1
      1 = TMENU
      1 {
        NO {
        allStdWrap.innerWrap (
          <div class="l1">|</div>
        )
        }
        ACT < .NO
        ACT = 1
        ACT {
          ATagParams = class="current"
        }
      }
      2 = TMENU
      2 {
        NO {
          allStdWrap.innerWrap (
            <div class="l2">|</div>
          )
        }
        ACT = 1
        ACT {
          ATagParams = class="current"
        }
      }
    }
  }
}

[GLOBAL]


filippoff 04.06.2011 01:50

используйте wrapItemAndSub для элементов с подменю, либо wrap для всего меню
а вообще, ваше меню с вложенными дивами просится на переделку в список.

tram 05.06.2011 16:19

Спасибо за ответ, но wrapItemAndSub и wrap делают нужную обертку, но отнюдь не помогают с местом расположения елементов.

Цитата:

а вообще, ваше меню с вложенными дивами просится на переделку в список.
Да, так и есть :) Меню должен формировать с вложенными один в другой списками ul & li без ограничения по уровню вложенности.
То есть конечный результат должен таким быть:
<ul>
<li class="l1">Element1 Level1</li>
<li class="l1">Element2 Level1</li>
<li class="l1">Element3 Level1
<ul>
<li class="l2">Elem1 Level2</li>
<li class="l2">Elem2 Level2</li>
</ul>
</li>
<li class="l1">Element4 Level1</li>
</ul>
Но показалось, что так больше запутаю своим вопросом

filippoff 06.06.2011 01:26

вот здесь такая схема: http://cobra-garant.ru
Код:

lib.mainMenu.10 = HMENU
lib.mainMenu.10 {
  entryLevel = 0
  #expAll = 1
  wrap = <ul class="sf-menu">|</ul>
  1 = TMENU
  1 {
      noBlur=1
      expAll = 1
 
      NO {
        wrapItemAndSub = <li>|</li>
        #doNotLinkIt = 1
        ATagParams = onClick="return false;"
      }
     
      ACT = 1
      ACT {
            wrapItemAndSub = <li class="current">|</li>
              ATagParams = onClick="return false;"
      }
  }
  2 = TMENU
  2 {
    noBlur=1
    expAll = 1
    wrap = <ul>|</ul>
    NO {
        wrapItemAndSub = <li>|</li>
    }
   
    ACT = 1
    ACT {
        wrapItemAndSub = <li class="current">|</li>
    }
  }
}


tram 07.06.2011 00:43

Вуаля!!!
Уважаемый filippoff, премного благодарен!
Земля таки крутится, а меню выстроилось как нужно :)


Часовой пояс GMT +4, время: 20:38.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot