Drupal 系列四:如何禁用主菜单上有子菜单目录的链接

            这个问题折腾了两天,不过最后还是搞定了。比如:大家常用的TB Mega Menu,但有子菜单的链接必须定义!可是有时候是不需要,怎么办?

内容来自: http://blog.mreald.com  

怎么改?

很简单:把 a标签内容改为:href="#" οnclick="return false"


在哪儿改?

第一次尝试:感觉直接改数据库,找到Menu表,把链接字段给改了,或者删除,但结果是,要么不显示,要么生成新的链接。----失败!

第二次尝试:改主题。既然所有的结果输出都经过主题,那么在主题拦截,做出更改,肯定可以!结果:不可以,不论你怎么改,都还是原来的链接 -------失败!

第三次尝试:可以根据 css 的class 定位用JS修改,但只能改href的值,不能增加onclick....(可能js玩的不熟)

第四次尝试:内容的输出可能不是网站主题,而是TB mega menu 模块的主题输出。 找数组输出的地方,改内容,一个晚上尝试,没结果  ----失败!

第五次尝试:定位在模块!读TB Mega menu的源代码,看其逻辑关系--->内容输出--->包装。最后终于发现:在一个tpl.php里面做内容的包装。结果:改html与php结合的代码,为php代码,就OK!


更多好处:

            如果在导航栏增加外网的链接,就可以增加 _blank 属性,在新网页打开了!


原代码:

 

<a href="<?php print in_array($item['link']['href'], array('<nolink>')) ? "#" : url($item['link']['href']);?>" class="<?php print implode(" ", $a_classes);?>">


改为:

 

<?php

 if($submenu && $block_config['auto-arrow']) {
echo '<a href="#" onclick="return false"   class="dropdown-toggle">';
 }else{
$href=in_array($item['link']['href'], array('<nolink>')) ? "#" : url($item['link']['href']);
$addclass=implode(" ", $a_classes);
if($href == "http://blog.mreald.com/index.php")
{
echo '<a href="'.$href.'"  class="'.$addclass.'" target="_blank">';
}else{
echo '<a href="'.$href.'"  class="'.$addclass.'">';
}
 }

?>


转载于:https://my.oschina.net/u/1381569/blog/372146

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值