TYPO3 将根页面标记为活动
TYPO3 mark root page as active
在我的 TYPO3 6.2.31(我知道...)页面中,我有以下用于导航的拼写错误:
NAVIMAIN = HMENU
NAVIMAIN.entryLevel = 0
#NAVIMAIN.excludeUidList =
NAVIMAIN {
1 = TMENU
1 {
expAll = 1
wrap = <ul class="sf-menu">|</ul>
noBlur = 1
NO = 1
NO.ATagTitle.field = title
NO.wrapItemAndSub = <li>|</li>
ACT = 1
ACT.wrapItemAndSub = <li class="active"> |</li>
}
2 = TMENU
2 {
expAll = 1
maxItems = 10
wrap = <div class="sf-mega">|</div>
NO = 1
NO {
ATagTitle.field = title
wrapItemAndSub = <div class="sf-mega-section">|</div>
stdWrap.wrap = |
ATagParams = class="headermega"
stdWrap.htmlSpecialChars = 1
doNotLinkIt = 0
}
}
3 = TMENU
3 {
expAll = 1
maxItems = 20
wrap = <ul>|</ul>
NO = 1
NO {
ATagTitle.field = title
linkWrap = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li>|</li>
ATagParams = class="active"
}
}
#4 < .3
}
所有子页面在被点击时都被标记为活动...但根节点不是...所以我也添加了这个:
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist = 1
[global]
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist = 60
[global]
但这也没有任何效果。
如何将根节点也标记为活动的?
提前致谢
如果您希望两个页面都处于活动状态,则需要执行另一个构造,因为按照您的方式,第二个分配将覆盖第一个分配。
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist := addToList(1)
[global]
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist := addToList(60)
[global]
一般来说你会加入这两个语句。
我会考虑的另一个更改:使用另一个条件,因为 TSFE 将在不久的将来过时:
[page:uid = 1]
NAVIMAIN.alwaysActivePIDlist = 1,60
[global]
经过一些 Teamviewer 调查,我们在 Typoscript 结构中找到了问题的根源。 [globalVar]
条件置于 page.20.marks {}
内,但条件必须置于任何嵌套之外。
将条件移出嵌套并更正路径,一切正常。
[globalVar = TSFE:id=1]
page.20.marks.NAVIMAIN.alwaysActivePIDlist = 60
[global]
正如 Bernd 所说,[page:uid = 1]
也是更好的条件。
在我的 TYPO3 6.2.31(我知道...)页面中,我有以下用于导航的拼写错误:
NAVIMAIN = HMENU
NAVIMAIN.entryLevel = 0
#NAVIMAIN.excludeUidList =
NAVIMAIN {
1 = TMENU
1 {
expAll = 1
wrap = <ul class="sf-menu">|</ul>
noBlur = 1
NO = 1
NO.ATagTitle.field = title
NO.wrapItemAndSub = <li>|</li>
ACT = 1
ACT.wrapItemAndSub = <li class="active"> |</li>
}
2 = TMENU
2 {
expAll = 1
maxItems = 10
wrap = <div class="sf-mega">|</div>
NO = 1
NO {
ATagTitle.field = title
wrapItemAndSub = <div class="sf-mega-section">|</div>
stdWrap.wrap = |
ATagParams = class="headermega"
stdWrap.htmlSpecialChars = 1
doNotLinkIt = 0
}
}
3 = TMENU
3 {
expAll = 1
maxItems = 20
wrap = <ul>|</ul>
NO = 1
NO {
ATagTitle.field = title
linkWrap = <li>|</li>
}
ACT = 1
ACT {
wrapItemAndSub = <li>|</li>
ATagParams = class="active"
}
}
#4 < .3
}
所有子页面在被点击时都被标记为活动...但根节点不是...所以我也添加了这个:
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist = 1
[global]
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist = 60
[global]
但这也没有任何效果。
如何将根节点也标记为活动的?
提前致谢
如果您希望两个页面都处于活动状态,则需要执行另一个构造,因为按照您的方式,第二个分配将覆盖第一个分配。
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist := addToList(1)
[global]
[globalVar = TSFE:id=1]
NAVIMAIN.alwaysActivePIDlist := addToList(60)
[global]
一般来说你会加入这两个语句。
我会考虑的另一个更改:使用另一个条件,因为 TSFE 将在不久的将来过时:
[page:uid = 1]
NAVIMAIN.alwaysActivePIDlist = 1,60
[global]
经过一些 Teamviewer 调查,我们在 Typoscript 结构中找到了问题的根源。 [globalVar]
条件置于 page.20.marks {}
内,但条件必须置于任何嵌套之外。
将条件移出嵌套并更正路径,一切正常。
[globalVar = TSFE:id=1]
page.20.marks.NAVIMAIN.alwaysActivePIDlist = 60
[global]
正如 Bernd 所说,[page:uid = 1]
也是更好的条件。