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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值