Многоуровневое меню | CMS обзор

Рубрики : (TYPO3)

Многоуровневое меню

Метки : , ,

Довольно часто сталкиваешься с проблемой создания многоуровневого списка на подобие офисных программ (MS Office, OpenOffice).

Например, такой список стандартным образом в HTML организовать не получится.

1. Раздел
2. Раздел
2.1. ПодРаздел
2.2. ПодРаздел
3. Раздел
4. Раздел
4.1. ПодРаздел
4.2. ПодРаздел

Поэтому приходится выдумывать всевозможные методы построения многоуровневого меню или списка с помощью JavaScript или Php скриптов.

Ниже представлен вариант реализации многоуровневого меню с помощью TypoScript для TYPO3. Как оно работает можно посмотреть в портфолио здесь.

Даный код TypoScript использует LOAD_REGISTER для счетчика. Для каждого уровня меню нужно регистрировать свой счетчик.

  map = HMENU
  map{    
    wrap = <ol type="none">|</ol>
    entryLevel = 1
    1 = TMENU
    1 {      
      collapse = 1
      noBlur = 1    
      NO{
        stdWrap.cObject = COA
              stdWrap.cObject {
                10 = LOAD_REGISTER
                10{
                Counter1.cObject = TEXT
                Counter1.cObject.data = register:Counter1
                Counter1.cObject.wrap = |+1
                Counter1.prioriCalc = intval
                }
                20 = TEXT
          20.field = title // subtitle
              }
              linkWrap = |
               
        ATagTitle.field = title // subtitle
        allStdWrap.dataWrap = <li>{register:Counter1}.&nbsp;|</li>
      }
      CUR = 1
      CUR < .NO
      CUR.allStdWrap.dataWrap = <li class="act">{register:Counter1}.&nbsp;|</li>
      CUR.doNotLinkIt = 1        
    }  
   

   
    2 = TMENU
    2 {      
      wrap = <ol type="none">|</ol>
      noBlur = 1  
      NO{
        stdWrap.cObject = COA
        stdWrap.cObject {
          10 = LOAD_REGISTER
          10{
          Counter2.cObject = TEXT
          Counter2.cObject.data = register:Counter2
          Counter2.cObject.wrap = |+1
          Counter2.prioriCalc = intval
          }
          20 = TEXT
          20.field = title // subtitle
        }
        linkWrap = |
       
        ATagTitle.field = title // subtitle
        allStdWrap.dataWrap = <li>{register:Counter1}.{register:Counter2}.&nbsp;|</li>
      }
      CUR = 1
      CUR < .NO
      CUR.allStdWrap.dataWrap = <li class="act">{register:Counter1}.{register:Counter2}.&nbsp;|</li>
      CUR.doNotLinkIt = 1        
    }    
  }


Оставить комменатарий