我正在尝试显示在任务中进行更改的日期。为此,我需要继承小部件的模板" mail_thread"。该模板在其定义中没有id。就是这样:
<?xml version="1.0" encoding="UTF-8"?>
<template>
<!--
mail.Widget template used to namespace the css -->
<t t-name="mail.Root">
<div class="oe_mail">
</div>
</t>
...
<span t-att-title="widget.date">
<t t-if="widget.timerelative" t-esc="widget.timerelative"/>
<t t-if="!widget.timerelative" t-raw="widget.display_date"/>
</span>
...
</template>
在我的模块中,我需要替换<span>
标记才能显示日期。
那么,如何继承该模板并替换标签?
答案 0 :(得分:11)
客户端模板有不同的继承机制(Web模板,在<templates>
标签内定义,“在加载时在客户端使用javascript编译”)和服务器端模板(通常是视图,必须包含在内)在__openerp__.py
文件的数据列表中,“启动/升级odoo服务器时编译”。
您可以使用<t t-extend="template_name">
后跟一个或多个来扩展Web /窗口小部件模板模板
<t t-jquery="jquery_selector" t-operation="operation">
有点像xpath,但客户端更强大
您不需要ID,继承是基于模板名称的。 (t-name
指令)
模板继承用于就地更改现有模板, 例如将信息添加到其他模块创建的模板中。
模板继承是通过t-extend指令执行的 将模板的名称作为参数进行更改。
然后使用任意数量的t-jquery执行更改 子指令:
<t t-extend="base.template"> <t t-jquery="ul" t-operation="append"> <li>new element</li> </t> </t>
t-jquery指令采用CSS选择器。使用此选择器 扩展模板,用于选择指定的上下文节点 应用了t操作:
- 追加
节点的主体附加在上下文节点的末尾(在上下文节点的最后一个子节点之后)- 前置
节点的主体被预先添加到上下文节点(在上下文节点的第一个子节点之前插入)
前- 节点的主体正好插入上下文节点
之前- 后
之后插入
节点的主体紧跟在上下文节点- 内
节点的主体替换上下文节点的子节点- 替换
节点的主体用于替换上下文节点itsel- 无操作
如果未指定t-operation,则模板主体将被解释为javascript代码,并以上下文节点执行,如此
答案 1 :(得分:0)
我还想更改此xml文件中的日期显示格式。所以我将这个默认布局的整个模板复制到我的新模块中,并且只更改了span标记中的日期。
<?xml version="1.0" encoding="UTF-8"?>
<template>
<!-- default layout -->
<t t-name="mail.thread.message">
....
<span t-att-title="widget.date">
<!--<t t-if="widget.timerelative" t-esc="widget.timerelative"/>-->
<!--<t t-if="!widget.timerelative" t-raw="widget.display_date"/>-->
<t t-raw="widget.display_date"/>
</span>
....
</t>
</template>
需要在 __ openerp __。py
中声明此xml文件它对我有用。