如果你刚升级了 WHMCS 6 ,你会发现导航条菜单连产品分类都没有。
如果你是做 WHMCS 模板开发的,你会发现 WHMCS 6 的主菜单已经不能直接在模板修改了。

那如何修改 WHMCS 6 导航条菜单(主菜单)呢?
查阅了官方文档,发现 WHMCS 使用 Hooks 来修改导航条。

那么 WHMCS Hooks 是什么呢?又如何使用呢?
下面以 WHMCS Hooks 修改 WHMCS 导航条按钮为例做一个简单说明:
1、在WHMCS根目录的 /includes/hooks/ 目录新建一个 Hooks.php 文件(注意文件编码一定是 utf-8 );
2、将下面的代码粘贴到 Hooks.php 文件,增加一个显示 “Menu Name” 指向“https://www.example.com/”的按钮:

<?php
#adding Menu Item to primaryNavbar
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$primaryNavbar->addChild('Menu Name')->setUri('https://www.example.com/')->setOrder(70);
});

其中:
1、addChild(‘Menu Name’) 中的 Menu Name 是按钮名字,也是按钮显示的文字
2、setUri(‘https://www.example.com/’) 中的 https://www.example.com/ 是按钮指向的链接
3、setOrder(70) 中的 70 表示按钮排序,数字越小排序越靠前。

菜单操作示例代码:
1、修改按钮文字:

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$navItem = $primaryNavbar->getChild('Support');if (is_null($navItem)) {return;} $navItem = $navItem->getChild('Announcements');if (is_null($navItem)) {return;} $navItem->setLabel('Custom Title Here');
});

2、修改按钮的链接指向:

<?phpuse WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$navItem = $primaryNavbar->getChild('Support');if (is_null($navItem)) {return;} $navItem = $navItem->getChild('Announcements');if (is_null($navItem)) {return;} $navItem->setUri('https://www.example.com/3rdpartyblogsystem');
});

3、设置按钮的排序:

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$navItem = $primaryNavbar->getChild('Support');if (is_null($navItem)) {return;} $navItem = $navItem->getChild('Announcements');if (is_null($navItem)) {return;} $navItem->setOrder(1);
});

也可以用下面的代码重新排序:

// 按钮排名往前一位
$primaryNavbar->getChild('Support')->getChild('Announcements')->moveUp();
// 按钮排名往后一位
$primaryNavbar->getChild('Support')->getChild('Announcements')->moveDown();
// 按钮移动到最前面
$primaryNavbar->getChild('Support')->getChild('Announcements')->moveToFront();
// 按钮移动到最后面
$primaryNavbar->getChild('Support')->getChild('Announcements')->moveToBack();

4、增加一个按钮

<?php
#adding Menu Item to primaryNavbar
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$primaryNavbar->addChild('Menu Name')->setUri('https://www.example.com/')->setOrder(70);
});

4.1、增加一个子菜单

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{if (!is_null($primaryNavbar->getChild('Support'))) {$primaryNavbar->getChild('Support')->addChild('Emergency Contacts', array('label' => 'Emergency Contacts','uri' => 'emergency.php','order' => '100',));}
});

4.2、使用翻译文件显示按钮

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{if (!is_null($primaryNavbar->getChild('Support'))) {$primaryNavbar->getChild('Support')->addChild('Emergency Contacts', array('label' => Lang::trans('emergencyContacts'),'uri' => 'emergency.php','order' => '100',));}
});

4.3、根据登陆状态显示按钮

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$client = Menu::context('client'); // 客户没有登陆时显示if (is_null($client)) {$primaryNavbar->addChild('Example')->setUri('https://www.example.com/')->setOrder(100);}
});

5、删除一个菜单

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{if (!is_null($primaryNavbar->getChild('Network Status'))) {$primaryNavbar->removeChild('Network Status');}
});

5.1删除一个子菜单

<?php
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{if (!is_null($primaryNavbar->getChild('Support'))) {$primaryNavbar->getChild('Support')->removeChild('Announcements');}
});

提示:你可以把多个操作合并在同一起,避免重复代码。
例如:

<?php
#adding Menu Item to primaryNavbar
use WHMCS\View\Menu\Item as MenuItem;
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{$primaryNavbar->addChild('按钮1')->setUri('链接1')->setOrder(70);$$primaryNavbar->addChild('按钮2')->setUri('链接2')->setOrder(80);
});

原文链接:http://hosttry.com/2015/11/14/whmcseditareamenu/

WHMCS 6 如何修改导航条菜单(主菜单)相关推荐

  1. 帝国cms 主导航条下拉菜单功能实现,模板功能扩展

    主导航条下拉菜单样式: 具体应用请查看我的个人网站:无知人生 实现步骤 1.在公共模板变量>页面头部模板中使用以下标签来加载菜单项 [listshowclass]'0',13,0,0[/list ...

  2. 如何修改WSS站点的主菜单

    如何修改WSS站点的主菜单? FP2003可以很方便的添加.修改.删除链接.但为了将页面调整的更加符合需求,有的时候我们需要移动主菜单的位置.显示样式.或者全新建立一个菜单,这种情况下,修改页面模板是 ...

  3. css修改导航条样式

    css修改导航条样式 近期由于工作需要要修改table表格导航条样式. 本人特整理出相关代码,以及最后效果,供各位小伙伴参考. 具体代码如下: .xp-table-content ::-webkit- ...

  4. html导航栏字体颜色怎么换,在WordPress的默认主题TwentyTen中修改导航条的颜色

    安装了WordPress后一直使用自带的TwentyTen主题,感觉比较简洁,但是用得太久难免有些审美疲劳,于是决定换一个,懒得去网上再找了,耗时费力,又不一定有何意的,于是就决定修改TwentyTe ...

  5. uni-app动态修改导航条的标题

    由于这个微信小程序表单页面是用于创建和编辑的,所以导航条的标题不能是一样的,但是在路由配置里面只能设置一个.所以需要在页面中进行修改,在这里用到了uni-app给我们的uni.setNavigatio ...

  6. 民航票务管理系统-C语言--录入,查询,订票,退票,修改航班信息以及主菜单和子菜单。

    概述: 我的课程设计题目为民航票务管理系统,其目的是为了便利人们购买飞机票的过程为广大人民群众提供便利,本系统主要为订票者提供订票服务以及相关的信息服务.同时增加了我对于程序设计的理解以及对于 C 语 ...

  7. 10款菜单导航代码_jquery 导航菜单_js 导航菜单_二级导航条下拉菜单(一)

    jQuery左侧下拉导航菜单后台框架模板 js侧边隐藏菜单收缩特效 黑色的左侧导航管理面板ui特效 企业官网tab下拉菜单特效 Facebook自定义多级导航菜单查询 jQuery圆形转盘多级菜单代码 ...

  8. Bootstrap导航条鼠标悬停下拉菜单

    Bootstrap导航条鼠标悬停下拉菜单 Bootstrap的导航条下拉菜单为了适应移动设备没有鼠标hover的状态,都是点击弹出下拉菜单,为了适应一般网站使用,我稍作了一些修改,鼠标hover时就弹 ...

  9. 鼠标点击出现下拉菜单html,Bootstrap导航条可点击和鼠标悬停显示下拉菜单

    使用Bootstrap导航条组件时,如果你的导航条带有下拉菜单,那么这个带下拉菜单的导航在点击时只会浮出下拉菜单,它本身的href属性会失效,也就是失去了超链接功能,这并不是我想要的,我希望导航条的链 ...

最新文章

  1. 2022-2028年中国电子陶瓷行业深度调研及投资前景预测报告
  2. Android性能优化典范第二季
  3. ural(Timus) 1463. Happiness to People!
  4. (chap5 web服务器) 数据转发之“网关和隧道”
  5. (转) OpenLayers3基础教程——OL3 介绍control
  6. 前端工程师有哪些面试技巧值得掌握?
  7. OpenCV与图像处理学习十二——图像形状特征之HOG特征
  8. Zookeeper UI管理界面安装
  9. 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率
  10. 110页PPT|集成供应链管理解决方案(附PDF下载)
  11. 系统集成项目管理工程师计算题(期望值)
  12. IAP之boot实现
  13. tq210 开发板 刷linux,TQ210开发板嵌入式笔记.pdf
  14. PTA 【java】7-2 将数组中的数逆序存放 (20 分)
  15. ros语音识别:pocketsphinx_continuous工作正常而gst-pocketsphinx不能识别相同语音的问题。
  16. 升级主板和CPU后OpenGL初始化失败问题的解决
  17. 推荐给初学者:如何学好C语言?
  18. Chrome,谷歌浏览器已经不会自动更新了,但是会有更新提示,关闭更新提示,window10系统,本人亲自操作过,不坑人
  19. Tita OKR:目标地图的妙用
  20. 静态成员和非静态成员的区别

热门文章

  1. webpack 合并压缩_极客起源 - geekori.com - 问题详情 - webpack如何打包压缩jquery 插件?...
  2. 推荐全网最好的开源压缩软件,没有之一!
  3. 利用深度学习进行交通灯识别_通过深度学习识别交通信号灯
  4. 接住喽????,送你个装逼的技能: JDK动态代理
  5. ssm mysql过程抛错_下列关于 SSM 框架的整合说法错误的是 。 ( ) B : 。 C : 。 D : 。_学小易找答案...
  6. 工业控制系统所面临的安全威胁
  7. SQL Server 中获取字符串拼音的标量函数实现
  8. 入门3dsmax游戏建模你需要掌握的基础规范
  9. 四大关键词 解读08年韩国游戏企业
  10. OrientDB Python连接操作