PrestaShop 1.7获取指定分类新品:修改控制器相关技术咨询
嘿,我来帮你搞定这个需求——让新品列表只展示指定分类下的商品对吧?你已经找对了PrestaShop 1.7里的核心控制器文件NewProductsController.php,接下来只需要给ProductSearchQuery对象添加分类过滤条件就行,具体操作如下:
完整修改方案
修改后的getProductSearchQuery方法
protected function getProductSearchQuery() { $query = new ProductSearchQuery(); // 保留原有新品类型和按添加时间倒序的逻辑 $query->setQueryType('new-products') ->setSortOrder(new SortOrder('product', 'date_add', 'desc')) // 添加指定分类过滤,替换数字为你的目标分类ID ->setIdCategory(12); // 这里的12是示例分类ID,换成你实际需要的ID return $query; }
关键细节说明
- 替换分类ID:你需要把
setIdCategory()里的数字换成实际的分类ID,这个ID可以在PrestaShop后台的「分类管理」里找到——编辑分类时,URL里的id_category参数就是分类ID。 - 多分类过滤:如果需要同时展示多个分类下的新品,可以改用
setIdCategories()方法,传入分类ID数组:->setIdCategories([12, 15, 20]); // 把这里的数组换成你要包含的分类ID集合
重要注意事项
- 清理缓存:修改完控制器代码后,一定要去PrestaShop后台的「高级参数→性能」页面清除缓存,否则可能看不到修改后的效果。
- 版本更新风险:直接修改核心控制器文件的话,后续PrestaShop版本更新可能会覆盖你的修改。如果需要长期维护,更推荐创建自定义模块,通过
actionProductSearchQueryBuilderModifier钩子来修改查询条件,这样更安全。
内容的提问来源于stack exchange,提问作者dkiller
相关产品推荐
相关产品推荐

