Whmcs 7.x 使用钩子实现客户余额显示
目前使用whmcs7.0,由于客户充值量较大,用户前台无法显示用户余额。是个很麻烦的问题;
在whmcs 摸索了下,发现 whmcs 6.x 往后版本加入了菜单/边栏的钩子
这样的话,我们修改起边栏变得简单很多,再也不用动用到 javascript 或者修改模板就能实现某些功能了
我们可以使用这个 ClientAreaSecondarySidebar 钩子做到很多事情。
然后因为 whmcs 7.0 最新自带的 Six 主题的客户余额提醒非常不好找,而且还要点击一下才能看到具体数值。
我们就可以先那这个来开刀。
首先我们要到 include/hooks 这个文件夹创建一个新的 php 文件。名字随意,然后输入以下内容
<?phpuse whmCS\View\Menu\Item as MenuItem;if (App::getCurrentFilename() == 'clientarea' && $_SESSION['uid']) { add_hook('ClientAreaPrimarySidebar', 10, function(MenuItem $primarySidebar) { $client = getClientsDetails(); if($client) { $newMenu = $primarySidebar->addChild( 'account-info', array( 'name' => 'Home', 'label' => '账户详情', 'order' => 10, 'icon' => 'fa-balance-scale', ) ); $newMenu->addChild( 'account_balance', array( 'name' => 'account_balance', 'label' => "当前余额: ".formatCurrency($client['credit']), 'order' => 0, ) ); } });}
系统内部的执行顺序流程:
当执行到菜单/边栏初始化时,执行我们所加入的钩子。
判断当前用户是不是登录
在主边栏后加入一个<
账户详情
>模块<
账户详情
>在模块内加入<当前余额>子菜单待全部初始化完毕后,模板系统输出,显示界面
最后的结果,如下图
这样就不用大费周章的到处找余额在哪里啦~~
最后一点,必须要加上判断用户是否已经登录,否则你就会发现几分钟后整个系统都会慢起来。