TMEN3中的TYPO3不同布局,用于特殊UID(1个HMENU内2个TMENU)

时间:2014-08-19 09:52:11

标签: menu typo3 typoscript

我尝试在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 =&nbsp;|
}
}
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 =&nbsp;|
    }
}
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个?

这将解决我的问题,但我一无所获。

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。

我希望我能够清楚地解释清楚。

如果我给出了完全错误的答案,请告诉我..