我必须在我的自定义模块中修改Odoo模块的xpath。在下面的V11的website_sale模块的以下代码中考虑(为简单起见,我减少了代码):
<template id="recommended_products" inherit_id="website_sale.product" customize_show="True" name="Alternative Products">
<xpath expr="//div[@id='product_full_description']" position="after">
<div class="container mt32" t-if="product.alternative_product_ids">
<h3>Alternative Products:</h3>
</div>
</xpath>
</template>
例如,我要替换
1)position =“ after”到position =“ before”
OR
2)expr =“ // div [@ id ='product_full_description']”到expr =“ // div [@ id ='product_small_description']”
我该怎么做?
答案 0 :(得分:0)
尝试这样
<template id="recommended_products" inherit_id="website_sale.product" customize_show="True" name="Alternative Products">
<!-- this will replace the existing place of the div -->
<xpath expr="//div[@id='product_full_description']" position="replace">
</xpath>
<!-- this will be the new place of the div. Instead of after you use before -->
<xpath expr="//div[@id='product_full_description']" position="before">
<div class="container mt32" t-if="product.alternative_product_ids">
<h3>Alternative Products:</h3>
</div>
</xpath>
</template>
答案 1 :(得分:0)
在这里,我将解释一个非常罕见的(未记录)且有用的Odoo XML视图继承,以便能够在不覆盖记录视图数据的情况下替换整个视图。
例如,如果您要覆盖(不好的做法)视图website_sale.product
的内容,则可以执行此操作(使用与另一条记录相同的记录xml ID)
<!-- Not Recommended for almost every case -->
<template id="website_sale.product" name="Product">
...
<!-- Reorganize the original view as needed -->
...
</template>
这会丢失原始代码带来的不便,并且当卸载引入更改的模块时,由于更改将保留在原始记录视图中并导致某些错误,因此可能会失败。
建议的方式(罕见且未记录)正在使用这种继承:
<template id="recommended_products_ext" inherit_id="website_sale.recommended_products">
<xpath expr="." position="replace">
<t name="Alternative Products" t-name="website_sale.recommended_products">
...
<!-- Reorganize the original view as needed -->
...
</t>
</xpath>
</template>
此格式允许引入按扩展名覆盖的原始视图,而无需手动修改继承视图的原始代码。实际上,格式:<t name"" t-name=""></t>
是Odoo在数据库中存储qweb模板的方式,我从中受益匪浅,它使我可以引入整个视图覆盖,同时又可以很好地处理同一个视图的其他继承。
请记住,这是一个可能需要模块依赖提供帮助的工具,并且在其他视图继承可以轮流使用之前,允许视图优先级尽快采取行动以注入更改。
我发现这个问题是分享此解决方案的好地方。但是请随时评估是否适合您的情况
*更新* 要点示例:
https://gist.github.com/aek/d8a3588e1f8c63f96be242f4d6d75b09