2014-12-22 8 views
7

Ich möchte ein neues Thema für odoo erstellen. Ich habe es geschafft, indem ich ein neues Modul erstellt und es installiert habe. Ich sehe in diesem Dokument here, die besagt, dass odoo Unterstützung Vorlage Vererbung mit t-extend Schlüsselwort. Aber ich kann es nicht schaffen. Dies ist meine angepasste Vorlage:Vorlage Vererbung 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> 

Vorlage website.contact sollte 2 FOO und FOO gezeigt haben, aber es zeigte nur FOO 2. Bitte helfen Sie mir zu erklären. Vielen Dank.

Antwort

9

Sie verwenden eine Syntax für Clientseite Vorlagen, aber das sind Serverseite Vorlagen. Sie verwenden Vererbung mit Server-Vorlagen dieser:

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

Sie können mehr in the official documentation lesen.

+0

Wie Sie gesagt haben, ändert es die Seite website.homepage, nicht eine neue Seite erstellen (website.contact). Gibt es trotzdem eine neue Seite, die von einer Seite erbt und die ursprüngliche nicht ändert? –

+0

Und scheint, dass es Client-Seite ist, nicht serverseitige Vorlage, was ich getan habe, folgen Sie dieser Anweisung: http://odoo-80.readthedocs.org/en/latest/guides/themes.html –

+0

@ Minh-Hung Nguyen Das sind Server-Side-Templates (dh sie werden auf der Serverseite ausgewertet) - Sie verlinken auf eine korrekte Anleitung, aber die Anleitung erwähnt "T-extend" nirgendwo genau, weil es eine Anleitung für serverseitige Templates und "t-extend" ist ist eine clientseitige (JavaScript) Vorlagenfunktion. –

1

Sie versuchen ein neues Thema zu erstellen.? und benutzt du odoo 8.0? Ich frage das, weil der Link, den Sie gepostet haben, für OpenERP 7.0 ist So für Odoo 8.0 neue Dokumentation ist verfügbar siehe here und für QWEB können Sie es hier QWEB finden.

Jetzt Hauptsache, wenn Sie versuchen, neues Thema für CMS oder Website-Modul zu erstellen, dann müssen Sie diese steps durchlaufen.

+0

Vielen Dank für Ihre Links, ich benutze odoo 8 aber scheint, dass ich falsche Dokumente sah. Ich habe versucht, t-extend um t-extends zu ersetzen, aber immer noch nicht erfolgreich. –

0

mit XPath hier können Sie Inherit und Änderungen an den Eltern-tempaltes machen, folgen Beispiele.

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

oder versuchen

<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> 

Sie können auch diese versuchen, durch die Vorlage überschreiben wie:

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

während zwingende vergessen Sie nicht, gab die genaue ID von Modulnamen gefolgt. Prost!

0

Hallo Minh-Hung Nguyen,

diesen Code Versuchen Sie,

<?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> 

Ich hoffe, meine Antwort für Sie hilfreich ist.