WHMCS и изменение домашней ссылки с переменной

Привет и спасибо, что прочитали мой пост.

У меня установлен WHMCS с мультибрендом ad-don, что означает, что у меня есть несколько брендов на WHMCS с одной установкой. URL-адрес всегда http://billing.branddomain.com/. Все они имеют основной статический веб-сайт по адресу http://www.branddomain.com/.

Я хочу, чтобы кнопка «Домой» указывала на статический веб-сайт, но проблема в том, что я не могу поместить статический URL-адрес в код, так как он отличается для каждого бренда. Поэтому с PHP я удаляю URL-адрес из адресной строки, удаляя «биллинг» и заменяя его «www». Я пытаюсь изменить URL-адрес домашней ссылки в главном меню WHMCS на это место. Это делается путем создания файла PHP в каталоге whmcs/includes/hooks.

<?php
$aedit_just_domain = preg_replace("/^(.*\.)?([^.]*\..*)$/", "$2", $_SERVER['HTTP_HOST']);
$aedit_homepageurl = "http://www.". $aedit_just_domain ."/";

use WHMCS\View\Menu\Item as MenuItem;

add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{
   $redirect = $aedit_homepageurl;
   if (!is_null($primaryNavbar->getChild('Home'))) {
           $primaryNavbar->getChild('Home')
                       ->setURI($redirect);
   }
});

Это не работает, так как по какой-то причине я не могу поместить туда переменную. Когда я делаю:

<?php
use WHMCS\View\Menu\Item as MenuItem;

add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{
   $redirect = 'http://www.google.com/';
   if (!is_null($primaryNavbar->getChild('Home'))) {
           $primaryNavbar->getChild('Home')
                       ->setURI($redirect);
   }
});

Это работает, но теперь работает со статическим URL-адресом www.google.com. Очевидно, мне нужно, чтобы это была переменная, как в случае с $aedit_homepageurl.

Есть ли кто-нибудь, кто может помочь мне с этим.


person ManouHH    schedule 09.10.2017    source источник


Ответы (1)


$aedit_homepageurl по умолчанию недоступен внутри функции. У вас есть 2 варианта:

1- Вы можете использовать ключевое слово global для доступа к переменной $aedit_homepageurl:

<?php
$aedit_just_domain = preg_replace("/^(.*\.)?([^.]*\..*)$/", "$2", $_SERVER['HTTP_HOST']);
$aedit_homepageurl = "http://www.". $aedit_just_domain ."/";

use WHMCS\View\Menu\Item as MenuItem;

add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{
   global $aedit_homepageurl;
   $redirect = $aedit_homepageurl;
   if (!is_null($primaryNavbar->getChild('Home'))) {
           $primaryNavbar->getChild('Home')
                       ->setURI($redirect);
   }
});

2- Переместите верхние 2 строки внутри функции:

<?php
add_hook('ClientAreaPrimaryNavbar', 1, function (MenuItem $primaryNavbar)
{
   $aedit_just_domain = preg_replace("/^(.*\.)?([^.]*\..*)$/", "$2", $_SERVER['HTTP_HOST']);
   $aedit_homepageurl = "http://www.". $aedit_just_domain ."/";

   $redirect = $aedit_homepageurl;
   if (!is_null($primaryNavbar->getChild('Home'))) {
           $primaryNavbar->getChild('Home')
                       ->setURI($redirect);
   }
});
person wesamly    schedule 10.10.2017
comment
Большое спасибо. У меня получилось со 2-м вариантом. Не могу поверить, что я сам не думал об этом. Я уже провел 20 часов ломая голову. Вы спасли меня от еще 20 часов головоломок. - person ManouHH; 11.10.2017