尝试在A.tpl中获取输出但没有获得任何输出。我想我在tpl文件中调用php函数做错了。
{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函数的输出。
先谢谢。对不起是菜鸟。
答案 0 :(得分:0)
要将此修饰符添加到Smarty并在模板中使用它,最好使用WHMCS钩子。
如果你在'〜/ includes / hooks /'目录下创建一个新的PHP文件(你可以命名它 - 在这种情况下,让我们使用'myhook.php'),WHMCS会自动在每个请求上注入这个钩子
为此,您将要使用ClientAreaPage挂钩。在钩子内,您可以访问全局<div ng-if="isEmpty(card)">Object Empty!</div>
$scope.isEmpty = function(obj){
return Object.keys(obj).length == 0;
}
变量。
示例:
$smarty
这应该可以解决问题。如果您想探索其他钩子,可以查看WHMCS文档中的Hook Index。
每个挂钩文件中的函数名称必须是唯一的。
作为旁注,如果您只想在特定页面上运行此挂钩,则可以检查传递的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');
数组中的templatefile
键。例如,假设您只希望此挂钩在订单上的“查看购物车”页面上运行:
$vars
另外,请注意,对于像'ClientAreaPage'钩子这样的钩子,返回一个键和值数组会自动将它们添加为Smarty变量。因此,如果您的钩子函数以function MySmartyModifierHook(array $vars) {
global $smarty;
// If the current template is not 'viewcart', then return
if ($vars['templatefile'] != 'viewcart')
return;
// ... your code here ...
}
结束,则可以在Smarty模板中使用return ['currentTime' => time()];
输出其值。