Код Internal API в вашем примере выглядит так, как будто он должен работать. Временное включение ошибок PHP может помочь сузить точную причину этой проблемы ( Настройка> Общие параметры> Прочее> Ошибки отображения ), хотя я полагаю, что это связано с тем, как вы инициализируете среду WHMCS в своем PHP файл.
WHMCS предоставляет конкретные рекомендации по созданию пользовательских страниц, что, по-видимому, является тем, что вы пытались сделать в представленном примере. Пользовательские PHP-файлы должны находиться в корневом каталоге WHMCS, однако require('../init.php');
указывает, что ваш скрипт в данный момент находится в подкаталоге. Вы также не должны требовать api.php, так как он уже обрабатывается init.php. Перемещение вашего скрипта в корневой каталог WHMCS и закомментирование строки require('../includes/api.php');
должно помочь решить проблему с пустой страницей.
Обратите внимание: приведенный вами пример не отображает обычный клиентский интерфейс WHMCS и не проверяет, вошел ли пользователь в систему. Если это функциональность, которая вам также понадобится, вы можете создайте страницу с тем же интерфейсом и функциональностью, что и у собственной страницы клиентской области WHMCS. Ниже приведена слегка измененная версия примера кода, который WHMCS предоставляет в своем руководстве для создания страниц клиентской области :
<?php
// Define WHMCS namespaces
use WHMCS\ClientArea;
use WHMCS\Database\Capsule;
// Initialize WHMCS client area
define('CLIENTAREA', true);
require __DIR__ . '/init.php';
$ca = new ClientArea();
$ca->setPageTitle('Your Page Title Goes Here');
$ca->addToBreadCrumb('index.php', Lang::trans('globalsystemname'));
$ca->addToBreadCrumb('mypage.php', 'Your Custom Page Name');
$ca->initPage();
// Uncomment to require a login to access this page
//$ca->requireLogin();
// Uncomment to assign variables to the template system
//$ca->assign('variablename', $value);
// Code to run when the current user IS logged in
if ($ca->isLoggedIn()) {
$clientName = Capsule::table('tblclients')->where('id', '=', $ca->getUserID())->pluck('firstname');
$ca->assign('clientname', $clientName);
// Code to run when the current user is NOT logged in
} else {
$ca->assign('clientname', 'Random User');
}
// Setup the primary and secondary sidebars
Menu::addContext();
Menu::primarySidebar('announcementList');
Menu::secondarySidebar('announcementList');
// Define the template filename to be used (without the .tpl extension)
$ca->setTemplate('mypage');
// Display the contents of the page (generated by the Smarty template)
$ca->output();