TYPO3确定菜单项的页面类型,并用它周围的自定义类包装div

时间:2017-09-24 14:53:35

标签: typo3 typoscript

我的目标是将不同的导航逻辑应用于不同的页面类型。例如,shortcut类型将是容器(FE中的下拉列表,快捷方式本身是虚拟链接),standard类型 - 包含您可以导航到的内容的页面。因此,当在FE导航用户选择页面时:

drop-down list appears
if (type of page in list == standard)
    can navigate to page in list;
else if (type of page in list == shortcut)
   GO TO drop-down list appears

我知道你可以这样做:

lib {
    main-nav = HMENU
    main-nav {
        1 = TMENU
        1 {
            expAll = 1
            NO = 1
            NO.wrapItemAndSub = <li>|</li>
            NO.stdWrap.cObject = CASE
            NO.stdWrap.cObject {
                key.field = doktype
                default = TEXT
                default {
                    field = title
                }
                # standard page type
                1 = TEXT
                1 {
                    field = title
                    wrap = <div>|</div>
                }....

因此,如果网页类型为div,您的网页标题将被standard包裹。

但是我需要做什么来包装整个菜单项而不是只包装标题?

2 个答案:

答案 0 :(得分:1)

如果它只是将div放在整个子菜单上,我猜你已经得到的东西应该应用于wrapItemAndSub而不是

lib {
    main-nav = HMENU
    main-nav {
        1 = TMENU
        1 {
            expAll = 1
            NO = 1
            NO.wrapItemAndSub.cObject = CASE
            NO.wrapItemAndSub.cObject {
                key.field = doktype
                default = TEXT
                default {
                    value = <li>|</li>
                }
                # standard page type
                1 = TEXT
                1 {
                    value = <li><div>|</div></li>
                }....

答案 1 :(得分:0)

我认为你需要结合HTML,CSS和javascript。

在typoscript中,您根据页面类型准备具有不同标记的HTML。然后你的javascript必须处理点击事件,如果是一个快捷方式页面,点击应该打开一个下拉菜单而不是去那个页面。 (添加eventhandler)

所以你需要给javascript一些东西来识别快捷方式页面 使用您提到的CASE对象,您可以使用所有必要信息构建适当的HTML(您可以使用数据属性)。

要获得更详细的帮助,您需要更具体地了解您想要实现的目标。