Как я могу добавить строки в шаблон модуля дополнения администратора WHMCS {headoutput}?
Прежде всего, я новичок здесь, и мой английский не достаточно хорош, поэтому я сожалею об этом. Вот мой вопрос;
Я пытаюсь закодировать модуль расширения для WHMCS 5, и я хочу использовать модальные окна начальной загрузки на страницах моего дополнения. Я пытаюсь добавить строки CSS и JS на главной странице моего аддона. Я хочу поместить их в тег head с помощью кодирования, я не хочу менять файл шаблона и знаю, что это можно сделать, потому что модуль "Планировщик проектов WHMCS" делает это успешно. Я вижу это в исходных кодах страниц.
Когда я заглянул в файл header.tpl шаблона администратора, там было два кода smarty. {headoutput} и {headeroutput}. Они расположены как ниже;
<head>
{headoutput}
</head>
<body>
{headeroutput}
Я провел много исследований о том, как отправить мой код в {headoutput} с помощью моего файла.php модуля. Если кто-нибудь знает, как это сделать, пожалуйста, мне очень нужна помощь.
Ваша помощь очень ценится. С наилучшими пожеланиями, Caner
1 ответ
Я нашел решение для чтения большего количества документов в Документации WHMCS и некоторых других местах.
Прежде всего, как я узнал, после WHMCS 4 разработчики изменили некоторые правила, и умения WHMCS {headoutput} и {headeroutput} в шаблонах больше не могут напрямую редактироваться кодом. WHMCS использует хуки для добавления пользовательских кодов между специальными html-блоками. И вот решение о моей проблеме.
Док. Ссылка 1: http://docs.whmcs.com/Hooks
Док. Ссылка 2: http://docs.whmcs.com/Hooks:System
После того, как мы сделали необходимые вещи для создания модуля расширения, мы создаем новый файл в папке модуля с именем "hooks.php". WHMCS включает этот файл напрямую, без каких-либо заявлений о включении в наш модуль. В "hooks.php" нам нужно создать функцию ловушки, объясненную как в Doc. Ссылка 1 Ваша функция не обязательно должна иметь специальное имя, но разработчик WHMCS рекомендует вам использовать иерархию, например, начиная с "hook_", за которым следует имя файла, а затем конкретное действие или задача, которую выполняет ловушка. Например;
function hook_youraddonmodule_adminHeadBlock($vars) {
//Here is my custom code below
$headoutput = '<link href="../includes/jscript/css/bootstrap.min.css" rel="stylesheet">';
return $headoutput;
}
После того, как вы назвали функцию, вы должны ввести свой код между фигурными скобками, которые соответствуют вашим потребностям. Я поместил ссылку на файл начальной загрузки css, которую я хотел включить в заголовочные блоки всех страниц моего модуля. Мы объявили функцию подключения, а затем нам нужно подготовить ее для использования в предопределенных местах подключения WHMCS, как описано в Doc. Ссылка 2 Чтобы поместить код между головным блоком, мы должны использовать декларацию "AdminAreaHeadOutput". Вот код, который я использовал;
// Define Client Login Hook Call
add_hook("AdminAreaHeadOutput",1,"hook_youraddonmodule_adminHeadBlock");
Это определение означает, что мы добавили хук к выводу заголовка области администратора, и его приоритет - первый (1). На самом деле, я не знаю, почему нам нужен приоритет в отношении хуков, и я не проводил исследования по этому поводу, но если он это сделал, должно быть преимущество в этом:) Теперь все, что вам нужно, это сохранить файл хука и загрузить его в свой файл. сервер. Все сделано. Надеюсь, это поможет людям, которые ищут подобные хитрости.
Обновить:
Я осознал, что когда вы создаете ловушку и активируете ее с помощью своего модуля в своей административной области, она применяется ко всем страницам администратора, поэтому она может нарушать некоторые стандартные javascripts и стили whmcs. Если вы хотите, чтобы хук работал только для вашего собственного модуля, вы должны добавить код, подобный приведенному ниже, для предотвращения применения ваших собственных кодов на всех страницах административной области.
$moduleName = $_GET['module'];
if($moduleName == "yourmodulename"){
return $headoutput;
}
С Уважением,
Джанер.