如果内部UL没有值,则不显示外部div

时间:2011-08-09 07:35:21

标签: templates html typo3 typoscript

我有一个HTML模板,我使用automaketemplate创建了一个typo3模板。在这个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 :(得分:0)

对于任何面临同样问题的人:我做了一个作弊..实际上有两种方式。

首先,我简单地创建了外部wrap-div,并为其分配了所有其他代码,并且如果页面ID是我想要的那个,则在此代码中进行菜单构建。这很有效,但并不好。

第二种,可能更干净的方法是通过css ..只需将包装器的可见性设置为隐藏。比使用typo3为你的身体标签提供身体标签内的UID

# 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的页面上显示。