我正在尝试在Odoo12主页中插入一些HTML块。因此,我尝试继承了 website.homepage 。但这是行不通的。即使升级模块后,我插入的HTML块也不会显示在主页中。有帮助吗?
<template id="my_website_template" name="New Home page" inherit_id="website.homepage">
<xpath expr="//div[@id='wrap']" position="replace">
<!--HTML CODE-->
</xpath>
</template>
答案 0 :(得分:1)
<record id="homepage_block" model="ir.ui.view">
<field name="priority">99</field>
<field name="name">homepage_block</field>
<field name="inherit_id" ref="website.layout"/>
<field name="website_id" search="[('name', 'like', 'My Website')]" model="website"/>
<field name="arch" type="xml">
<xpath expr="//div[@id='wrapwrap']" position="replace">
</xpath>
</field>
</record>
这将替换整个网站布局。您可以使用position =“ replace”这样的游戏:position =“ before”或position =“ after”等...
答案 1 :(得分:0)
网站首页是根据homepage_id
模型中的记录website
呈现的,该字段是与模型website.page
相关的字段。
<record id="homepage_page" model="website.page">
<field name="website_published">True</field>
<field name="url">/</field>
<field name="view_id" ref="homepage" />
</record>
<record id="default_website" model="website">
<field name="homepage_id" ref="homepage_page" />
</record>
您可以继承homepage
记录default_website
字段并将其设置为自己的自定义页面,而不是继承默认的homepage_id
模板。例如,下面的示例显示了内置contactus_page
。
<record id="default_website_homepage" model="website">
<field name="inerit_id" ref="website.default_website"/>
<field name="homepage_id" ref="website.contactus_page" />
</record>
因此,通过继承此记录,默认网站的主页被设置为与我们联系页面。您可以做的是编写自己的模板,例如my_homepage
,在website_page
记录my_homepage_page
中使用该模板,并将其设置为默认网站homepage_id
<record id="my_homepage" model="ir.ui.view">
<field name="name">Home</field>
<field name="type">qweb</field>
<field name="key">website.homepage</field>
<field name="arch" type="xml">
<t name="Home" priority="29" t-name="your_module.my_homepage">
<t t-call="website.layout">
....
....
</t>
</t>
</field>
</record>
<record id="my_homepage_page" model="website.page">
<field name="website_published">True</field>
<field name="url">/</field>
<field name="view_id" ref="my_homepage" />
</record>
<record id="default_website_homepage" model="website">
<field name="inerit_id" ref="website.default_website"/>
<field name="homepage_id" ref="my_homepage_page" />
</record>
答案 2 :(得分:0)
我想分享一下我今天用于Odoo 12.0的版本 感谢@arryph的摘要!
我从这样的网站覆盖“联系我们”页面:
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- === Contact us Page === -->
<template id="custom_contactus_page_template">
<t t-call="website.layout">
<div id="wrap" class="oe_structure oe_empty">
<!-- Your page content here! -->
</div>
</t>
</template>
<record id="custom_contactus_page" model="website.page">
<field name="name">Contact us</field>
<field name="website_published">True</field>
<field name="url">/contactus</field>
<field name="view_id" ref="custom_contactus_page_template"/>
</record>
<!-- Contact us Menu Page-->
<record id="custom_contactus_nav" model="website.menu">
<field name="name">Contact us</field>
<field name="inherit_id" ref="website.menu_contactus"/>
<field name="page_id" ref="custom_contactus_page"/>
</record>
</odoo>
正如文档建议的那样,我更喜欢使用<template>
而不是<record><t-name>
,因为<template>
更易于通过xpath扩展。
值得一提的是,还有一种使用 我们之前看到的指令。这将允许您的页面 内容使用。
编辑
无论如何,我认为这样也可以覆盖网站。菜单项,如下所示:
<!-- Contact us Menu Page-->
<record id="website.menu_contactus" model="website.menu">
<field name="name">Contact us</field>
<field name="page_id" ref="custom_contactus_page"/>
</record>
这将更改对象website.menu_contactus的page_id。 我不测试该代码,但我认为这可以工作。
OR
您可以简单地创建一个具有相同URL的新页面,并且从网站上,配置->页面只需将网站生成的页面/ contactus存档,就会神奇地显示具有相同URL的页面。 这样
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!-- === Contact us Page === -->
<template id="custom_contactus_page_template">
<t t-call="website.layout">
<div id="wrap" class="oe_structure oe_empty">
<!-- Your page content here! -->
</div>
</t>
</template>
<record id="custom_contactus_page" model="website.page">
<field name="name">Contact us</field>
<field name="website_published">True</field>
<field name="url">/contactus</field>
<field name="view_id" ref="custom_contactus_page_template"/>
</record>
<!-- Contact us Menu Page-->
<record id="your_custom_nav_item" model="website.menu">
<field name="name">Contact me</field>
<field name="page_id" ref="custom_contactus_page"/>
<field name="parent_id" ref="website.main_menu"/>
<field name="sequence" type="int">60</field>
</record>
</odoo>
然后从网站配置中存档页面/ contactus。
答案 3 :(得分:0)
在odoo论坛上的Abishek Kumar中,我尝试了它,并且效果很好:
<template id="theme_custom.new_homepage" inherit_id="website.homepage">
<xpath expr="//div[@id='wrap']" position="replace">
<div id="wrap" class="oe_structure">
hello
</div>
</xpath>
</template>