【发布时间】:2023-03-04 04:34:02
【问题描述】:
我正在使用 WHMCS 8.x 并且 Smarty PHP 已经启用。
我希望用一些代码或钩子函数让专用ip或主机名显示在页面clientareainvoices.tpl(/clientarea.php?action=invoices) 列表。 我希望任何人都可以帮助我。 非常感谢。
我已经搜索了很多计划,但都没有工作。不知道能不能用 hook 来实现。
希望有天才能帮我解决这个问题。
图中这样的功能。
enter image description here 谢谢谢谢。
我尝试使用挂钩文件来执行此操作。并尝试使用左连接连接数据库表。像 : 文件是这样的:
select * from tblinvoices t1
left join tblinvoiceitems t2 on t1.id=t2.invoiceid
left join tblhosting t3 on t2.relid=t3.id
WHERE t3.dedicatedIP = value
然后我将它添加到钩子文件中。
<?php
if (!defined("WHMCS")) {
die("This file cannot be accessed directly");
}
use WHMCS\Database\Capsule as DB;
add_hook('ClientAreaPageInvoices', 1, function($vars) {
$invoices = DB::table('tblinvoices')->where('invoicenum', $vars['invoicenum'])->get();
$fieldId = 'invoicenum';
$csVals = [];
foreach ($invoices as $invoice) {
$fieldVal = '';
$data = DB::table('tblinvoices AS t1')
->leftJoin('tblinvoiceitems AS t2', 't1.invoicenum', '=', 't2.invoiceid')
->leftJoin('tblhosting AS t3', 't2.relid', '=', 't3.id')
->select('t3.domain')
->where('t1.invoicenum', $fieldId)->where('t3.domain', $invoice['invoicenum'])
->first();
if (!is_null($data)) {
$fieldVal = $data->value;
}
$csVals[$invoice['invoicenum']] = $fieldVal;
}
return ['domain' => $csVals];
});
但所有这些都不起作用。它显示了一个结果“数组”,希望任何人都可以帮助我。在此先感谢。
【问题讨论】:
-
我知道我应该创建一个挂钩来将变量传递给 .tpl 并调整表格代码以呈现它,但我只是不知道该怎么做。希望任何人都可以提供帮助。