将类添加到活动自定义菜单项WHMCS

时间:2016-10-05 03:21:13

标签: php menu hook whmcs

我正在为WHMCS使用PayPal结算网关,并使用钩子文件中的以下内容将菜单项添加到ClientAreaPrimaryNavbar和ClientAreaSecondarySidebar:

<?php 

use WHMCS\View\Menu\Item as MenuItem; 

add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar) { 
    if (!is_null($primaryNavbar->getChild('Billing'))) { 
        $primaryNavbar->getChild('Billing')->addChild('Manage PayPal Billing', array( 
            'label' => 'Manage PayPal Billing', 
            'uri' => 'paypalbilling.php', 
            'order' => '30' 
        )); 
    } 
}); 

add_hook('ClientAreaSecondarySidebar', 1, function (MenuItem $secondarySidebar) { 
    if (!is_null($secondarySidebar->getChild('Billing'))) { 
        $secondarySidebar->getChild('Billing')->addChild('Manage PayPal Billing', array( 
            'label' => 'Manage PayPal Billing', 
            'uri' => 'paypalbilling.php', 
            'order' => '30' 
        )); 
    } 
});

当有人在paypalbilling.php页面上时,我需要在ClientAreaPrimaryNavbar中获取“结算”菜单项以获得课程open,并突出显示“管理PayPal结算”子项目。 “与班级active一起开帐单。然后,我需要使用班级ClientAreaSecondarySidebar突出显示active中的“管理PayPal结算”菜单项。 显然,当这是活动页面时,我只需要添加类。

我有一种感觉可能与核心paypalbilling.php页面没有定义面包屑......但不确定。该自定义页面代码不是开源的,因此我无法看到或编辑它:(

我尝试以各种方式在此挂钩中使用setClass,但无法找出if( is current page = paypalbilling.php )的条件。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我已经找到了如何使用当前页面将类添加到子菜单,仍然无法将类添加到主ClientAreaPrimaryNavbar结算菜单。

我尝试了$primaryNavbar->getChild('Billing')->setClass('active');,但似乎没有效果。

以下是检查当前页面并使用“有效”类设置新菜单项的代码:

<?php

use WHMCS\View\Menu\Item as MenuItem;

add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar) {

    $filename = basename($_SERVER['REQUEST_URI'], ".php");
    $parseFile = explode('.', $filename);

    if (!is_null($primaryNavbar->getChild('Billing'))) {

        $primaryNavbar->getChild('Billing')->addChild('Manage PayPal Billing', array(
            'label' => 'Manage PayPal Billing',
            'uri' => 'paypalbilling.php',
            'order' => '30'
        ));

        if ($parseFile['0']=='paypalbilling'){
            $primaryNavbar->getChild('Billing')->setClass('active'); // THIS LINE DOES NOT WORK
            $primaryNavbar->getChild('Billing')->getChild('Manage PayPal Billing')->setClass('active');
        }

    }

});

add_hook('ClientAreaSecondarySidebar', 1, function (MenuItem $secondarySidebar) {

    $filename = basename($_SERVER['REQUEST_URI'], ".php");
    $parseFile = explode('.', $filename);

    if (!is_null($secondarySidebar->getChild('Billing'))) {

        $secondarySidebar->getChild('Billing')->addChild('Manage PayPal Billing', array(
            'label' => 'Manage PayPal Billing',
            'uri' => 'paypalbilling.php',
            'order' => '30'
        ));

        if ($parseFile['0']=='paypalbilling'){
            $secondarySidebar->getChild('Billing')->getChild('Manage PayPal Billing')->setClass('active');
        }

    }

});