【问题标题】:TYPO3 hmenu disable one linkTYPO3 hmenu 禁用一个链接
【发布时间】:2016-04-04 14:39:34
【问题描述】:

我有 2 级菜单。所有链接都是可点击的,但我想禁用 1 个链接。此链接用于打开子菜单

         <li class="sub-link"><a href="#">link1</a>
            <ul id="sub-menu">
              <li><a href="#">sublink</a></li>
              <li><a href="#">sublink2</a></li>
            </ul> <!-- sub-menu -->
          </li>
          <li><a href="#">link2</a></li>
          <li><a href="#">link3</a></li>
          <li><a href="#">link4</a></li>
          <li><a href="#">link5</a></li>

我想禁用链接 1。我有这样的错字:

lib.menu.main  = HMENU
lib.menu.main {
    special = list
    special.value =  22,154,88
    alwaysActivePIDlist = 22
    1 = TMENU
    1.NO = 1          
    1.wrap = <ul>|</ul>
    1.NO.wrapItemAndSub = <li>|</li>
    1.IFSUB=1
    1.IFSUB.wrapItemAndSub = <li class="sub-link">|</li>
    2 < .1
    2.wrap = <ul id="sub-menu">|</ul>
    2.NO.wrapItemAndSub = <li>|</li>
}

我该如何决定这个问题?

【问题讨论】:

  • 您的意思是要禁用它?它应该只是打开子菜单而不是链接到页面?
  • 是的,如果你悬停链接,应该会显示子菜单,但如果你点击链接,则不需要操作。

标签: typo3 typoscript


【解决方案1】:

所以我有两种可能让你解决这个问题:

第一个是阅读 Typo3-Documentation 并查找“optionSplit”和“doNotLinkIt”-options。他们应该帮助您解决排版问题。

另一种是使用Javascript/JQuery来解决它。您可以选择(在上面的示例中)菜单的第一项,然后将链接替换为您想要的任何内容。

$(document).ready(function(){
    $('.menu a').first().attr('href', '#');
});

我让您对整个示例进行了修改: https://jsfiddle.net/bdrsssv7/


确保您没有在 HTML 模板中插入 Javascript,因为那时它在具有其他 html 模板的页面上不可用。 只需做一个 js 文件并通过这样的打字稿插入它:

page.includeJS.file1 = fileadmin/yourTemplateLocation/yourFile.js

我希望我提到的两个解决方案之一可以帮助你

【讨论】:

    【解决方案2】:

    从 Typoscript 的菜单中排除特定的 PID (18):

    lib.menu = HMENU
    lib.menu {
        special = rootline
        special.range = 2,0
        1 = TMENU
        1 {
            NO {
                allWrap = <li> | </li>
                doNotLinkIt.override = 1
                doNotLinkIt.override.if {
                    value = 18
                    equals.field = uid
                }
            }
        }
    }    
    

    或从菜单中排除多个特定的 PID (18,19,20)

    lib.menu.1.NO.doNotLinkIt.override.if {
        value = 18,19,20
        isInList.field = uid
    }
    

    【讨论】:

    • 比标记为答案的更好的解决方案。尽管所有三个提案最终都奏效了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    相关资源
    最近更新 更多