我尝试在TYPO3中设置一个具有固定布局和样式的菜单。但是有一个UID,我必须设置其他样式和其他包装。
我尝试使用override fpr allWrap,这很好用。但是wrap.override不起作用:(
由于我在菜单中有三个级别,我想使用levelUID:1来检查实际上必须呈现哪个menupoint。但是如何在菜单中访问LEVELUID:1?
也许有更好的/其他解决方案?目前,我将这两个菜单分成两个独立的脚本。这不可能是因为它无法在菜单中进行定位。
普通菜单:
lib.field_mainnav = HMENU
lib.field_mainnav {
entryLevel = 0
excludeUidList = {$featureMenuUid}
wrap = <ul class="sf-menu fixed" id="menu">|
1 = TMENU
1 {
expAll = 1
NO.stdWrap.wrap = <span> | </span>
NO.linkWrap = <li>|</li>
IFSUB = 1
IFSUB.allWrap = <li class="dropdown">|<ul>
IFSUB.stdWrap.wrap = <span> | </span>
ACTIFSUB = 1
ACTIFSUB.allWrap = <li class="current dropdown">|<ul>
ACTIFSUB.stdWrap.wrap = <span> | </span>
ACT = 1
ACT.allWrap = <li class="current">|<ul>
ACT.stdWrap.wrap = <span> | </span>
}
2 = TMENU
2 {
expAll = 1
wrap = |</ul></li>
NO.linkWrap = <li>|</li>
IFSUB = 1
IFSUB.allWrap = <li class="dropdown">|<ul>
}
3 = TMENU
3 < .2
4 = TMENU
4 < .2
}
具有UID 155(及其所有子页面)的网站的特殊菜单
lib.field_featurenav = HMENU
lib.field_featurenav {
wrap=|</div></ul>
special = directory
special.value = {$featureMenuUid}
1 = TMENU
1 {
expAll = 1
NO.stdWrap.wrap = <span> | </span>
NO.linkWrap = <li>|</li>
IFSUB = 1
IFSUB.allWrap = <li>| <div class="sf-mega">
IFSUB.stdWrap.wrap = <span> | </span>
ACTIFSUB = 1
ACTIFSUB.allWrap = <li>| <div class="sf-mega">
ACTIFSUB.stdWrap.wrap = <span> | </span>
ACT = 1
ACT.allWrap = <li>| <div class="sf-mega">
ACT.stdWrap.wrap = <span> | </span>
}
2 = TMENU
2 {
expAll = 1
wrap = <div class="sf-mega-section"><ul>|</li>
NO.linkWrap = <li>a|e</li>
IFSUB = 1
IFSUB.allWrap = <li>|
IFSUB.stdWrap.cObject = COA
IFSUB.stdWrap.cObject {
10 = TEXT
10.field = tx_pricons_pr_icons
10.wrap = <!!=|></i>
20 = TEXT
20.field = title
20.wrap = |
}
}
3 = TMENU
3 {
expAll = 1
wrap = <li>|</li></ul></div><div class="sf-mega-section"><ul>
NO.linkWrap = <li>|</li>
NO.stdWrap.cObject = COA
NO.stdWrap.cObject {
10 = TEXT
10.field = tx_pricons_pr_icons
10.wrap = <!!=|></i>
20 = TEXT
20.field = title
20.wrap = |
}
}
4 = TMENU
4 < .2
}
编辑:我想我应该这样做:
NO{
linkWrap = <li>|</li>
if{
value.data = leveluid : 1
IsInList = {$featureMenuUid}
stdWrap.Wrap = do another kind of wrap|to this element
}
}
我如何证明leveluid:1。如果匹配featureMenuId,则执行覆盖。
是否有可能获得Leveluid:实际的{field:uid}中的1个?
这将解决我的问题,但我一无所获。
答案 0 :(得分:1)
也许在uid上使用带有密钥的case对象?
像这样:
lib.nav = HMENU
lib.nav {
entryLevel = 0
1 = TMENU
1 {
expAll = 1
NO = 1
NO.stdWrap.wrap = <span class="foo bar">|</span>
NO.stdWrap.override.cObject = CASE
NO.stdWrap.override.cObject {
key.field = uid
18 = TEXT
18 {
field = title
wrap = <span class="special">|</span>
}
}
}
}
回答你的意见:
也许cou可以检查页面的当前根线级别?
像这样:
key.cObject = TEXT
key.cObject {
data = level
}
使用data = level,您将获得页面的当前级别。
http://docs.typo3.org/typo3cms/TyposcriptReference/DataTypes/Gettext/Index.html#level
编辑回答我的评论:( 8月28日19:35)
NO {
wrapItemAndSub = <li>|</li>
wrapItemAndSub.override = <li class="otherWrap">|</li>
wrapItemAndSub.override.if {
value = {$featureMenuUid}
equals.field = uid
}
}
你应该知道的是那个
wrapItemAndSub
来自stdWrap类型。
和
linkWrap
不是来自stdWrap类型。所以你不能在那里使用任何stdWrap属性。那是因为我使用了wrapItemAndSub。
我希望我能够清楚地解释清楚。
如果我给出了完全错误的答案,请告诉我..