Typo3 打字稿菜单跳转到子页面

Typo3 打字稿菜单跳转到子页面,typo3,typoscript,Typo3,Typoscript,我想创建一个带有子菜单的菜单,它可以通过打字脚本直接显示出来。挑战在于,如果包含页面的内容为空,我希望父级直接链接到第一个子页面 我知道你可以通过后端的快捷链接来实现这一点,但如果可能的话,我想通过打字脚本来实现 有什么想法吗?我将当前使用的打字脚本菜单代码嵌入其中 lib.mainMenu = COA lib.mainMenu{ 10 = HMENU 10{ # Level 1, further levels are generic 1 = TMENU

我想创建一个带有子菜单的菜单,它可以通过打字脚本直接显示出来。挑战在于,如果包含页面的内容为空,我希望父级直接链接到第一个子页面

我知道你可以通过后端的快捷链接来实现这一点,但如果可能的话,我想通过打字脚本来实现

有什么想法吗?我将当前使用的打字脚本菜单代码嵌入其中

lib.mainMenu = COA
lib.mainMenu{
10 = HMENU
10{
        # Level 1, further levels are generic
        1 = TMENU
        1.noBlur = 1
        1.expAll = 0
        1.wrap = <ul data-role="listview" data-inset="true">|</ul>
        1.NO = 1
        1.NO.ATagBeforeWrap = 1
        1.NO.insertData = 1
        1.NO.wrapItemAndSub.insertData = 1
        1.NO.wrapItemAndSub = <li id="menu_{field:uid}">|</li>
        1.NO.ATagTitle.field = subtitle // title

        1.ACT = 1
        1.ACT.ATagBeforeWrap = 1
        1.ACT.wrapItemAndSub.insertData = 1
        1.ACT.wrapItemAndSub = <li id="menu_{field:uid}" class="active">|</li>
        1.ACT.ATagTitle.field = subtitle // title

        1.CUR = 1
        1.CUR.ATagBeforeWrap = 1
        1.CUR.wrapItemAndSub.insertData = 1
        1.CUR.wrapItemAndSub = <li id="menu_{field:uid}" class="active">|</li> 
        1.CUR.ATagTitle.field = subtitle // title

}
20 < .10
20.entryLevel = 1
20.1.wrap = <ul data-role="listview" data-inset="true">|</ul>
30 < .20
30.entryLevel = 2
40 < .20
40.entryLevel = 3
}
lib.main菜单=COA
lib.main菜单{
10=汉努
10{
#级别1,其他级别为通用级别
1=t菜单
1.noBlur=1
1.expAll=0
1.wrap=
    1.NO=1 1.NO.ATagBeforeWrap=1 1.NO.insertData=1 1.NO.wrapItemAndSub.insertData=1 1.NO.wrapItemAndSub=
  • |
  • 1.NO.ATagTitle.field=副标题//标题 1.ACT=1 1.ACT.ATagBeforeWrap=1 1.ACT.wrapItemAndSub.insertData=1 1.ACT.wrapItemAndSub=
  • |
  • 1.ACT.ATagTitle.field=副标题//标题 1.CUR=1 1.CUR.ATagBeforeWrap=1 1.CUR.wrapItemAndSub.insertData=1 1.CUR.wrapItemAndSub=
  • 1.CUR.ATagTitle.field=副标题//标题 } 20 < .10 20.entryLevel=1 20.1.wrap=
      |
    30 < .20 30.entryLevel=2 40 < .20 40.entryLevel=3 }
    也许您可以根据以下提示构建解决方案:

    在上面链接的示例中,它不是一个菜单,而是一个表上的子查询(在您的例子中是tt_内容),然后将使用该子查询定义某个内容是否输出:

    temp.main = COA
    temp.main.20 = COA
    temp.main.20 {
      [...]
      wrap=&lt;div class="meine-adressen"&gt;|&lt;/div&gt;
      stdWrap.if.isTrue.cObject = CONTENT
      stdWrap.if.isTrue.cObject{
        table = tt_address
        select {
          [...]
        }
      renderObj = TEXT
      renderObj.value = 1
      }
    }
    
    temp.main.21 = TEXT
    temp.main.21 {
      wrap=&lt;div class="keine-adressen"&gt;|&lt;/div&gt;
      value = Keine Adressen gefunden
      stdWrap.if.isFalse.cObject < temp.main.20.stdWrap.if.isTrue.cObject
    }
    
    temp.main=COA
    主温度20=COA
    主温度20{
    [...]
    wrap=div class=“meine adressen”|/div
    stdWrap.if.isTrue.cObject=CONTENT
    stdWrap.if.isTrue.cObject{
    表=tt\U地址
    挑选{
    [...]
    }
    renderObj=文本
    renderObj.value=1
    }
    }
    temp.main.21=文本
    主温度21{
    wrap=div class=“keine adressen”|/div
    值=Keine Adressen gefunden
    stdWrap.if.isFalse.cObject

    但是我不确定这是否会让你在一张纸上头疼,我认为使用打字稿是可能的,但我不知道怎么做。 以下打字稿可能会帮助您:

    键入脚本以查找页面中内容元素的数量:

    lib.emptypage = CONTENT
    lib.emptypage{
        table = tt_content
        select{
          selectFields = count(uid) AS count
          pid = id
        }
        renderObj = COA
        renderObj {
          10 = TEXT
          10 {
            value = {field:count}
            insertData = 1
          }
        }
        wrap = |
    }
    
    如果count等于零,则该页为空

    要获取第一个子页面,请键入脚本:

    lib.firstsubpage= HMENU
    lib.firstsubpage {
        maxItems = 1
        1 = TMENU
        1 {
            NO = 1
        }
    }
    

    请在实现后共享您的打字稿解决方案。

    我们做了一些变通方法,很抱歉花了这么长时间来解决这个问题,谢谢。