2016-10-20 6 views
0

Я сделал специальное подменю подкачки с иконками, которые можно вставить, выбрав конкретный backend_layout с именем pagets__panmenu, если этот макет выбран, главное меню не должно отображать подменю и ссылку на страницу, вместо открытия суб ...typoscript: не показывать подменю, если выбран определенный backend_layout

Я работаю с typo3 V7.6.11 и содержание в стиле жидкости

часть чтения значения работает правильно:

NO = 1 
NO { 
    before.cObject = LOAD_REGISTER 
    before.cObject{ 
    panmenu.cObject = TEXT 
    panmenu.cObject.data.dataWrap = DB:pages:{field:uid}:backend_layout 
    } 
    ATagBeforeWrap = 1 
    wrapItemAndSub = <li>|</li> 
    stdWrap.htmlSpecialChars = 1 
} 

Это мои лучшие усилия, чтобы соответствовать, но ее не работает:

IFSUB <.NO 
IFSUB { 
    wrapItemAndSub = <li class="dropdown">|</li> 
    wrapItemAndSub.override = <li>|</li>   
    wrapItemAndSub.override.if { 
     value.data = register:panmenu 
     equals = pagets__panmenu 
    } 

    ATagParams = class="dropdown-toggle" data-toggle="dropdown" 
    ATagBeforeWrap = 1 
} 

Я знаю, что также 2 < +0,1 должен быть подавлен, я пытаюсь получить если работать, чтобы сохранить стиль и связь чистые для стартеров ...

+0

Посмотрите здесь http://stackoverflow.com/questions/39614470/typoscript-condition-backend-layout-with-slide, возможно, это помогает – bschauer

+0

@bschauer благодарит за усилия, но я не вижу уместности (I «На самом деле, новичок») Я прохожу проб и ошибок, пока это не закончится, я думаю, что мой синтаксис почти прав ...(я могу вывести '{register: panmenu}') в обертку, поэтому мне просто нужно что-то сопоставить ... – webMan

ответ

1

Прежде всего: вы установили TMENU.IFSUB = 1? Else, все, что вы делаете в IFSUB, не будет иметь эффекта.

Теперь некоторые общие мысли:

а) Как правило, макеты Серверные используются для переключения всего шаблона страницы:

page.10 = FLUIDTEMPLATE 
page.10 { 
    file.stdWrap.cObject = CASE 
    file.stdWrap.cObject { 
    key.data = pagelayout 

    default = TEXT 
    default.value = {$myTemplatePath}/Standard.html 

    1 = TEXT 
    1.value = {$myTemplatePath}/Home.html 

    2 = TEXT 
    2.value = {$myTemplatePath}/Landing.html 

    } 
    layoutRootPath = {$myLayoutPath} 
    partialRootPath = {$myPartialPath} 
} 

Так что инициирующий внешний интерфейс рендеринга для всей страницы, где backend_layout с идентификаторами 1 будет использовать шаблон Home.html, backend_layout с uid 2 будет использовать шаблон Landing.html, а все остальные (= по умолчанию) будут использовать шаблон Standard.html.

Если вы строите свой сайт с помощью этого метода, я бы рекомендовал делать

# that's the original version of your menu 
lib.panmenu = HMENU 
lib.panmenu { 
// ... 
} 

# make a copy of the original 
lib.panmenu_variant < lib.panmenu 
# modify it as required 
lib.panmenu_variant.1.NO { 
    // ... 
} 

Теперь в ваших шаблонах страниц (которые вы вызываете отдельно через CASE сверху), вы можете использовать либо

<f:cObject typoscriptObjectPath="lib.panmenu" /> 

или

<f:cObject typoscriptObjectPath="lib.panmenu_variant" /> 

б) Но если вы не хотите, чтобы следовать т вы должны также использовать backend_layout CASE на любом cObject. Вариант CASE оказался для меня более надежным.

Вот как я бы попытаться получить СЛУЧАЙ работать (непроверенные!)

// suppose temp.navigation_main is your full menu 
temp.navigation_main_variant < temp.navigation_main 
temp.navigation_main_variant { 
    // modify the menu as you please 
    10.2 > 
    10.1.IFSUB.wrapItemAndSub = <li>|</li> 
} 

// use lib.nav in your page 
lib.nav = CASE 
lib.nav { 
    key.data = pagelayout 
    // normally, lib.nav is the full navigation 
    default < lib.navigation_main 
    // except if be layout 1 is selected 
    1 < lib.navigation_main_variant 
    } 
} 

с) Я пробовал TypoScript конструкции с LOAD_REGISTER и if s лет назад, и они всегда меня сойти с ума. Я бы не вкладывал в них слишком много энергии, поскольку они скорее кажутся прежними параметрами, чем будущим способом развития логики TYPO3.

+0

все правильно, но я знал это, проблема в том, что поведение меню можно правильно записать, только выбрав выбор be-layout, поскольку это опция ... Я видел случай if, который использовался много раз, возможно ли, что для этого нет правильного синтаксиса? – webMan

+0

Как будет реализован CASE? – webMan

+0

Вы проверили, установлен ли 'TMENU.IFSUB'? – Urs

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

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