OpenCart 3自定义产品标签无法前端展示,求OCMOD实现方案
OpenCart 3 实现自定义产品标签前端展示(OCMOD 方案)
假设你新增的产品数据库字段名为 product_tag,以下是完整的OCMOD修改代码,可直接保存为.xml文件后在后台扩展管理中上传启用:
<?xml version="1.0" encoding="utf-8"?> <modification> <name>Custom Product Tag Display</name> <version>1.0</version> <author>Custom</author> <code>custom_product_tag</code> <!-- 1. 修改产品模型,查询时带出自定义字段 --> <file path="catalog/model/catalog/product.php"> <operation> <search><![CDATA[SELECT p.product_id, p.price, p.special, p.image, p.date_added]]></search> <add position="replace"><![CDATA[SELECT p.product_id, p.price, p.special, p.image, p.date_added, p.product_tag]]></add> </operation> <!-- 补充适配单个产品查询场景 --> <operation> <search><![CDATA[SELECT p.product_id, p.price, p.special, p.image]]></search> <add position="replace"><![CDATA[SELECT p.product_id, p.price, p.special, p.image, p.product_tag]]></add> </operation> </file> <!-- 2. 给Featured模块控制器传递字段数据到模板 --> <file path="catalog/controller/extension/module/featured.php"> <operation> <search><![CDATA['price' => $price,]]></search> <add position="after"><![CDATA['product_tag' => $product_info['product_tag'],]]></add> </operation> </file> <!-- 3. 给Bestsellers模块控制器传递字段数据到模板 --> <file path="catalog/controller/extension/module/bestseller.php"> <operation> <search><![CDATA['price' => $price,]]></search> <add position="after"><![CDATA['product_tag' => $product_info['product_tag'],]]></add> </operation> </file> <!-- 4. 给Latest模块控制器传递字段数据到模板 --> <file path="catalog/controller/extension/module/latest.php"> <operation> <search><![CDATA['price' => $price,]]></search> <add position="after"><![CDATA['product_tag' => $product_info['product_tag'],]]></add> </operation> </file> <!-- 5. 在Featured模块模板中显示自定义标签 --> <file path="catalog/view/theme/*/template/extension/module/featured.twig"> <operation> <!-- 可根据需求调整标签显示位置,示例放在产品名称下方 --> <search><![CDATA[<h4><a href="{{ product.href }}">{{ product.name }}</a></h4>]]></search> <add position="after"><![CDATA[{% if product.product_tag %}<div class="product-tag">{{ product.product_tag }}</div>{% endif %}]]></add> </operation> </file> <!-- 6. 在Bestsellers模块模板中显示自定义标签 --> <file path="catalog/view/theme/*/template/extension/module/bestseller.twig"> <operation> <search><![CDATA[<h4><a href="{{ product.href }}">{{ product.name }}</a></h4>]]></search> <add position="after"><![CDATA[{% if product.product_tag %}<div class="product-tag">{{ product.product_tag }}</div>{% endif %}]]></add> </operation> </file> <!-- 7. 在Latest模块模板中显示自定义标签 --> <file path="catalog/view/theme/*/template/extension/module/latest.twig"> <operation> <search><![CDATA[<h4><a href="{{ product.href }}">{{ product.name }}</a></h4>]]></search> <add position="after"><![CDATA[{% if product.product_tag %}<div class="product-tag">{{ product.product_tag }}</div>{% endif %}]]></add> </operation> </file> </modification>
关键注意事项:
- 将代码中的
product_tag替换为你实际新增的数据库字段名 - 模板路径中的
*匹配所有主题,若仅需修改特定主题,将*替换为目标主题文件夹名称 - 可根据前端样式需求,调整模板中标签的HTML结构和CSS类名
- 启用OCMOD后,需在后台清除系统缓存(路径:系统 > 设置 > 编辑商店 > 服务器 > 清除缓存)
内容的提问来源于stack exchange,提问作者André Mattos
相关产品推荐
相关产品推荐

