WHMCS二次开发要点

时间:2020-07-15

主要是做插件开发,钩子用的比较多。

源代码加密了。

参考插件示例:https://github.com/WHMCS/sample-addon-module

这边主要是钩子的使用要注意。

比如注册页面想要添加自定义变量显示在模板里

https://developers.whmcs.com/hooks-reference/client-area-interface/#clientareapageregister

/**
 * 给页面添加变量
 * @param $vars
 * @return array
 */
function hook_template_variables_check($vars)
{
    $extraTemplateVariables = array();
    $open_invite = false;
    $pdo = Capsule::connection()->getPdo();
    $sql = 'select id from tbladdonmodules where `module`="promote" limit 1';
    foreach ($pdo->query($sql) as $row) {
        $open_invite = true;
    }
    $extraTemplateVariables['open_invite'] = $open_invite;
    return $extraTemplateVariables;
}

add_hook('ClientAreaPageRegister', 1, 'hook_template_variables_check');

promote 是插件名。

上面那个方法就是在注册页面判断插件 promote 是否开启。

模板使用的技术是smarty,所以会smarty很有帮助。

下面简单列举几个钩子监听的钩子名称。

ClientAreaRegister

当用户提交注册成功后,生成用户的id会执传到此钩子的方法里,在这个钩子里也可以接收自己定义的表单值。

ClientAreaPrimaryNavbar

用户区域上面的导航栏显示。如果要在用户中心添加导航栏链接,需要用到此钩子名。

ShoppingCartCheckoutCompletePage

购物车结账成功后执行。

AfterShoppingCartCheckout

未登录用户购买产品后会执行此钩子。

ClientAreaPageRegister

给用户注册页面传递自定义变量。

ShoppingCartCheckoutOutput

未登录用户结账页面,可以通过session给页面传递参数。

钩子大全:https://github.com/WHMCS/developer-docs/blob/master/hooks/hook-index.md