Как наследовать website.homepage и добавить html-контент в div id = "wrap" в odoo 12? - PullRequest
1 голос
/ 14 марта 2019

Я пытаюсь вставить некоторые блоки HTML на домашней странице Odoo12.Поэтому я попытался унаследовать 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>

Ответы [ 3 ]

1 голос
/ 01 июля 2019
<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" и т. д ...

0 голосов
/ 28 июня 2019

Я хотел бы поделиться версией, которую я использую сегодня для 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.

Документация по теме сайта

Стоит отметить, что существует альтернатива для создания страниц с использованием директива, которую мы видели раньше. Это позволит вашей странице контент для дальнейшей настройки, используя.

EDIT

Во всяком случае, я думаю, что это будет работать слишком переопределить элемент 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>

Это изменит page_id объекта website.menu_contactus Я не тестирую этот код, но думаю, что это сработает.

OR

Вы можете просто создать новую страницу с таким же URL-адресом, и на веб-сайте конфигурации-> страницы просто заархивируйте страницу / контакт, созданный веб-сайтом, и волшебным образом будет показана ваша страница с таким же 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>

И после этого заархивируйте страницу / контакт из конфигураций сайта.

0 голосов
/ 14 марта 2019

Домашняя страница веб-сайта отображается из поля 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 records 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>
...