2017-02-23 104 views
0

將css/js資源合併到Odoo網站的最佳方式是哪些資產只爲特定頁面加載?按頁面管理CSS資源

在示例和文檔中,他們提到將您的資產轉儲到Odoo的website.assets_frontend,我這樣做,但有些情況下我想使用網上找到的網站模板,我真的不想花時間瀏覽CSS類和識別衝突。

如果頁面本身失敗,那是一回事,但如果它打破了我現有頁面上的另一個CSS的所有CSS。

我正在考慮使用這樣的技術。

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

使用if語句來確定是否要納入的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到Odoo的前端資產在包含的方式建議,我將不勝感激。

回答

0

你可以做的實際上是插入:

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

到您想要的特定的CSS/JS被應用到您的模板。有關具體示例,請參見addons/website_google_map/views/google_map_templates.xml

您的頭標記的內容將被插入到將爲該模板呈現的最終HTML的頭標記內。

由於它似乎是直截了當,並由框架本身使用,我已經訴諸使用它自己沒有問題,迄今。據我所知,你也可以創建一個JavaScript Widget,它只在你的模板上運行,它將應用特定的CSS。但上面的解決方案對我來說似乎更清潔。

+0

你可以做同樣的js資產嗎?所以你說所有''資產將被合併並且以一個頭標籤的形式提供給客戶端? –

+0

我會檢查這個並標記這個正確的明天。 –

+0

喬治,我在前端模板上做了這個。在我的模板中添加了''。奇怪的是,''標籤被刪除,並且css鏈接被放置在我的'

'元素的頂部。現在這在技術上做我所需要的,因爲我的頁面有適當的CSS但是這不會將CSS添加到''元素,並且不會將CSS添加到前端資產。不在''元素中的事實並不是什麼大問題,但是資產包通過最小化請求來提高速度。 –