WHMCS 6 如何修改导航条菜单(主菜单)

来源:互联网 发布:源码大师官网 编辑:程序博客网 时间:2024/05/18 12:36

如果你刚升级了 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 primaryNavbaruse 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、修改按钮的链接指向:

<?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->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 primaryNavbaruse 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、删除一个菜单

<?phpuse 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 primaryNavbaruse 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/

1 0
原创粉丝点击