Prestashop 1.7.6.9 订单邮件与后台订单页展示商品默认分类名咨询
PrestaShop 1.7.6.9 商品默认分类名称展示实现方案
功能1:邮件模板展示已购商品默认分类名称
需要修改2类文件:
邮件变量逻辑文件
文件路径:src/Core/MailTemplate/ContentVariable/Order/OrderProductLazyArray.php
- 首先在文件顶部引入依赖类:
use Category; use Product;
- 在类中新增获取默认分类名称的方法:
/** * Get product default category name * @return string */ public function getDefaultCategoryName() { $productId = $this->product->id; $langId = $this->order->id_lang; $defaultCategoryId = Product::getDefaultCategory($productId); $category = new Category($defaultCategoryId, $langId); return $category->name ?? ''; }
邮件模板文件
找到你使用的主题下对应语言的邮件模板,以订单确认邮件为例:
- html版路径:
themes/你的当前主题/mails/对应语言编码/order_conf.html - 纯文本版路径:
themes/你的当前主题/mails/对应语言编码/order_conf.txt
在商品列表循环的对应位置,插入变量{order_product.default_category_name}即可展示对应商品的默认分类名称,其他需要展示该字段的邮件模板可按同样逻辑修改。
功能2:后台订单详情页已购商品区添加默认分类名称
需要修改2类文件:
商品数据呈现逻辑文件
文件路径:src/Adapter/Order/OrderDetail/OrderDetailProductPresenter.php
- 先在文件顶部引入依赖类:
use Category; use Product; use Context;
- 找到
present方法,在返回数组前新增分类名称获取逻辑,最终返回的数组中加入对应字段:
// 获取当前商品默认分类名称 $defaultCategoryId = Product::getDefaultCategory($product['id_product']); $category = new Category($defaultCategoryId, Context::getContext()->language->id); // 在原有返回数组中新增字段 return [ // 保留原有所有字段不变,新增以下行 'default_category_name' => $category->name ?? '', ];
后台视图模板文件
文件路径:src/PrestaShopBundle/Resources/views/Admin/Sell/Order/Order/Blocks/View/product.html.twig
找到展示商品名称和参考编号的代码区域,插入分类名称展示代码即可,示例:
{# 在原有reference展示代码下方新增 #} <br> <span class="small text-secondary">{{ product.default_category_name }}</span>
注意事项
所有修改操作前请先备份对应文件,直接修改核心文件在后续PrestaShop系统升级时会被覆盖,建议通过自定义模块重写对应逻辑的方式实现,避免修改丢失。
修改完成后需进入后台「高级参数>性能」清除缓存,修改的内容才会生效。
内容的提问来源于stack exchange,提问作者GiuMa
相关产品推荐
相关产品推荐

