如何在WHMCS所有页面显示工单列表?

How to display ticket list in all pages of WHMCS?

我正在为 WHMCS 设计一个 bootstrap 主题,并在顶部导航(位于 header.tpl), 有一个 onClick 按钮,它显示一个浮动的 window 包含带有自定义滚动条的门票列表。

问题是:在“clientarea.php”和“supporttickets.php”页面中它工作正常,但是在其他页面,虽然显示了票数,但是没有显示票的列表视图

谢谢。代码:

{if $loggedin} {if in_array('tickets',$contactpermissions)}
                    <li class="xn-icon-button pull-right">
                        <a href="#"><span class="fa fa-comments"></span></a>
                        <div class="informer informer-danger"> {$clientsstats.numactivetickets}</div>
                        <div class="panel panel-primary animated zoomIn xn-drop-left xn-panel-dragging">
                            <div class="panel-heading">
                                <h3 class="panel-title" style="font-size: 13pt;"> {$LANG.supportticketsopentickets} <span class="fa fa-comments"></span></h3>                                
                                <div class="pull-left">
                                    <span class="label label-danger"> Tickets:  {$clientsstats.numactivetickets}</span>
                                </div>
                            </div>

                            <div class="panel-body list-group list-group-contacts scroll" style="height: 200px;">
{foreach from=$tickets item=ticket}                         
                                <a href="viewticket.php?tid={$ticket.tid}&amp;c={$ticket.c}" class="list-group-item">
                                    <div class="list-group-status status-online"></div>
                                    <img src="templates/{$template}/assets/images/users/dadparvar.jpg" class="pull-right" alt="Hamed Azimi"/>
                                    <span class="contacts-title">{$ticket.department}: <i>{$ticket.status}</i></span>
                                    <p>{if $ticket.unread}<strong>{/if}#{$ticket.tid} - {$ticket.subject}{if $ticket.unread}</strong>{/if}
                                    </p>
                                </a>
{foreachelse}
{$LANG.supportticketsnoneopen}
{/foreach}                                                          
                            </div> 

                            <div class="panel-footer text-center">
                                <a href="submitticket.php">{$LANG.opennewticket}</a> | <a href="supporttickets.php">Show all tickets</a>
                            </div>                            
                        </div>                        
                    </li>
{/if}{/if}

它们在上述页面上可用,因为 WHMCS 已经在为您加载它们。在门票不可用的页面中,使用 WHMCS API 函数将它们加载到与模板中使用的结构相同的变量中。

Get Tickets api function docs

{php}
$client_id = $this->get_template_vars('clientsdetails.id');
$results = localAPI('gettickets', array('clientid' => $client_id), 'admin');
if ($results['result'] == 'success') {
    $tickets = $results['tickets']['ticket'];
}
$this->assign('tickets', $tickets);
{/php}

在您要查看门票列表的 TPL 文件顶部添加此代码。

备注:

  • 代码还缺少一些需要的功能,比如票证访问权限和部门名称,可以查看WHMCSAPI或者直接查询数据库

  • 您可以使用 smarty include 将代码添加到一个文件中,只在需要时包含它。