代码之家  ›  专栏  ›  技术社区  ›  Enthu

Prestashop 1.6创建模块以显示载波滤波器

  •  1
  • Enthu  · 技术社区  · 7 年前

    参考: Adding carrier filter in Orders page.

    不幸的是,对于生产站点,我并没有访问核心文件的权限,也无法实现。因此,我需要创建一个自定义模块。请注意,我已经为AdminOrdersController设置了覆盖。php。我想点击这个覆盖并插入过滤器。

    我已经设法创建了一个模块,并尝试在mymodule/override/controller/admin/AdminOrdersController中放置一个覆盖(使用URL中提供的代码)。具有载波滤波器功能的php。

    没有变化/影响,我感到困惑。我需要生成或复制任何。tpl文件?

    非常感谢您的指导。

    非常感谢。

    2 回复  |  直到 7 年前
        1
  •  2
  •   TheDrot    7 年前

    虽然链接问题中的答案很好,但同样的事情可以通过单独的模块实现(不需要覆盖)。

    管理员控制器有一个钩子用于修改列表字段。有两个名称相同,但它们的数据不同 params 大堆

    actionControllernameListingFieldsModifier

    actionControllernameListingFieldsModifier 在从数据库中提取数据并呈现列表之前执行。

    因此,您可以在模块文件中向现有控制器列表定义添加如下字段:

    public function hookActionAdminOrdersListingFieldsModifier($params) {
        if (isset($params['select'])) {
            $params['select'] .= ', cr.name';
            $params['join'] .= ' LEFT JOIN `'._DB_PREFIX_.'carrier` cr ON (cr.`id_carrier` = a.`id_carrier`)';
        }
        $params['fields']['carrier'] = array(
            'title' => $this->l('Carrier'),
            'align' => 'text-center',
            'filter_key' => 'cr!name'
        );
    }
    

    $params 通过引用数组,您可以在钩子中修改它们,并将更改保留回控制器。这将在列表的末尾附加载波列。

        2
  •  0
  •   Pauloscorps    7 年前

    是否删除了/cache/class_索引。php?如果你想让覆盖生效,你必须这么做。