如何在Odoo商城商品视图的商品名称下方添加内部参考编码?
Odoo商城商品列表嵌入内部参考编码实现方案
问题原因
你当前将内部参考编码的渲染代码写在了<t t-call="website_sale.products_item">调用节点的外层,所以编码只会显示在整个商品卡片的上方,无法嵌入商品描述区域的商品名称下方。
操作步骤
- 先删除当前代码中写在商品卡片调用外层的冗余代码:
<div style="float:left">Internal Ref. Number </div> <b t-field="product.default_code"/> - 选择以下任意一种方式将编码插入商品名称下方:
- 方式1:继承模板全局生效(适配所有Odoo版本)
通过自定义模块继承website_sale.products_item模板,用XPath定位商品名称节点后插入编码渲染代码,示例代码如下(适配Odoo15-17版本,低版本可根据实际模板结构调整XPath路径):
这种方式会在所有调用商品项组件的位置(商品主列表、推荐商品位、关联商品位等)统一显示内部编码。<template id="custom_show_default_code_in_shop_list" inherit_id="website_sale.products_item"> <xpath expr="//div[hasclass('o_wsale_product_information')]//a[@t-field='product.name']" position="after"> <div class="w-100 small mb-1"> <strong>Internal Ref. Number </strong> <span t-field="product.default_code"/> </div> </xpath> </template> - 方式2:插槽传值仅当前网格生效(适配Odoo15+版本)
如果只想在你当前开发的网格布局商品列表显示编码,不需要全局生效,可以直接在t-call调用时传入自定义插槽内容,修改后的完整td代码如下:<td t-att-colspan="td_product['x'] != 1 and td_product['x']" t-att-rowspan="td_product['y'] != 1 and td_product['y']" t-attf-class="oe_product" t-att-data-ribbon-id="td_product['ribbon'].id"> <div t-attf-class="o_wsale_product_grid_wrapper o_wsale_product_grid_wrapper_#{td_product['x']}_#{td_product['y']}"> <t t-call="website_sale.products_item"> <t t-set="product_image_big" t-value="td_product['x'] + td_product['y'] > 2"/> <t t-set="product_name_after" t-value="True"> <div class="w-100 small mb-1"> <b>Internal Ref. Number </b> <span t-field="product.default_code"/> </div> </t> </t> </div> </td>
- 方式1:继承模板全局生效(适配所有Odoo版本)
效果参考


注意事项
- 插入后可自行调整
class属性或者内联样式,修改文字大小、颜色、间距,匹配你站点的现有设计风格。 - 如果使用XPath方式定位失败,可以打开浏览器开发者工具查看商品名称节点的实际DOM结构,调整XPath匹配规则即可。
内容的提问来源于stack exchange,提问作者tmorgan497
相关产品推荐
相关产品推荐

