爲此修改添加到Smarty的,並在您的模板中使用它,你最好使用WHMCS掛鉤。
如果你在'〜/ includes/hooks /'目錄下創建一個新的PHP文件(你可以任意命名 - 在這種情況下,我們使用'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文檔中的Hook Index。
在每個鉤子文件的函數名稱必須是唯一的。請注意,如果您只想在特定頁面上運行此鉤子,則可以檢查傳入的$vars
陣列中的templatefile
密鑰。例如,假設你只想要這個鉤子在訂購單上的「查看購物車」頁面上運行:
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()];
結尾,你可以在你的Smarty模板中使用{$currentTime}
來輸出它的值。