0

我一直在尝试将更多数据附加到 OTRS 票证(最新版本)。而且我已经成功地获取了票证数据中的信息,但是,我不知道如何在视图中访问它。大多数数据似乎是通过 $QData/$Data 解析的,但是,当我打印我的变量时,我得到的只是 16/12。

    %CustomerCompanyName = $Self->{CustomerCompanyObject}->CustomerCompanyGet( CustomerID => $Ticket{CustomerID} ); 

    #} 
    $Ticket{CustomerCompanyName} = \%CustomerCompanyName;

我想在 dtl AgentDashboardTicketGeneric.dtl中访问它,但是 $Data{"CustomerCompanyName"} 是空的。我已经设法得到散列或 16/12。同样,在变量 $Ticket 中,我们已经设法转储变量并查看数据实际上在那里(实际上无法访问它,我们无法确定它是哪种数据类型,并尝试了所有可能的方法能想到)。

编辑:我想通了。它与 Johannes 解决方案一起使用,但是,SysConfig 中列的值必须是 2,而不是 1。

4

1 回答 1

3

您可以通过用户界面访问所有工单数据。在每个小部件的右上角,您可以访问设置并删除、添加、排序列。

如果您需要未绑定到工单数据的客户公司数据,则需要修改/扩展给定模块(Kernel::Output::HTML::DashboardTicketGeneric)。这就是 $Data{"CustomerCompanyName"} 为空的原因,因为那里没有加载客户公司的东西。

恕我直言,您不需要修改 dtl。在 sysconfig 中添加新列:

HTTP://OTRSHOST/otrs/index.pl?Action=AdminSysConfig;Subaction=Edit;SysConfigSubGroup=Frontend%3A%3AAgent%3A%3ADashboard;SysConfigGroup=Ticket 将新列“CompanyName”添加到每个小部件 DefaultColumns。 系统配置

(提示:在这里您也可以使用 DynamicField_XXX 添加 DynamicFields)

然后修改 DashboardTicketGeneric.pm 中的代码

第一:添加模块(L:21左右)

use Kernel::System::CustomerCompany;

之后启动模块(在 L: 44 附近的 CustomerUserObject 之后)

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);

然后将逻辑添加到模块中(在 L: 1414 附近 - 在客户名称块之后:

            elsif ( $Column eq 'CompanyName' ) {

                # get customer company name
                my %CompanyData;
                if ( $Ticket{CustomerID} ) {
                    %CompanyData = $Self->{CustomerCompanyObject}->CustomerCompanyGet(
                        CustomerID => $Ticket{CustomerID},
                    );
                }
                $DataValue = $CompanyData{CustomerCompanyName};
            }

在此处输入图像描述

然后删除缓存(..bin/otrs.DeleteCache.pl),因为小部件使用缓存并且您的更改不会足够快地应用;)

将该列添加到您的小部件(小部件的右上角 -> 设置),您应该没问题。 在此处输入图像描述 在此处输入图像描述

更新:将“新模块”放在自定义文件夹中

Custom/Kernel/Output/HTML/DashboardTicketGeneric.pm

问候

约翰内斯

于 2014-08-11T08:27:52.130 回答