I am trying to change the image of a product on main shop(website_sale module) view, by my own module and inheritance. I will try to explain my logic, so my code will be more understandable.
First of all, I have inherited the product.product to get access to the variables in the webiste_sale module.
Then I made some xpaths to the html code, where those img src attributes are present, I was relying on this result html code:
---
<a class="d-block h-100" itemprop="url" href="/shop/product/a4tech-bloody-v8m-2">
<span data-oe-model="product.template" data-oe-id="2" data-oe-field="image_1920" data-oe-type="image" data-oe-expression="product.image_1920" class="d-flex h-100 justify-content-center align-items-center"><img src="/web/image/product.template/2/image_256/A4Tech Bloody V8M?unique=9ffc5e8" class="img img-fluid" alt="A4Tech Bloody V8M"/></span>
</a>
---
And so, here is my templates.xml code:
---
<odoo>
<data>
<template id="website_sales_inh" name="webiste_sales_inherit" inherit_id="website_sale.products_item">
<xpath expr="//span[hasclass('d-flex')]" position="inside">
<xpath expr="//@data-oe-id='1'" position="inside">
<field name="src1">product.product.image_256</field>
</xpath>
<xpath expr="//@data-oe-id='2'" position="inside">
<field name="src2">product.product.image_256</field>
</xpath>
<xpath expr="//@data-oe-id='3'" position="inside">
<field name="src3">product.product.image_256</field>
</xpath>
</xpath>
</template>
</data>
</odoo>
---
I selected the three individual image_256 from the products(I have 3 products in shop)
And finally by doing some searching through webiste_sale module, I have confirmed that, varriable name is image_256 inside a product.product. Here are the search results:
---
root@linux-desktop:/usr/lib/python3/dist-packages/odoo/addons/website_sale$ grep -rnw . -e "image_256"
./tests/test_website_sale_image.py:182: image = Image.open(io.BytesIO(base64.b64decode(template.image_256)))
./tests/test_website_sale_image.py:185: image = Image.open(io.BytesIO(base64.b64decode(product_red.image_256)))
./tests/test_website_sale_image.py:188: image = Image.open(io.BytesIO(base64.b64decode(product_green.image_256)))
./static/src/xml/website_sale_recently_viewed.xml:15: <img class="o_carousel_product_card_img_top card-img-top" t-attf-src="/web/image/product.product/#{product.id}#{productFrame == 1 ? '/image_256' : '/image_512'}" t-att-alt="product.display_name"/>
./views/templates.xml:156: t-options="{'widget': 'image', 'preview_image': 'image_1024' if product_image_big else 'image_256'}"
root@linux-desktop:/usr/lib/python3/dist-packages/odoo/addons/website_sale$ grep -rnw . --exclude="*.po" -e "/web/image"
./data/mail_template_data.xml:46: <img src="/web/image/product.product/${line.product_id.id}/image_128" style="width: 100px; height: 100px; object-fit: contain;" alt="Product image"></img>
./i18n/website_sale.pot:96:" <img src=\"/web/image/product.product/${line.product_id.id}/image_128\" style=\"width: 100px; height: 100px; object-fit: contain;\" alt=\"Product image\"/>\n"
./static/src/xml/website_sale_utils.xml:14: <img t-attf-src="/web/image/product.template/#{product['id']}/image_128"
./static/src/xml/website_sale_recently_viewed.xml:15: <img class="o_carousel_product_card_img_top card-img-top" t-attf-src="/web/image/product.product/#{product.id}#{productFrame == 1 ? '/image_256' : '/image_512'}" t-att-alt="product.display_name"/>
---
Here is resulting models.py code:
---
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class imgtogif_r(models.Model):
_inherit = 'product.product'
_name = 'product.product'
src1 = fields.Text(string="testsrc1")
src2 = fields.Text(string="testsrc2")
src3 = fields.Text(string="testsrc3")
---
Just setting the fields from xml with test values to test the module, but strings are nowhere to be found. I would like to hear, what is wrong here, and why it is not working. Thanks :)