2011-04-20 81 views
2

我們使用靜態HTML文件作爲我們的Plone 4站點的主題,使用collective.xdv。使用XDV重寫網址

靜態HTML文件本身可以在Web瀏覽器中打開,使主題作者可以輕鬆進行主題化過程。

然而,主題文件使用的是在HTML簡稱像

<link rel="stylesheet" type="text/css" href="../css/jquery/accordion.css"/> 

它怎麼可能重寫時,通過Plone的服務,使用自定義的前綴,這些是絕對URL文件系統資源directores? (可它rules.xml中??

如做翻譯

../images/logo.gif 

http://portal_url/images/logo.gif 

回答

0

註冊靜態目錄作爲一種資源,保持包含規則的目錄和媒體文件分開。

要在您的軟件包中註冊名爲'my.package'的資源目錄,請在configure.zcml中使用以下內容:

<browser:resourceDirectory 
    name="my.package.media" 
    directory="static" 
    /> 

在模板中,你現在可以使用「++資源++ my.package.media /名稱資源不足」訪問資源,即

<link rel="stylesheet" type="text/css" href="++resource++my.package.media/css/jquery/accordion.css"/> 

這應該現在即使在URL重寫之後仍按預期工作。

避免在定義XDV規則和模板的位置時使用絕對路徑。相反,只需使用Python :)例如,我們已經把我們的模板文件(html的)和我們的規則文件(.XML)在目錄中稱爲xdvstuff,我們的包裏面:

python://my.package/xdvstuff/theme.html 
python://my.package/xdvstuff/theme.xml 
+0

感謝評論,但正如我注意到的,我希望避免觸摸模板中的鏈接。重點是重寫URL,而不是手動創建它們。 – 2011-04-20 18:24:41

4

如果使用「 absolute_prefix」設置

<registry> 
    <record interface="collective.xdv.interfaces.ITransformSettings" field="absolute_prefix"> 
     <value>/++resource++example.sitetheme</value> 
    </record> 
</registry> 

,並通過資源的註冊與管理您的靜態文件‘applyPrefix =真’選項,您可以使用您的主題HTML文件中的相對和絕對URL(保存爲主題的作者簡單地使用的可能性獨立於Plone的靜態目錄)並使用

<drop theme="/html/head/style" /> 
<append theme="/html/head" content="/html/head/style " /> 

將它們從主題模板中移除並從資源註冊表中提取所有靜態資源(具有將它們合併用於生產使用的額外好處)。詳情請參閱collective.xdv

注意:儘管Nginx在提供靜態文件方面速度非常快,但我們通過將主題靜態文件的資源註冊表與前面的常用緩存代理(Varnish)結合使用,獲得了更好的整體性能。

+1

謝謝!這是我正在尋找的。你知道這個代碼駐留在哪裏,如果我傾向於戳它。 – 2011-04-20 18:50:11