一个简单的模板,有一些div和标题.
我还有一个记录,它显示在主菜单中.
当我第一次创建它时,一切都有效.
但是,如果我想添加或更改某些html,那么这些更改不会显示在网站页面上(即使我刷新/升级主题后).
网站构建器允许我更改文本等等,但这不是我需要的.我希望能够从XML更改html结构.但是一旦第一次创建页面……我不被允许.该页面仅显示首次创建的页面.
希望很清楚,并提前感谢您的帮助.
乔
解决方法
TL;博士
每次使用网站构建器(添加片段,更改文本,…)并保存时,odoo数据库中的数据记录都会被修改(显然 – 否则您的更改将不会持久).
在此过程中,表“ir_model_data”中字段“noupdate”的值从false设置为true,用于模板的记录.只要“noupdate”设置为true,模块上的升级操作就不会更改该模板的记录.
为了能够更改它,您必须将“noupdate”设置为false,以便在升级过程中xml的修改内容将覆盖数据库中的模板.请检查我的答案底部的警告!
我的类似问题
我遇到了类似的问题.像你一样,我创建了一个带有几个html标签的简单模块/模板,将其添加到main_menu并安装了模块.一切都按预期工作(菜单链接可见,我的所有内容都显示).
<?xml version="1.0" encoding="UTF-8"?> <odoo> <!-- === Page template === --> <template name="tpl-imprint" id="website.imprint" page="True"> <t t-call="website.layout"> <div id="wrap"> <div class="container"> <div class="row"> <div class="col-xs-12"> <h1>some Header</h1> <p>some text</p> </div> </div> <!-- === Snippets' area === --> <div class="row"> <div class="oe_structure" /> </div> </div> </div> </t> </template> <!-- === Menu item === --> <record id="menu_imprint" model="website.menu"> <field name="name">Imprint</field> <field name="url">/page/imprint</field> <field name="parent_id" ref="website.main_menu" /> <field name="sequence" type="int">100</field> <field name="website_id" type="int">1</field> </record> </odoo>
之后,我进一步修改了我的xml文件,添加了一些文本等,升级了模块,然后一切都按预期工作.
然后我在我自己创建的页面上对网站构建器进行了一些实验,添加了一些片段并保存.
然后我意识到我的xml中有一些拼写错误,所以我去了我的编辑器,修复了它们,并且 – 没有预料到 – 我的视图没有得到修改.
由于我是odoo的新手,并没有真正深入了解odoo如何在后端工作,我在谷歌上找不到任何好处,我开始分析在升级过程中数据库会发生什么以及使用网站建设者.我发现虽然只是使用升级来上传我的更改,但只有表“ir_ui_view”的字段“arch_db”被更改为相关记录.但是,通过使用网站构建器,不仅模板内容被写入“ir_ui_view”,而且表“ir_model_data”中相关记录的字段“noupdate”也被更改 – 它从false设置为true
(数据库可能发生了更多变化,但提到的那些变化与问题有关).
如何使升级过程再次起作用
为了解决升级问题,我只是将“noupdate”的值更改为true,并且升级过程再次起作用. (每次将网站构建器与一个自定义模板一起使用时,您都必须这样做 – 至少如果您想再次通过xml对模板进行更改).
在手动更改数据库之前备份数据库! (我已经使用我的数据库测试/使用了这些sql行,但没有保修;))
在“ir_ui_view”中查找模板的model_data_id
select model_data_id from ir_ui_view where name = '<the name of your template - in my case tpl-imprint>';
使用该ID查找/更新表“ir_ui_data”中的相关记录
update ir_model_data set noupdate = true where id = <the ID you got with the first query>
完成!尝试升级您的模块.您对xml的更改应立即存储在数据库中.
您也可以一步更改值
update ir_model_data set noupdate = false where id in( select model_data_id from ir_ui_view where name = '<the name of your template - in my case tpl-imprint>' );
!!!!警告 !!!!
如果将“noupdate”设置为false,则在升级过程中,您对网站构建器所做的所有更改都将丢失.如果你想保留它们,你必须将修改粘贴到xml中的模板中!为此,请转到要从中获取内容的页面上的“自定义/ HTML编辑器”,然后将要保留的部分复制粘贴到xml中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。