Не показывать внешний div, если внутренний UL не имеет значений

У меня есть шаблон HTML, из которого я сделал шаблон typo3, используя automaketemplate. В этом HTML у меня есть такая настройка div

 <div class="bigPostItWrap">1 
                <div class="postit">2
                    <div class="postit_tesa">3</div>
                    <div class="postItWrap">4
                        <ul class="menusmall">5
                            <li>* Team</li>6
                            <li>* something else</li>
                            <li>* Third point</li>
                        </ul>
                    </div>
                </div>
    </div>

UL должен содержать вторичную навигацию, отображаемую только в том случае, если выбран определенный первичный объект навигации. Поскольку он расположен где-то в другом месте на экране, я сделал его независимым меню, как это

postitMenu = HMENU
postitMenu {
  # show the submenue relative to this entry level (?)
  entryLevel = 1
  # the first level of the menu is a text menu
  1 = TMENU
  # wrap the whole menu with <ul class="menu"> | </ul>
  1.wrap = <ul class="menusmall"> | </ul>

  # enable the "no"rmal state
  1.NO = 1
  # for the normal state, wrap it in li
  1.NO.linkWrap = <li>* |</li>

  #enable active state
  1.ACT = 1
  #copy all properties from normal state to active state
  1.ACT < .NO
  # disable the link for the active menu-point
  1.ACT.doNotLinkIt = 1
  # wrap the active menulink in li with the class = "active"
  1.ACT.allWrap = <li class="active">* |</li>
}

Все это работает достаточно хорошо, и меню отображается только при правильном входе в главное меню. Но внешний div postit содержит фоновое изображение (как вы можете догадаться, это postIt), а postit_tesa показывает полоску липкой ленты поверх postit. Конечно, если я не покажу второстепенное меню, я также не хочу, чтобы рендеринг postIt и липкой ленты.

Поскольку я новичок в typoScript, я понятия не имею, как этого добиться. И я не знаю, как это сделать в Google, по крайней мере, я не нахожу никакого решения. Я подумал, что если я сделаю вокруг него bigPostItWrap, я могу сделать что-то вроде

if there is an li-element, 
render the subpart bigPostItWrap, 
else, don't render it

но я-я не могу отстать от ts-if, или делать что-то совершенно не так ... Любой намек приветствуется. Для профессионала это, наверное, смешно просто, но я не могу понять, и пытаюсь с позавчерашнего дня -.-

Спасибо!


person Nareille    schedule 09.08.2011    source источник


Ответы (1)


Для тех, кто сталкивается с той же проблемой: я сделал это с помощью читов .. на самом деле есть два пути.

Во-первых, я просто сделал внешний wrap-div и назначил ему весь другой код, а затем построил меню внутри этого кода, если идентификатор страницы был тем, который я хотел. Это сработало, но было неприятно.

Второй, возможно более чистый подход - через css. Просто установите видимость оболочки на скрытую. Затем сделайте опечатку 3, чтобы дать вашему тегу body UID внутри тега body

# generate a bodyTag with the current page UID
page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.field = uid
page.bodyTagCObject.wrap = <body id="pid-|">

В вашем css создайте новый селектор (при условии, что страница 3 - это та, на которой вы хотите, чтобы появилось меню)

#pid-3 .your-wrappers-name {
visibility: visible;
}

Вот и все. Div будет виден только на странице с UID 3.

person Nareille    schedule 11.08.2011