typo3, typoscript, TMENU / HMEN: специальное форматирование для элемента после текущего элемента - PullRequest
0 голосов
/ 25 октября 2011

Есть ли способ применить специальное форматирование для пункта меню сразу после текущего элемента, это CUR + 1. Что-то вроде:

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            ...
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            allWrap = ...
        }

        # The next item
        CUR + 1 = 1
        CUR + 1 {
            allWrap = ...
        }
    }
}

Буду признателен за любые ваши отзывы. Также альтернативы: Можно написать класс / функцию PHP вместо того, чтобы писать это в typoscript.

Ответы [ 2 ]

0 голосов
/ 28 октября 2011

Так что мне удается решить это самому.Ответ заключается в том, чтобы использовать так называемый регистр, чтобы отметить, передали мы текущий объект или нет.Например:

lib.menu = HMENU
lib.menu {
    1 = TMENU {
        NO = 1
        NO = {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
                # Normal Case (However the an item should normally be rendered
                10 = TEXT
                10 {
                   if {
                       isTrue.data = register:cid
                       value = NORMAL RENDERING
                   }
                }
                20 = TEXT
                20 {
                   if {
                       isTrue.data = register:data
                       value = RENDERING (IMMEDIATELY) AFTER THE CURRENT ITEM
                   }
                }
                # Unset the register (after we've done with our special formatting)
                30 = LOAD_REGISTER
                30.cid= 0
            }
        }
        ...
        # The currently selected item
        CUR = 1
        CUR {
            # Render using Common Object Array (COA)
            stdWrap.cObject = COA
            stdWrap.cObject {
              # However the Current item should normally be rendered
              10 = TEXT
              10.field = title
              # Mark that we've reached the current item
              20 = LOAD_REGISTER
              20.cid= 1
            }    
        }     
    }
}

Регистр, установленный с помощью LOAD_REGISTER, в основном представляет собой тип переменной времени выполнения, которую можно устанавливать и сбрасывать в ходе итерации по пунктам меню (или как угодно).Как таковой, он может использоваться, чтобы отметить наш прогресс в пунктах меню, особенно, если мы пропустили текущий пункт меню (CUR) или нет.

rant begin Вряд ли элегантное решениеучитывая, что typoscript является предметно-ориентированным языком, который в основном используется для такого нормирующего материала, как меню. / rant end

0 голосов
/ 26 октября 2011

К сожалению, это невозможно только с TypoScript.Я тоже не вижу хорошего решения с PHP.Однако вы можете сделать это с помощью PHP, но вам нужно будет загрузить те же пункты меню, что и в самом меню, внутри PHP.Что делает его очень неэффективным и совсем не гибким.

Я бы сказал, добавьте специальный атрибут класса к ссылке или переносу и выполните форматирование с помощью JavaScript.Где предмет, следующий за активным, изменен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...