如何在Odoo中继承静态xml ?



当我在email Marketing App中编辑邮件时,我可以选择双击一个按钮,然后打开一个链接对话框,在那里我可以修改按钮的URL,大小,样式和颜色:

默认Link-Dialog

嗯,我现在试着在顶部添加一个文本。

为了做到这一点,我找到了原来的XML位于这里:

"插件/web_editor/静态/src/xml/wysiwyg.xml"

,这是我要继承的代码:

<!-- Link Dialog (allows to choose a style and content for a link on the page) -->
<div t-name="wysiwyg.widgets.link" class="o_link_dialog">
<div class="row">
<form class="col-lg-8">
<div t-attf-class="form-group row#{widget.needLabel ? '' : ' d-none'}">
<label class="col-form-label col-md-3" for="o_link_dialog_label_input">Link Label</label>
<div class="col-md-9">
<input type="text" name="label" class="form-control" id="o_link_dialog_label_input" required="required" t-att-value="widget.data.text"/>
</div>
</div>
<div class="form-group row o_url_input">
<label class="col-form-label col-md-3" for="o_link_dialog_url_input">URL or Email</label>
<div class="col-md-9">
<input type="text" name="url" class="form-control" id="o_link_dialog_url_input" required="required"/>
<div class="form-check o_strip_domain d-none">
<input type="checkbox" id="o_link_dialog_url_strip_domain" checked="checked" class="form-check-input"/>
<label for="o_link_dialog_url_strip_domain" class="form-check-label font-weight-normal">
Autoconvert to relative link
</label>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-3">Size</label>
<div class="col-md-9">
<select name="link_style_size" class="form-control link-style">
<option value="sm">Small</option>
<option value="" selected="selected">Medium</option>
<option value="lg">Large</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-3">Style</label>
<div class="col-md-9">
<select name="link_style_shape" class="form-control link-style">
<option value="" selected="selected">Default</option>
<option value="outline">Outline</option>
<option value="rounded-circle">Rounded</option>
<option value="outline,rounded-circle">Outline-Rounded</option>
<option value="flat">Flat</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-form-label col-md-3">Color</label>
<div class="col-md-9">
<div class="o_link_dialog_color">
<label role="button" t-attf-class="o_link_dialog_color_item o_btn_preview btn btn-link text-center" data-color="">
<span>L</span>
<input class="d-none link-style" name="link_style_color" type="radio" value=""/>
<i class="fa"/>
</label>
<t t-foreach="['first', 'second', 'alpha', 'beta', 'gamma', 'delta', 'epsilon', 'primary', 'secondary', 'success', 'info', 'warning', 'danger']" t-as="color">
<label role="button" t-attf-class="o_link_dialog_color_item o_btn_preview btn btn-#{color}" t-attf-aria-label="Color for #{color}" t-attf-title="Color for #{color}">
<input type="radio" name="link_style_color" class="d-none link-style" t-att-value="color"/>
<i class="fa"/>
</label>
</t>
</div>
</div>
</div>
<div class="form-group row">
<div class="offset-md-3 col-md-9">
<label class="o_switch">
<input type="checkbox" name="is_new_window" t-att-checked="widget.data.isNewWindow ? 'checked' : undefined"/>
<span/>
Open in new window
</label>
</div>
</div>
</form>
<div class="col-lg-4 o_link_dialog_preview">
<div class="form-group text-center">
<label>Preview</label>
<div style="overflow-x: auto; max-width: 100%; max-height: 200px;">
<a href="#" id="link-preview" aria-label="Preview" title="Preview"/>
</div>
</div>
</div>
</div>
</div>

所以我在我的模块中创建了一个具有相同名称和目录的新文件:

"静态/src/xml/wysiwyg.xml"

我尝试了两种方法来继承这个XML并添加文本但它们似乎根本不起作用:

<?xml version="1.0" encoding="UTF-8"?>
<template id="template" xml:space="preserve">
<div t-inherit="web_editor.wysiwyg.widgets.link" t-inherit-mode="primary">
<xpath expr="//div[@class='row']" position="before">
<h2>This is a test!</h2>
</xpath>
</div>
<div t-extend="wysiwyg.widgets.link">
<t t-jquery="div.row" t-operation="before">
<h2>This is a test!</h2>
</t>
</div>
</template>

我想要的是这样的东西:

定制Link-Dialog

注意:我还在MANIFEST中添加了这样的XML文件:

qweb ': [' 静态/src/xml/wysiwyg.xml '],

有谁知道如何正确继承静态XML文件吗?

保留第二个例子,将div替换为t,将template替换为templates

你可以找到第一个子元素,像在图像

中添加文本例子:

<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="wysiwyg.widgets.link">
<t t-jquery="div:first-child.row" t-operation="before">
<h2>This is a test!</h2>
</t>
</t>
</templates>

最新更新