Чтобы создать файл для каждого элемента, который необходимо повторно использовать в другое время, необходимо создать файл с тегами <odoo>, <data>
и <template>
, как если бы это был общий вид, а затем импортировать его, используя <t t-call = "module.template_id"> </ t>
, например, в моем случае мне нужно создать календарь со всеми элементами html и затем импортировать его в другие представления, для этого:
Я создаю календарь .xml файл в папке my_module / views / share со следующим кодом:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="calendar">
<!--HTML code-->
</template>
</data>
</odoo>
Я импортирую этот файл в модуль __ manifest__.py file
, чтобы импортировать его в другое представление, используйте t-call
, предположим, что мой модуль называется my_module , для импорта мы пишем:
<odoo>
<data>
<template id="index_template">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<!--=============importing calendar============-->
<t t-call="my_module.calendar">
</t>
<!--=============other HTML code============-->
</div>
</div>
</t>
</template>
</data>
</odoo>
В случае, если импортируемое представление показывает динамические данные, например, мне нужно показать плакат типа: выберите дату для: 'event_type' где возможные значения: событие, вечеринка, бронирование и т. Д. .и что он примет значение в момент показа календаря, в файле календаря мы используем переменную, которая будет установлена из представления, которое его импортирует, файл calendar.xml будет выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="calendar">
<h1>Choose the date for the <t t-esc="event_type"/></h1>
<!--HTML code-->
</template>
</data>
</odoo>
В файле, который я импортирую, я должен установить значение для переменной ' event_type '. В этом случае будет отображаться: 'Выбратьдата для партии ', файл будет выглядеть следующим образом:
<odoo>
<data>
<template id="index_template">
<t t-call="website.layout">
<div id="wrap">
<div class="container">
<!--=============importing calendar============-->
<t t-call="my_module.calendar">
<t t-set="event_type">party</t>
</t>
<!--=============other HTML code============-->
</div>
</div>
</t>
</template>
</data>
</odoo>
Таким же образом мы можем вызывать вложенные представления, чтобы повторно использовать все, что мы хотим, например, мы можем создать другоешаблон, который импортируется в calendar.xml для отображения страницы индекса, мы импортируем календарь и, в свою очередь, импортируем другой шаблон календаря