Попытка получить вывод в A.tpl, но не получить никакого вывода. Я думаю, что я делаю что-то не так, чтобы вызвать функцию php в файле tpl.
{myModifier}
class Geolocation{
public function sm_loc($params, Smarty_Internal_Template $template)
{
return "100.70";
}
}
$smarty1 = new Smarty();
$smarty1->registerPlugin('modifier', 'myModifier', array('Geolocation', 'sm_loc'));
Я уже использовал этот код. И это не похоже на работу. Это также нарушает мой существующий рабочий код в A.tpl после этого использования.
Здесь мне нужно получить вывод из функции php в A.tpl из внешнего файла php.
Заранее спасибо. Извините за то, что нуб
Чтобы добавить этот модификатор в Smarty и использовать его в своем шаблоне, лучше всего использовать хук WHMCS.
Если вы создадите новый PHP-файл в каталоге ~ / includes / hooks / (вы можете назвать его как угодно — в данном случае, давайте использовать myhook.php), WHMCS автоматически вставит этот хук при каждом запросе.
Для этого вы захотите использовать ClientAreaPage крюк. Внутри вашего крючка, вы можете получить доступ к глобальному $smarty
переменная.
Пример:
function MySmartyModifierHook(array $vars) {
global $smarty;
// I recommend putting your Geolocation class in a separate PHP file,
// and using 'include()' here instead.
class Geolocation{
public function sm_loc($params, Smarty_Internal_Template $template) {
return "100.70";
}
}
// Register the Smarty plugin
$smarty->registerPlugin('modifier', 'myModifier', array('Geolocation', 'sm_loc'));
}
// Assign the hook
add_hook('ClientAreaPage', 1, 'MySmartyModifierHook');
Это должно делать свое дело. Если вы хотите исследовать с другими крючками, вы можете взглянуть на Индекс крючка в документации WHMCS.
Имена функций в каждом из ваших файлов ловушек должен быть уникальный.
В качестве примечания: если вы хотите запускать этот хук только на определенных страницах, вы можете проверить templatefile
введите пройденное $vars
массив. Например, скажем, вы хотели, чтобы этот хук запускался только на странице «Просмотр корзины» в форме заказа:
function MySmartyModifierHook(array $vars) {
global $smarty;
// If the current template is not 'viewcart', then return
if ($vars['templatefile'] != 'viewcart')
return;
// ... your code here ...
}
Также обратите внимание, что при использовании хуков, таких как хук ClientAreaPage, возвращение массива ключей и значений автоматически добавит их в качестве переменных Smarty. Так что если ваша функция ловушки закончилась return ['currentTime' => time()];
, вы могли бы затем использовать {$currentTime}
в вашем шаблоне Smarty вывести его значение.
Других решений пока нет …