Contributors mailing list archives

contributors@odoo-community.org

Avatar

Advanced(?) QWeb question using customize_show and active

by
Radovan Skolnik
- 05/11/2020 11:07:03

Hello,

 

I am working on extending website_sale_hide_empty_category so that recursively empty directories will be hidden in website_sale. However I encountered an issue here. Let me explain. In website_sale the list of categories is rendered using template products_categories which in calls recursive template website_sale.categories_recursive. See here. There is a template option_collapse_products_categories that enables collapsing this list of categories - see here. That works in a way that it replaces a t-call to website_sale.categories_recursive in products_categories with t-call to website_sale.option_collapse_categories_recursive.

 

Now the original approach was to create 2 templates with customize_show that would extend and alter behaviour of website_sale.categories_recursive and website_sale.option_collapse_categories_recursive (to cover both collapsed and non-collapsed rendering). Like this:

 

<template

inherit_id="website_sale.categories_recursive" id="hide_categories_recursive" active="True"

customize_show="True" name="Hide Empty Category list"

>

<xpath expr="//t[@t-name='website_sale.categories_recursive']" position="attributes">

<attribute name="t-if">c.has_product_recursive</attribute>

</xpath>

</template>

<template

inherit_id="website_sale.option_collapse_categories_recursive" id="hide_categories_collapse_recursive" active="True"

customize_show="True" name="Hide Empty Category in Collapsible list"

>

<xpath expr="//t[@t-name='website_sale.option_collapse_categories_recursive']" position="attributes">

<attribute name="t-if">c.has_product_recursive</attribute>

</xpath>

</template>

 

 

However this does not work - the customize option is never shown for website_sale.option_collapse_categories_recursive. My guess is the rendering engine skips that because on parsing the templates it cannot find any instance where website_sale.option_collapse_categories_recursive would be used. Even if you activate option for it, the option for the website_sale.categories_recursive is still rendered.

 

There would be no issue if both templates would be active - because only one of them would be in effect. But then I'd need a way to activate them both upon one radio button (customize_show). Is there a way to do that? I have tried template inside a template. Not working. Or is there a way to set a variable in one template that would be visible in other templates? I'd create a helper template with customize_show that would set the variable that would be included in condition of both the above templates.

 

Thank you very much. Best regards

 

Radovan Skolnik