muestra un extracto de la descripción en las listas de productos.

This commit is contained in:
snt 2024-09-06 13:41:47 +02:00
parent f0b77967b3
commit 7b4457102e
8 changed files with 101 additions and 0 deletions

View file

@ -0,0 +1 @@
from . import models

View file

@ -0,0 +1,11 @@
{
"name": "Display product website descrition in e-commerce catalog pages.",
"version": "16.0.1.0.2",
"category": "Website",
"author": "Criptomart",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["website_sale"],
"data": ["data/snippet_filter_data.xml", "views/website_sale_views.xml"],
}

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="website_sale.dynamic_snippet_newest_products_filter" model="ir.filters">
<field
name="context"
>{'display_website_description': True, 'add2cart_rerender': False}</field>
</record>
</odoo>

View file

@ -0,0 +1,2 @@
from . import website_snippet_filter
from . import product_template

View file

@ -0,0 +1,19 @@
from odoo import models, fields, api
class ProductTemplate(models.Model):
_inherit = 'product.template'
website_description_limited = fields.Text(
compute='_compute_website_description_limited',
string='Website Description Limited'
)
@api.depends('website_description')
def _compute_website_description_limited(self):
for product in self:
if product.website_description:
product.website_description_limited = product.website_description.splitlines()[0]
if len(product.website_description_limited) > 240:
product.website_description_limited = product.website_description_limited[:240] + '...'
else:
product.website_description_limited = ''

View file

@ -0,0 +1,44 @@
from odoo import models
class WebsiteSnippetFilter(models.Model):
_inherit = "website.snippet.filter"
def _get_products_latest_sold(self, website, limit, domain, context):
products = super()._get_products_latest_sold(website, limit, domain, context)
if products:
return products.with_context(display_website_description=True)
else:
return products
def _get_products_latest_viewed(self, website, limit, domain, context):
products = super()._get_products_latest_viewed(website, limit, domain, context)
if products:
return products.with_context(display_website_description=True)
else:
return products
def _get_products_recently_sold_with(self, website, limit, domain, context):
products = super()._get_products_recently_sold_with(
website, limit, domain, context
)
if products:
return products.with_context(display_website_description=True)
else:
return products
def _get_products_accessories(self, website, limit, domain, context):
products = super()._get_products_accessories(website, limit, domain, context)
if products:
return products.with_context(display_website_description=True)
else:
return products
def _get_products_alternative_products(self, website, limit, domain, context):
products = super()._get_products_alternative_products(
website, limit, domain, context
)
if products:
return products.with_context(display_website_description=True)
else:
return products

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="products_item"
name="Display product description"
inherit_id="website_sale.products_item"
customize_show="True"
>
<xpath expr="//a[@t-field='product.name']" position="after">
<div t-if="product.website_description_limited" class="product-website-description">
<t t-raw="product.website_description_limited"/>
</div>
</xpath>
</template>
</odoo>