2014-12-22 20 views
7

Desidero creare un nuovo tema per odoo. L'ho fatto creando un nuovo modulo e installandolo. Vedo in questo documento here che diceva che l'odoo supporta l'ereditarietà del modello utilizzando la parola chiave t-extend. Comunque non posso farcela. Questo è il mio modello personalizzato:Ereditarietà modello in odoo

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 
    <template id="website.homepage" name="Homepage" page="True"> 
     <div class="header"> 
      <h1>FOO<h1> 
      <div class="main"> 
      </div> 
     </div> 
    </template> 

    <template id="website.contact" name="Homepage" page="True"> 
     <t t-extend="website.homepage"> 
      <t t-jquery="div.main" t-operation="inner"> 
       <h1>FOO 2</h1> 
      </t> 
     </t> 
    </template> 

</data> 
</openerp> 

website.contact Template avrebbe dovuto mostrato FOO FOO e 2 ma ha mostrato solo FOO 2. Please help me spiegare. Grazie.

risposta

9

si utilizza una sintassi per client laterali modelli, ma questi sono lato server modelli. Si utilizza l'eredità con i modelli lato server in questo modo:

<template id="contact" inherit_id="website.homepage"> 
    <xpath expr="//div[@class='main']" position="inside"> 
     <h1>FOO 2</h1> 
    </xpath> 
</template> 

Si può leggere di più in the official documentation.

+0

Come hai detto, modifica la pagina website.homepage, non crea una nuova pagina (sito web.contatto). Esiste comunque la possibilità di creare una nuova pagina che erediti da una pagina e non cambi quella originale? –

+0

E sembra che sia lato client, non template lato server, quello che ho fatto è seguire queste istruzioni: http://odoo-80.readthedocs.org/en/latest/guides/themes.html –

+0

@ Minh-Hung Nguyen Quelli sono i modelli lato server (cioè vengono valutati sul lato server) - si collega a una guida corretta, ma la guida non menziona 't-extend' ovunque proprio perché è una guida per i modelli lato server e' t-extend' è una funzione di modelli lato client (JavaScript). –

1

Stai provando a creare un nuovo tema.? e stai usando odoo 8.0? Ti sto chiedendo questo perché il link che hai postato è per OpenERP 7.0 Quindi per Odoo 8.0 è disponibile nuova documentazione vedi here e per QWEB puoi trovarlo qui QWEB.

Ora La cosa principale se si sta tentando di creare un nuovo tema per CMS o modulo sito Web, è necessario passare attraverso questi steps.

+0

Grazie per i link, sto usando odoo 8 ma sembra che abbia guardato documenti sbagliati. Ho provato a sostituire t-extend con t-extends ma ancora non riuscito. –

0

Utilizzando Xpath qui si può ereditare e apportare modifiche a tempaltes genitore, esempi segue.

<template id="homepage_extend" inherit_id="website.homepage"> 
     <xpath expr="//div[@class='main']" position='inside'> 
     <h1>FOO 2</h1> 
     </xpath> 
    </template> 

o provare

<template id="homepage_extend" inherit_id="website.homepage"> 
     <xpath expr="//div[@class='header']" position='replace'> 
     <div class="header"> 
      <h1>FOO<h1> 
      <div class="main"> 
      <h1>FOO 2</h1> 
      </div> 
     </div> 
     </xpath> 
    </template> 

si può anche provare questi sovrascrivendo tale modello come:

<template id="website.homepage"> 
    <div class="header"> 
     <h1>FOO<h1> 
     <div class="main"> 
      <h1>FOO 2<h1> 
     </div> 
    </div> 
</template> 

mentre l'override non dimenticate di dato l'id esatto seguito dal nome del modulo. Cheers!

0

Ciao Minh-Hung Nguyen,

provare questo codice,

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
<data> 
    <template id="website.homepage" name="Homepage" page="True"> 
     <div class="header"> 
      <h1>FOO<h1> 
      <div class="main"> 
      </div> 
     </div> 
    </template> 

    <template id="website.contact" name="Homepage" page="True"> 
     <t t-extend="website.homepage"> 
      <!-- Use 'append' to add the h1 tag inside main div --> 
      <t t-jquery="main" t-operation="append"> 
       <h1>FOO 2</h1> 
      </t> 
     </t> 
    </template> 

</data> 
</openerp> 

Spero che la mia risposta è utile per voi.