2016-10-05 2 views
1

Я использую шлюз биллинга PayPal для WHMCS и добавил пункт меню как ClientAreaPrimaryNavbar и ClientAreaSecondarySidebar, используя следующий в крюке файл:Добавления классов пункта пользовательского меню активного WHMCS

<?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' 
     )); 
    } 
}); 

мне нужно получите пункт меню «Биллинг» в ClientAreaPrimaryNavbar, чтобы иметь класс open, когда кто-то находится на странице paypalbilling.php, а также выделите дочерний элемент «Управление выпиской по PayPal» в разделе «Оплата» классом active. Затем мне нужно будет добавить пункт меню «Управление платежными средствами PayPal» в поле ClientAreaSecondarySidebar, чтобы он также был выделен классом active. Очевидно, мне нужно добавлять классы только тогда, когда это активная страница.

У меня есть ощущение, что это может быть связано с основной страницей paypalbilling.php, не определяющей панировочные сухари .. но не определенно. Этот обычай кодовая страница не является открытым исходным кодом, так что я не могу видеть его или изменить его :(

Я попытался с помощью setClass в этом крючке во всех по-разному, но не могу понять, условное для if(is current page = paypalbilling.php).

Любая помощь будет принята с благодарностью!

ответ

0

Я нашел как добавлять классы к меню подразделам, используя текущую страницу, по-прежнему не может добавить класс к главному меню ClientAreaPrimaryNavbar Billing.

I попробовал $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'); 
     } 

    } 

}); 
Смежные вопросы