WHMCS 修改客户表

问题描述 投票:0回答:2

如何将自定义字段添加到管理门户中“查看/搜索客户端”下的表格中。

我看过很多 ClientArea 的示例,但没有看到 ADMIN Area 的示例。

对此的任何启发都会真正有帮助。

谢谢。

whmcs
2个回答
1
投票

您可以使用 Javascript + AJAX 来做到这一点:

1-编写脚本来监控当前页面是客户端页面。

2-然后为自定义字段添加列标题,

3- Ajax 脚本将向 php 文件发送请求(您也需要编写该文件)以获取自定义字段值并将其添加到客户端行。

最好的方法是为此编写插件模块,并使用 WHMCS 挂钩将脚本添加到页脚。


0
投票

将 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');
© www.soinside.com 2019 - 2024. All rights reserved.