Как расширить шаблоны qweb в Odoo14?

#javascript #qweb #odoo-14

#javascript #qweb #odoo-14

Вопрос:

Я пытаюсь добавить пользовательский пункт меню в выпадающий список фильтра

в Odoo14 и owl framework некоторые пункты меню существуют в базовом модуле внутри следующего фрагмента

 <t t-name="web.CustomFilterItem" owl="1">
    <div class="o_generator_menu">
        <button type="button"
            class="o_add_custom_filter dropdown-item"
            aria-expanded="false"
            t-ref="fallback-focus"
            t-on-click="state.open = !state.open"
            t-on-keydown="_onKeydown"
            >
            <t>Add Custom Filter</t>
        </button>
    </div>
</t>


 

Итак, в моем пользовательском модуле я делаю следующее, чтобы добавить пользовательский элемент

 <?xml version="1.0" encoding="UTF-8" ?>
<templates>
    <t t-extend="web.CustomFilterItem">
        <t t-jquery=".o_add_custom_filter" t-operation="after">
            <div
                role="separator"
                class="dropdown-divider o_generator_menu"
            />
            <button
                type="button"
                class="dropdown-item o_generator_menu o_add_advanced_search"
                aria-expanded="false"
            >Custom Item</button>
        </t>
    </t>
</templates>
 

Но он не появляется. Есть предложения?

Ответ №1:

Odoo14 owl framework вы можете расширить шаблон с помощью xpath.

вы можете использовать так.

 <?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-name="CustomFilterItem" t-inherit="web.CustomFilterItem" t-inherit-mode="extension" owl="1">
<xpath expr="//button[hasclass('o_add_custom_filter dropdown-item')]" position="before">
//your code
</xpath>
</templates>