打字稿HMENU:在2级导航中获取1级标题

时间:2018-07-05 13:25:51

标签: typo3 typoscript

我需要创建一个菜单,出于移动目的,在级别2的所有条目之前应添加级别1的标题。示例:我的结构如下:

  • 团队
    • 最大
    • Sepp
  • 项目
    • 项目1
    • 项目2

现在我希望我的导航看起来像这样:

class gamelog(threading.Thread):
def __init__(self, threadname):
    self.threadname = threadname
    thread = threadname + ": "
    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    host = 'localhost'                           
    port = 9999                                           
    serversocket.bind((host, port))                                  
    serversocket.listen(1)
    server_function = "Here you can track what you've achieved :) \r\n"
    print(server_function)                                        

    while True:
        clientsocket,addr = serversocket.accept()      
        def recieve():
                y = clientsocket.recv(1024)
                y = y.decode('ascii')
                print(thread + y)
                clientsocket.close()
        recieve()

thread1 = gamelog("Game 1")
thread2 = gamelog("Game 2")
thread1.start()
thread2.start()

因此,我需要在级别2中获得级别1的标题。如何访问字段:nav_title作为父元素?

我的打字稿看起来像这样:

<ul>
  <li>
    <a>Team</a>
    <div class="dropdown-menu">
      <ul>
        <li>Team</li>
        <li><a>Max</a></li>
        <li><a>Sepp</a></li>
      </ul>
    </div>
  </li>
  <li>
    <a>Projects</a>
    <div class="dropdown-menu">
      <ul>
        <li>Projects</li>
        <li><a>Project 1</a></li>
        <li><a>Project 2</a></li>
      </ul>
    </div>
  </li>
</ul>

我用LOAD_REGISTER尝试过,但这没用。有什么建议么?

1 个答案:

答案 0 :(得分:1)

您想要的是TYPO3菜单的默认行为。您只需要设置正确的包装即可。在其所属的地方进行包装:

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        expAll = 1
        wrap = <ul>|</ul>
        NO = 1
        NO {
            wrapItemAndSub = <li>|</li>
        }
    }
    // as you have no specific wrapping all levels can be generated the same:
    2 < .1
    3 < .2
}

如果要在每个级别上使用特定的包装,则可以在复制后对其进行调整(在此示例中,您可以看到包装的来源)

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        wrap = <ul class="level1">|</ul>
        NO = 1
        NO {
            wrapItemAndSub = <li class="lev1">|</li>
        }
    }
    2 < .1
    2 {
        wrap = <ul class="level2">|</ul>
        NO.wrapItemAndSub = <li class="lev2">|</li>
    }
    3 < .2
    3 {
        wrap = <ul class="level3">|</ul>
        NO.wrapItemAndSub = <li class="lev3">|</li>
    }
} 


编辑:问题明确后:
在菜单中使用LOADREGISTER会导致混乱,因为菜单项不是内联递归生成的。

如果要重复菜单项,则应就地生成菜单项。
因此,您需要分开干净的包装纸,并使用增强的soem菜单魔术。

temp.menu = HMENU
temp.menu {
    1 = TMENU
    1 {
        wrap = <ul class="level1">|</ul>
        NO = 1
        NO.wrapItemAndSub = <li>|</li>

        // only for menuitems which contains further pages:
        IFSUB < .NO
        IFSUB {
            // beginning the part of the submenu
            after.cObject = TEXT
            after.cObject {
                field = nav_title // title
                wrap = <div class="dropdown-menu"><ul><li>|</li>
            }
        }
    }
    2 < .1
    2 {
        // no beginning in wrap needed as it is done at level 1
        wrap = |</ul></div>
    }
}

更多级别需要进一步处理。例如:2.IFSUB >3.wrap = <ul>|</ul>

注意:如果要使用带有缩进的干净html,则需要在印刷文字中使用.noTrimWrap和多行值。