You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Prestashop 1.7.6.9 订单邮件与后台订单页展示商品默认分类名咨询

PrestaShop 1.7.6.9 商品默认分类名称展示实现方案

功能1:邮件模板展示已购商品默认分类名称

需要修改2类文件:

  1. 邮件变量逻辑文件

文件路径: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 ?? '';
}
  1. 邮件模板文件

找到你使用的主题下对应语言的邮件模板,以订单确认邮件为例:

  • html版路径:themes/你的当前主题/mails/对应语言编码/order_conf.html
  • 纯文本版路径:themes/你的当前主题/mails/对应语言编码/order_conf.txt
    在商品列表循环的对应位置,插入变量 {order_product.default_category_name} 即可展示对应商品的默认分类名称,其他需要展示该字段的邮件模板可按同样逻辑修改。

功能2:后台订单详情页已购商品区添加默认分类名称

需要修改2类文件:

  1. 商品数据呈现逻辑文件

文件路径: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 ?? '',
];
  1. 后台视图模板文件

文件路径: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 19:24:08