使用 QWeb 模板在 Odoo 中进行原子设计
Atomic Design in Odoo with QWeb templates
我正在 odoo 11.0 中设计一个网站,我想为一些将在多个视图中使用的元素创建一个文件,例如日历,我需要创建一个包含所有 html 元素的日历,然后在我需要显示日历的每个视图中简单地导入包含它的文件,即应用原子设计,但我搜索并找不到它。
要为您需要在其他时间重用的每个元素创建一个文件,您必须创建一个带有 <odoo>, <data>
和 <template>
标签的文件,就好像它是一个普通视图一样,然后要导入它,您可以使用 <t t-call = "module.template_id"> </ t>
,例如,在我的例子中,我需要创建一个包含所有 html 元素的日历,然后将其导入其他视图,为此:
我使用以下代码在 my_module/views/share 文件夹中创建 calendar.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>
<template id="calendar">
<!--HTML code-->
</template>
</data>
</odoo>
我把这个文件导入模块__manifest__.py文件
在另一个视图中导入它使用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' 其中可能的值有:event、party、reservation等。并且它会在显示日历时获取值,在日历文件中我们使用一个变量,该变量将从导入它的视图中设置,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”的值,在这种情况下,将显示:'Choose the date for the party',文件看起来像这样:
<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 的模板,以便显示索引页面,我们导入日历然后日历导入另一个模板
我正在 odoo 11.0 中设计一个网站,我想为一些将在多个视图中使用的元素创建一个文件,例如日历,我需要创建一个包含所有 html 元素的日历,然后在我需要显示日历的每个视图中简单地导入包含它的文件,即应用原子设计,但我搜索并找不到它。
要为您需要在其他时间重用的每个元素创建一个文件,您必须创建一个带有 <odoo>, <data>
和 <template>
标签的文件,就好像它是一个普通视图一样,然后要导入它,您可以使用 <t t-call = "module.template_id"> </ t>
,例如,在我的例子中,我需要创建一个包含所有 html 元素的日历,然后将其导入其他视图,为此:
我使用以下代码在 my_module/views/share 文件夹中创建 calendar.xml 文件:
<?xml version="1.0" encoding="UTF-8"?> <odoo> <data> <template id="calendar"> <!--HTML code--> </template> </data> </odoo>
我把这个文件导入模块__manifest__.py文件
在另一个视图中导入它使用
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' 其中可能的值有:event、party、reservation等。并且它会在显示日历时获取值,在日历文件中我们使用一个变量,该变量将从导入它的视图中设置,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”的值,在这种情况下,将显示:'Choose the date for the party',文件看起来像这样:
<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 的模板,以便显示索引页面,我们导入日历然后日历导入另一个模板