Openerp odoo中的模板继承
我想为奥多创建一个新主题。我已经创建了一个新模块并安装了它。我在这篇文档中看到,odoo通过使用t-extend关键字支持模板继承。但是我做不到。 这是我的自定义模板:Openerp odoo中的模板继承,openerp,odoo,openerp-8,Openerp,Odoo,Openerp 8,我想为奥多创建一个新主题。我已经创建了一个新模块并安装了它。我在这篇文档中看到,odoo通过使用t-extend关键字支持模板继承。但是我做不到。 这是我的自定义模板: <?xml version="1.0" encoding="utf-8"?> <openerp> <data> <template id="website.homepage" name="Homepage" page="True"> <div clas
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="website.homepage" name="Homepage" page="True">
<div class="header">
<h1>FOO<h1>
<div class="main">
</div>
</div>
</template>
<template id="website.contact" name="Homepage" page="True">
<t t-extend="website.homepage">
<t t-jquery="div.main" t-operation="inner">
<h1>FOO 2</h1>
</t>
</t>
</template>
</data>
</openerp>
福
富2
模板website.contact应该显示FOO和FOO 2,但它只显示FOO 2。
请帮我解释一下。谢谢。您对客户端模板使用语法,但这些是服务器端模板。您可以将继承与服务器端模板一起使用:
<template id="contact" inherit_id="website.homepage">
<xpath expr="//div[@class='main']" position="inside">
<h1>FOO 2</h1>
</xpath>
</template>
富2
您可以阅读更多内容。您正在尝试创建新主题。?你在用奥多8.0吗。?我这样问是因为你发布的链接是针对OpenERP7.0的 因此,对于Odoo8.0,您可以查看新文档,对于QWEB,您可以在这里找到它
现在最重要的是,若你们们正试图为CMS或网站模块创建新的主题,那个么你们们必须完成这些 在父模板中,添加
或
,模板:…代码html
在这里使用Xpath,您可以继承父临时表并对其进行更改,示例如下
<template id="homepage_extend" inherit_id="website.homepage">
<xpath expr="//div[@class='main']" position='inside'>
<h1>FOO 2</h1>
</xpath>
</template>
富2
或尝试
<template id="homepage_extend" inherit_id="website.homepage">
<xpath expr="//div[@class='header']" position='replace'>
<div class="header">
<h1>FOO<h1>
<div class="main">
<h1>FOO 2</h1>
</div>
</div>
</xpath>
</template>
福
富2
您还可以通过覆盖该模板来尝试以下操作:
<template id="website.homepage">
<div class="header">
<h1>FOO<h1>
<div class="main">
<h1>FOO 2<h1>
</div>
</div>
</template>
福
富2
在重写时,不要忘记在模块名后面提供确切的id。
干杯 你好,阮明雄, 试试这个代码
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="website.homepage" name="Homepage" page="True">
<div class="header">
<h1>FOO<h1>
<div class="main">
</div>
</div>
</template>
<template id="website.contact" name="Homepage" page="True">
<t t-extend="website.homepage">
<!-- Use 'append' to add the h1 tag inside main div -->
<t t-jquery="main" t-operation="append">
<h1>FOO 2</h1>
</t>
</t>
</template>
</data>
</openerp>
福
富2
我希望我的回答对你有帮助。照你说的做,它会修改网页website.homepage,而不是创建新网页(website.contact)。有没有办法创建一个新页面,它继承了一个页面,而不改变原来的页面?似乎是客户端模板,而不是服务器端模板,我所做的是按照以下说明:@Minh Hung Nguyen这些是服务器端模板(即,它们在服务器端进行评估)-您链接到正确的指南,但是该指南没有在任何地方提到
t-extend
,因为它是服务器端模板的指南,而t-extend
是客户端(JavaScript)模板功能。我认为您的部分困惑可能来自这样一个事实,即Odoo中的继承通常不会创建新对象。它会在位修改现有对象。若要基于其他模板功能创建新模板,您可能需要使用t-call
。感谢您的回答,您能告诉我在哪种情况下可以使用t-extend吗?感谢您的链接,我使用的是odoo 8,但似乎我看错了文档。我尝试用t-extends替换t-extends,但仍然失败。