2017-02-23 4 views
0

資産が特定のページだけにロードされるOdooのウェブサイトにCSS/js資産を組み込む最も良い方法は何ですか?ページ単位でCSS資産を管理する

例と資料では、資産をOdooのwebsite.assets_frontendにダンプすると述べていますが、私はこれを行いますが、オンラインで見つかったウェブサイトテンプレートを使用したいと思う状況があります。 cssクラスを作成し、競合を特定します。

ページ自体が1つのことであるが、それが別のページである既存のページのすべてのCSSを破損した場合。

私はこのようなテクニックを使用することを考えていました。ウェブサイトの資産またはないでCSSを組み込むかどうかを判断するためにif文を使用し

t-if="request.httprequest.path.startswith('/page/path/')"

。誰もが、彼らが含まれている方法でOdooのフロントエンド資産にCSSを組み込む方法についての提案をしたいと思い場合

<odoo> 
    <data> 
     <template id="page_style" name="Page Style" inherit_id="website.assets_frontend"> 
      <xpath expr="link[last()]" position="after"> 
       <t t-if="request.httprequest.path.startswith('/page/path/')"> 
        <link href="/addon_name/path/to/css/style.css" rel="stylesheet" type="text/css"/> 
       </t> 
      </xpath> 
     </template> 
    </data> 
</odoo> 

とにかく、私はそれをお願い申し上げます。あなたが特定のCSS/JSを適用したいテンプレートへ

<head> 
     <link href="/addon_name/path/to/css/style.css" rel="stylesheet" type="text/css"/> 
</head> 

を:あなたが実際に挿入されて何ができるか

答えて

0

。特定の例については、addons/website_google_map/views/google_map_templates.xml

あなたのheadタグの内容は、そのテンプレート用にレンダリングされる最終HTMLのheadタグの中に挿入されます。

これはフレームワークで使用され、フレームワーク自体が使用しているように思われるので、これまでのところ問題なく使用しています。私が理解できるように、特定のCSSを適用するテンプレートでのみ動作するjavascriptウィジェットを作成することもできます。しかし、上記の解決策は私にとってはよりクリーンであるようです。

+0

jsアセットでも同じことができますか?だから、あなたは ' 'のすべての資産が結合され、クライアントに1つのheadタグで提供されると言っていますか? –

+0

これを確認し、明日これを明記します。 –

+0

ジョージ、私はフロントエンドのテンプレートでこれをやった。テンプレートに「」を追加しました。奇妙なことに、 ''タグが削除され、CSSリンクが '

'要素の先頭に配置されました。これは技術的には私のページには適切なCSSがあるので必要ですが、これは ''要素にCSSを追加せず、CSSをフロントエンドアセットに追加しません。 ' '要素にないということは大したことではありませんが、資産パッケージは要求を最小限に抑えて速度を向上させます。 –