如何将自定义字段添加到管理门户中“查看/搜索客户端”下的表格中。
我看过很多 ClientArea 的示例,但没有看到 ADMIN Area 的示例。
对此的任何启发都会真正有帮助。
谢谢。
您可以使用 Javascript + AJAX 来做到这一点:
1-编写脚本来监控当前页面是客户端页面。
2-然后为自定义字段添加列标题,
3- Ajax 脚本将向 php 文件发送请求(您也需要编写该文件)以获取自定义字段值并将其添加到客户端行。
最好的方法是为此编写插件模块,并使用 WHMCS 挂钩将脚本添加到页脚。
将 javascript 添加到页脚以添加列。
以下是向表中添加任意自定义字段的工作示例。将代码复制并粘贴到自定义 Addon 的 hooks.php 文件中,然后进行编辑以满足您的需求。
function add_custom_column_clients_list($vars)
{
// Only run this hook on the clients.php page
if ($vars['filename'] !== 'clients')
{
return;
}
// EDIT THESE!
$columnHeader = 'Your Custom Field';
$customFieldId = 123;
// Fetch all clients
$clients = localAPI('GetClients', ['limitnum' => 999]);
// Create an array to store client ids and their custom field values
$customFieldValues = [];
// Fetch the custom field value for each client
foreach ($clients['clients']['client'] as $client)
{
$customFieldValue = Capsule::table('tblcustomfieldsvalues')
->where('fieldid', $customFieldId)
->where('relid', $client['id'])
->value('value');
$customFieldValues[$client['id']] = $customFieldValue;
}
$customFieldValuesJSON = json_encode($customFieldValues);
$output = '<script>
document.addEventListener("DOMContentLoaded", function(event) {
var table = document.getElementById("sortabletbl0");
var headerRow = table.rows[0];
var headerCell = document.createElement("TH");
headerCell.innerHTML = "' . $columnHeader . '";
headerRow.appendChild(headerCell);
var customFieldValues = ' . $customFieldValuesJSON . ';
for (var i = 1, row; row = table.rows[i]; i++) {
var userId = row.cells[1].innerText;
var cell = row.insertCell(-1);
cell.innerHTML = customFieldValues[userId] ?? "";
}
});
</script>';
return $output;
}
add_hook('AdminAreaFooterOutput', 1, 'add_custom_column_clients_list');