Openerp odoo中的模板继承

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

我想为奥多创建一个新主题。我已经创建了一个新模块并安装了它。我在这篇文档中看到,odoo通过使用t-extend关键字支持模板继承。但是我做不到。 这是我的自定义模板:

<?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,但仍然失败。