如何包含在 Odoo 中?
How to include in Odoo?
我对 Odoo(internship) 有点陌生,所以我想知道在 Odoo(qweb) 中是否有等效项 include(php) ?
否则,我们如何在另一个文件中包含一个 xml 文件?
例如,我得到了我的主 xml 文件,我想将不同的页面或页面的一部分(通过 id 或 class)调用到我的主页面中,是否可能以及如何我们可以这样做吗?
我试过 xiinclude 但它似乎在那里不起作用...
我已经看过,但即使使用 odoo 文档我也无法理解它是如何工作的。
我正在研究 Odoo 10。
亲切地,
等同于 t-call
函数或指令。 t-call
包含另一个模板文件。您可以使用它来包装内容,这通常是 website.layout
模板用于的内容,如下例所示。
<openerp>
<data>
<template id="addon_name.template_name" name="Template Name">
<t t-call="website.layout">
<div>Hello World</div>
</t>
</template>
</data>
</openerp>
但是您不需要将其用作内容的包装器。您可以使用该指令作为在现有模板中包含其他模板的方法。就这样。
<openerp>
<data>
<template id="addon_name.template_name" name="Template Name">
<t t-call="website.layout">
<t t-call="addon_name.top_section"/>
<t t-call="addon_name.middle_section"/>
<t t-call="addon_name.bottom_section"/>
</t>
</template>
</data>
</openerp>
要使其正常工作,您必须已经定义了模板,在我的示例中,它们是 top_section、middle_section 和 bottom_section。还要观察这些模板如何不包含 website.layout
的包装器。包含子模板时,您不想包含 website.layout
模板,因为它旨在为网页提供整体结构,并用作其余内容的包装器。
<openerp>
<data>
<template id="addon_name.top_section" name="Top Section">
<div>Hello World</div>
</template>
</data>
</openerp>
如果您从另一个模板继承,您必须首先告诉模板引擎您希望在何处注入您的代码。这是使用 xpath
表达式完成的。 Odoo源码中有很多xpath
表达式的例子。请在那里或在线查看。以下示例是对以下专门针对报告模板的评论的回应。创建报告模板时,您不希望包含 website.layout
模板。这是针对网站视图而非 qweb
报告。
<openerp>
<data>
<template id="addon_name.template_name" inherit_id="addon_name.template_name">
<xpath expr="//div[@class='class_name']" position="replace">
<t t-call="addon_name.top_section"/>
<t t-call="addon_name.middle_section"/>
<t t-call="addon_name.bottom_section"/>
</xpath>
</template>
</data>
</openerp>
我对 Odoo(internship) 有点陌生,所以我想知道在 Odoo(qweb) 中是否有等效项 include(php) ?
否则,我们如何在另一个文件中包含一个 xml 文件?
例如,我得到了我的主 xml 文件,我想将不同的页面或页面的一部分(通过 id 或 class)调用到我的主页面中,是否可能以及如何我们可以这样做吗?
我试过 xiinclude 但它似乎在那里不起作用... 我已经看过,但即使使用 odoo 文档我也无法理解它是如何工作的。
我正在研究 Odoo 10。
亲切地,
等同于 t-call
函数或指令。 t-call
包含另一个模板文件。您可以使用它来包装内容,这通常是 website.layout
模板用于的内容,如下例所示。
<openerp>
<data>
<template id="addon_name.template_name" name="Template Name">
<t t-call="website.layout">
<div>Hello World</div>
</t>
</template>
</data>
</openerp>
但是您不需要将其用作内容的包装器。您可以使用该指令作为在现有模板中包含其他模板的方法。就这样。
<openerp>
<data>
<template id="addon_name.template_name" name="Template Name">
<t t-call="website.layout">
<t t-call="addon_name.top_section"/>
<t t-call="addon_name.middle_section"/>
<t t-call="addon_name.bottom_section"/>
</t>
</template>
</data>
</openerp>
要使其正常工作,您必须已经定义了模板,在我的示例中,它们是 top_section、middle_section 和 bottom_section。还要观察这些模板如何不包含 website.layout
的包装器。包含子模板时,您不想包含 website.layout
模板,因为它旨在为网页提供整体结构,并用作其余内容的包装器。
<openerp>
<data>
<template id="addon_name.top_section" name="Top Section">
<div>Hello World</div>
</template>
</data>
</openerp>
如果您从另一个模板继承,您必须首先告诉模板引擎您希望在何处注入您的代码。这是使用 xpath
表达式完成的。 Odoo源码中有很多xpath
表达式的例子。请在那里或在线查看。以下示例是对以下专门针对报告模板的评论的回应。创建报告模板时,您不希望包含 website.layout
模板。这是针对网站视图而非 qweb
报告。
<openerp>
<data>
<template id="addon_name.template_name" inherit_id="addon_name.template_name">
<xpath expr="//div[@class='class_name']" position="replace">
<t t-call="addon_name.top_section"/>
<t t-call="addon_name.middle_section"/>
<t t-call="addon_name.bottom_section"/>
</xpath>
</template>
</data>
</openerp>