我在prestashop www.example.com下1.7.7.5,我想在BO订单列表中添加一列以显示运营商名称,我已成功添加带有hookActionOrderGridDefinitionModifier的列,但在ArdminOrdersController中添加运营商名称字段时遇到问题。
我测试了一个覆盖,但是没有成功,什么都没有改变,如果我直接修改/controllers/admin中的AdminOrdersController.php,我也尝试使用hookActionAdminOrdersListingFieldsModifier,但没有成功。
覆盖是此任务中的文件:Add carrier column to orders table in Prestashop back-office
我已尝试清除“性能”选项卡中的缓存,并清除var/cache中的dev和prod文件夹
字段修饰符的钩子:
public function hookActionAdminOrdersListingFieldsModifier($params)
{
if (isset($params['select'])) {
$params['select'] .= 'carr.name as `carriername`';
}
if (isset($params['join'])) {
$params['join'] .= 'LEFT JOIN `'._DB_PREFIX_.'order_carrier` oc ON (a.`id_order` = oc.`id_order`)
LEFT JOIN `'._DB_PREFIX_.'carrier` carr ON (oc.`id_carrier` = carr.`id_carrier`)';
}
$params['fields']['carriername'] = [
'title' => $this->trans('Carrier', array(), 'Admin.Global'),
'type' => 'text',
'align' => 'text-center',
'class' => 'fixed-width-xl',
'filter_key' => 'carrier!name',
'filter_type' => 'text',
'order_key' => 'carrier!name',
];
}
我添加载波列的钩子:
public function hookActionOrderGridDefinitionModifier(array $params)
{
/** @var GridDefinitionInterface $definition */
$definition = $params['definition'];
/** @var FilterCollection $filters */
$filters = $definition->getFilters();
/** @var ColumnCollection */
$columns = $definition->getColumns();
$columns
->addAfter('country_name',
(new DataColumn('carrier'))
->setName($this->trans('Carrier', array(), 'Admin.Global'))
->setOptions([
'field' => 'carriername',
])
);
}
2条答案
按热度按时间fhity93d1#
我直接更改了Prestashop 1.7.8.1源代码,因为钩子不工作,所以这是一个变通方案。
src/Core/Grid/Definition/Factory/OrderGridDefinitionFactory.php
src/Core/Grid/Query/OrderQueryBuilder.php
然后,转到您的管理员订单页面see
似乎需要稍后为载波添加滤波器功能。
好吧,希望以上能给你带来灵感,圣诞快乐。
ycl3bljg2#
差不多了.... -也许你应该改一下这部分:
通过以下方式:
在我的情况下(PrestaShop v. 1.7.6.9),我应用了额外的代码直接/脏在
/controllers/admin/AdminOrdersController.php
从行号102开始,如下所示:因此,我们在订单列表/ Presta管理订单列表中有承运人列: