Не показывать внешний div, если внутренний UL не имеет значений - PullRequest
0 голосов
/ 09 августа 2011

У меня есть шаблон 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 или сделать что-то не так .. Любая подсказка приветствуется. Это, вероятно, нелепо легко для профессионала, но я не могу понять это, и я пытаюсь со вчерашнего дня -.-

Спасибо!

1 Ответ

0 голосов
/ 11 августа 2011

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

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

Второй, возможно, более чистый подход - через css. Просто установите видимость оболочки скрытым.Чем заставить typo3 присвоить вашему тегу 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.

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