diff --git a/addons/product/views/product_tag_views.xml b/addons/product/views/product_tag_views.xml
index c4d3c1b8103..a09e89a51a6 100644
--- a/addons/product/views/product_tag_views.xml
+++ b/addons/product/views/product_tag_views.xml
@@ -8,19 +8,25 @@
@@ -33,7 +39,6 @@
-
diff --git a/addons/product/views/product_views.xml b/addons/product/views/product_views.xml
index f11c1d42394..d71a12939df 100644
--- a/addons/product/views/product_views.xml
+++ b/addons/product/views/product_views.xml
@@ -82,11 +82,8 @@
-
-
-
-
-
+
+
@@ -288,11 +285,8 @@
-
-
-
-
-
+
+
@@ -356,6 +350,35 @@
+
+ product.template.view.tree.tag
+ product.template
+
+
+
+
+
+
+
+
+
+
+ product.product.view.tree.tag
+ product.product
+
+
+
+
+
+
+
+
+
+
product.product.form
product.product
@@ -397,7 +420,7 @@
{'no_open': true}
-
+
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index b9c990f8dc5..712e37ab976 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -324,11 +324,6 @@ class WebsiteSale(http.Controller):
else:
post['tags'] = None
tags = {}
- ProductTag = request.env['product.tag']
- all_tags = ProductTag.search(
- [('product_ids.is_published', '=', True), ('visible_on_ecommerce', '=', True)]
- + website_domain
- )
keep = QueryURL('/shop', **self._shop_get_query_url_kwargs(category and int(category), search, min_price, max_price, **post))
@@ -398,6 +393,18 @@ class WebsiteSale(http.Controller):
max_price = max_price if max_price >= available_min_price else available_max_price
post['max_price'] = max_price
+ if filter_by_tags_enabled:
+ if (
+ search_product.product_tag_ids
+ or search_product.product_variant_ids.additional_product_tag_ids
+ ):
+ ProductTag = request.env['product.tag']
+ all_tags = ProductTag.search(
+ [('product_ids.is_published', '=', True), ('visible_on_ecommerce', '=', True)]
+ + website_domain
+ )
+ else:
+ all_tags = []
categs_domain = [('parent_id', '=', False)] + website_domain
if search:
search_categories = Category.search(
diff --git a/addons/website_sale/views/product_tag_views.xml b/addons/website_sale/views/product_tag_views.xml
index 9569aa80870..9be792e9a19 100644
--- a/addons/website_sale/views/product_tag_views.xml
+++ b/addons/website_sale/views/product_tag_views.xml
@@ -7,13 +7,20 @@
product.tag
-
-
-
-
-
-
-
+
+
+
+
+
+ If an image is set, the color will not be used on eCommerce.
+
@@ -25,9 +32,18 @@
-
-
-
+
+
diff --git a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
index dabfabda3a9..2a9476c19d6 100644
--- a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
+++ b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
@@ -121,7 +121,7 @@ publicWidget.registry.WebsiteSale.include({
$quantity.parent().parent().removeClass('d-none');
$quantity.text(quantity).hide().fadeIn(600);
// find the closest div that has an img tag in it
- const imgContainerEl = self.$form.closest('div:has(img)');
+ const imgContainerEl = self.$form.closest('div:has(.o_wsale_product_images)');
wsUtils.animateClone($('header .o_wsale_my_cart').first(), imgContainerEl, 25, 40);
sessionStorage.setItem('website_sale_cart_quantity', quantity);
}).then(()=>{