1

我正在尝试在 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>
4

4 回答 4

2
<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" 等等...

于 2019-06-30T23:52:20.943 回答
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 更容易扩展。

网站主题文档

值得一提的是,还有一种使用我们之前看到的指令创建页面的替代方法。这将允许您使用 .

编辑

无论如何,我认为这也可以覆盖 website.menu 项目,如图所示:

<!-- 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 我不测试该代码,但我认为这会起作用。

或者

您可以简单地创建一个具有相同 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。

于 2019-06-28T16:00:42.887 回答
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>
于 2020-01-14T10:49:27.650 回答
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_pagemy_homepage_pagehomepage_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>
于 2019-03-14T11:29:43.867 回答