2015-01-12 7 views
5

タスクに変更が加えられた日付を表示しようとしています。これを行うには、ウィジェット "mail_thread"のテンプレートを継承する必要があります。そのテンプレートはその定義にidを持ちません。これは、それは次のとおりです。私のモジュールでIDなしのテンプレートをOdooに継承する方法は?

<?xml version="1.0" encoding="UTF-8"?> 
<template> 

    <!-- 
     mail.Widget template used to namespace the css --> 
    <t t-name="mail.Root"> 
     <div class="oe_mail"> 
     </div> 
    </t> 

... 


        <span t-att-title="widget.date"> 
         <t t-if="widget.timerelative" t-esc="widget.timerelative"/> 
         <t t-if="!widget.timerelative" t-raw="widget.display_date"/> 
        </span> 



... 

</template> 

、私は日付を表示するために<span>タグを交換する必要があります。

そのテンプレートを継承してタグを置き換えるにはどうすればよいですか?

答えて

10

<templates>タグ内に定義されたWebテンプレート、クライアントにJavaScriptを読み込んでコンパイルしたもの)とサーバー側のテンプレート(通常はビューをデータに含める必要があります) __openerp__.pyファイルのリスト、odooサーバーの起動/アップグレード時に 'compiled')。

あなたはちょっとのXPathのように動作しますが、クライアント側とより「強力な」一つ以上の <t t-jquery="jquery_selector" t-operation="operation">続い<t t-extend="template_name">を使用してWeb /ウィジェットテンプレートテンプレートを拡張します。
idsは必要ありません。継承はテンプレート名に基づいています。 (t-nameディレクティブ)

テンプレートの継承は、既存のテンプレートを変更するために使用されるインプレース、 例えば他のモジュールによって作成されたテンプレートに情報を追加します。

テンプレートの継承は、 がパラメータとして変更するテンプレートの名前をとるt-extendディレクティブによって実行されます。

変化は、その後、T-jqueryの サブディレクティブの任意の数を用いて行われる:

<t t-extend="base.template"> <t t-jquery="ul" t-operation="append"> <li>new element</li> </t> </t>

T-jqueryのディレクティブは、CSSセレクタをとります。

  • ノードの本体がコンテキストノードの後に​​(文脈ノードの末尾に付加され
    を追加します。この選択は、指定された T-操作が適用されるコンテキストノードを選択する 拡張テンプレートで使用され最後の子)
  • プリペンド
    は、ノードの体は
    ノードの体は右文脈の前に挿入される前に、コンテキストノードの最初の子の前に挿入されたコンテキストノード()
  • の前に付加されますノード

  • ノードの体が右
  • 内側のコンテキストノードの後に​​挿入された後 は、ノードの体は、コンテキストノードの子
  • は、ノードの体は、コンテキストノードを置き換えるために使用され
    を置き換える置き換えitsel
  • 操作なし
    t-operationが指定されていない場合、テンプレート本体はjavacriptコードとして解釈され、コンテキストノードでthisとして実行されます
0

また、このXMLファイルで日付の表示形式を変更したいと考えました。そこで、このデフォルトレイアウトのテンプレート全体を新しいモジュールにコピーし、spanタグの日付のみを変更しました。

<?xml version="1.0" encoding="UTF-8"?> 
<template> 

    <!-- default layout --> 
    <t t-name="mail.thread.message"> 
    .... 

     <span t-att-title="widget.date"> 
      <!--<t t-if="widget.timerelative" t-esc="widget.timerelative"/>--> 
      <!--<t t-if="!widget.timerelative" t-raw="widget.display_date"/>--> 
      <t t-raw="widget.display_date"/> 
     </span> 

    .... 
    </t> 
</template> 

それは私のために働いたあなたの__openerp__.py

で、このxmlファイルを宣言する必要があります。

関連する問題