Typo3中的TMENU-从上方插入URL

问题描述 投票:1回答:1

我有一个TMENU,在该菜单中,我想将“级别1”中的URL插入“级别2”中的wrap项目中。

当前的TypoScript看起来像这样:

10 = HMENU
10 {
    1 = TMENU
    1 {
        expAll = 1

        NO = 1
        NO.allWrap = <li>|</li>
        NO.allWrap.insertData = 1
        NO.ATagTitle.field = abstract // description // title
    }

    2 = TMENU
    2 {
        expAll = 1
        stdWrap.wrap = <ul><li><a href="*****URL FROM LEVEL 1 SHOULD BE HERE*****"></a></li>|</ul>

        NO = 1
        NO.allWrap = <li>|</li>
        NO.allWrap.insertData = 1
        NO.ATagTitle.field = abstract // description // title
    }
}

有任何提示吗?感谢您的帮助!

menu typo3 typoscript
1个回答
3
投票

stdWrap属性以定义的顺序执行(如文档中所示),请参见https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/Functions/Stdwrap.html#prepend

知道在执行prepend之前可以执行wrap3来解决此难题。

page = PAGE
page.10 = HMENU
page.10 {
    1 = TMENU
    1 {
        expAll = 1
        NO = 1
        NO.allWrap = <li>|</li>
        NO.allWrap.insertData = 1
        NO.ATagTitle.field = abstract // description // title
    }

    2 = TMENU
    2 {
        expAll = 1
        stdWrap.prepend = TEXT
        stdWrap.prepend {
          # remove `value` if page title shall be used
          value = URL from Level 1
          # using <current-page>.pid value pointing to previous level
          typolink.parameter.field = pid
          wrap = <li>|</li>
        }
        # `wrap3` is executed after `prepend`
        stdWrap.wrap3 = <ul>|</ul>

        NO = 1
        NO.allWrap = <li>|</li>
        NO.allWrap.insertData = 1
        NO.ATagTitle.field = abstract // description // title
    }
}

在这样的页面树上

+- A
|  +- AA
|  +- AB
|
+- B
   +- BA
   +- BB

呈现的HTML结果看起来像这样

<li><a href="/ts/a" title="A">A</a></li>
<ul>
  <li><a href="/ts/a">URL from Level 1</a></li>
  <li><a href="/ts/a/aa" title="AA">AA</a></li>
  <li><a href="/ts/a/ab" title="AB">AB</a></li>
</ul>

<li><a href="/ts/b" title="B">B</a></li>
<ul>
  <li><a href="/ts/b">URL from Level 1</a></li>
  <li><a href="/ts/b/ba" title="BA">BA</a></li>
  <li><a href="/ts/b/bb" title="BB">BB</a></li>
</ul>

更新自定义渲染以替换静态value属性

代替使用属性stdWrap.prepend.value(如上面的示例所示),也可以使用其他cObject指令-在这种情况下,例如RECORDS(请参见https://docs.typo3.org/m/typo3/reference-typoscript/master/en-us/ContentObjects/Records/Index.html

下面的示例呈现父页面的字段nav_title(如果未将title定义为后备)。

page.10 {
    # ...
    2 {
        # ...
        stdWrap.prepend {
            # using `cObject` instead of `value`
            cObject = RECORDS
            cObject {
                tables = pages
                source.field = pid
                # rendering definition for retrieved record of table pages
                conf.pages = TEXT
                # `//` is used as fallback delimiter here, NOT as comment
                conf.pages.field = nav_title // title
            }
            # ...
© www.soinside.com 2019 - 2024. All rights reserved.