我的Prestashop网站目前正在对AdminOrdersController.php进行覆盖,我已将其放在覆盖文件夹中 .
从下面提供的链接中,添加Carst过滤器是完全正常的,现在Prestashop 1.6中没有 . 我尝试过这个解决方案,它运行得很好 .
参考:Adding carrier filter in Orders page.
不幸的是,对于 生产环境 站点,我无法访问核心文件,因此无法实现 . 因此,我需要创建一个自定义模块 . 请注意,我已经为AdminOrdersController.php设置了覆盖 . 我想点击这个覆盖并插入过滤器 .
我设法创建了一个模块,并尝试在mymodule / override / controller / admin / AdminOrdersController.php中使用载波过滤器功能放置覆盖(使用URL中提供的代码) .
没有变化/影响,我感到困惑 . 我是否需要生成或复制任何.tpl文件?
非常感谢任何指导 .
谢谢 .
2 回答
虽然链接问题的答案工作得很好,但仅使用模块就可以实现同样的目标(不需要覆盖) .
管理控制器具有用于列表字段修改的挂钩 . 有两个具有相同名称,但它们的
params
数组中有不同的数据 .actionControllernameListingFieldsModifier在将过滤器应用于列表之前执行 .
actionControllernameListingFieldsModifier在从数据库中提取数据并执行列表之前执行 .
因此,您可以在模块文件中将字段添加到现有控制器列表定义中:
因为数组数据通过引用传递到
$params
数组,所以您可以在钩子中修改它们,并且更改会持久地返回到控制器 . 这将在列表末尾附加运营商列 .通过模块挂钩尝试解决问题是prestashop最佳实践,并且只有在没有办法用钩子做的时候才能解决问题,然后用覆盖来做 .
你删除了/cache/class_index.php吗?如果您希望覆盖生效,则必须执行此操作 . 如果它仍然不起作用,也许您可以使用AdminOrderControllers方法中调用的钩子处理新模块 .