2017-02-01 14 views
0

Редактировать: Прежде чем начать, учтите, что в моем первоначальном посте условие, которое я использовал для иллюстрации проблемы, было запутанным. Я отметил его теперь ###. Это было предназначено только для того, чтобы показать, что мне нужно решение типа if. Однако условие if с скобками [] не работает в этой точке в typoscript. См. Решения ниже, в которых используется override.if. Это прекрасно работает!Динамическая упаковка в соответствии с полем: title

В tmenu, созданный с помощью typoscript, я хочу обернуть элементы по-разному, в соответствии с названием страниц, к которым они принадлежат. Я использую Foundation для ширины элементов, а для этого - большой-4. Теперь базовая упаковка (wrapitemandsub) не проблема, однако есть одна страница с более длинным заголовком, и мне нужно будет использовать класс large-8. В следующем коде я написал условие с недопустимым выражением, просто чтобы продемонстрировать вам, как он должен себя вести.

Это скрипт для навигации:

lib.content_menu = COA 
lib.content_menu { 

    1 = HMENU 
    1 { 
    entryLevel = 0 
    1 = TMENU 
    1 { 
     expAll = 1 
     NO { 
     ### [current pagetitle == somevalue] 
     wrapItemAndSub = <li class="columns small-8 large-8 active">|</li>wrap 
     ### [ELSE] 
     wrapItemAndSub = <li class="columns small-4 large-4">|</li> 
     ### [END] 
     } 
     ACT = 1 
     ACT { 
     wrapItemAndSub = <li class="columns small-4 large-4 active">|</li> 
     } 
     CUR = 1 
     CUR < .ACT 
     IFSUB = 1 
     IFSUB { 
     ATagParams = onclick='return false;' 
     wrapItemAndSub = <li class="columns small-4 large-4">|</li> 
     } 
     ACTIFSUB = 1 
     ACTIFSUB { 
     ATagParams = onclick='return false;' 
     wrapItemAndSub = <li class="columns small-4 large-4 active">|</li> 
     } 
     CURIFSUB = 1 
     CURIFSUB < .ACTIFSUB 
    } 
    2 = TMENU 
    2 { 
     wrap = <ul class="menu vertical">|</ul> 
     NO { 
     wrapItemAndSub = <li>|</li> 
     } 
     CUR = 1 
     CUR { 
     wrapItemAndSub = <li class="active">|</li> 
     } 
    } 
    } 
} 

Может кто-нибудь помочь мне в этом? :)

ответ

1

В вашем контексте вы можете использовать .if или .override - узнать больше о них в TSRef: https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/If/Index.html https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Stdwrap/Index.html#override

Попробуйте так:

wrapItemAndSub = <li class="columns small-4 large-4">|</li> 
wrapItemAndSub.override = <li class="columns small-8 large-8 active">|</li> 
wrapItemAndSub.override.if.value = titletocheck 
wrapItemAndSub.override.if.equals.field = title 
+0

Эй, спасибо много, это было именно то, что я искал! Я совершенно новичок в опечатке (в общем), поэтому я очень ценю вашу помощь! Условие [field:] было только для иллюстрации моей проблемы :) –

+0

Поскольку условия TS не могут использоваться внутри фигурных скобок, я отредактировал вопрос, чтобы избежать путаницы с условиями TS. поэтому никаких намеков на состояние ТС в ответ не требуется. –

+0

Я также написал заявление об отказе от того, как должно быть допущено условие. Я также сам изменил условие, поэтому его явно просто пример для аналогичного условия, особенно не из typoscript. Надеюсь, теперь это лучше :) –

 Смежные вопросы

  • Нет связанных вопросов^_^