2011-05-27 87 views
3

摘要

尋找關於如何使用XDV適用不同的皮膚建議版本剝皮不同的微點根據請求中使用哪個網址到同一網站。基於子域

文本

要求

我們需要若干個微點,每個都有自己的皮膚和不同的主要場所。 微站點應包含主站點內容的子集。主要網站內容的一部分不應在微網站上可見,但這可以通過從導航,網站地圖和portlet中隱藏這些部分的鏈接來實現。如果用戶通過URL黑客攻擊找到隱藏的內容,那就沒問題。微網站的HTML應該是可定製的。 每個微站點都應通過主站點的子站點進行訪問。 即讓主站點是http://site.com,微型網站將在http://a.site.comhttp://b.site.com

客戶希望能夠激活一個新的微型網站,沒有額外的開發,只是一些HTML,CSS和圖像文件,並添加一個虛擬主機到Apache配置。

可能的解決方案

collective.xdv聽起來很不錯,但我們一直無法弄清楚如何把它挑基於URL的不同theme.html文件。這裏的大多數解決方案似乎都側重於創建基於Plone站點子文件夾的子站點。我們不希望爲微型網站提供不同的內容,僅僅是一個不同的皮膚(以及一些隱藏導航的內容),所以我們不想爲每個微型網站創建一個新文件夾。

我們想要嘗試的一些想法是a)定製主模板,讓它爲每個子域的html主體添加一個不同的類,然後使用尋找該類的xdv規則,以及b)修補發佈者根據子域來做一些事情。

另一種方法是分支collective.xdv以修改其「替代主題」,因此它將使用URL來選擇主題。

還有什麼我們可能錯過了?

謝謝!

回答

5

您應該考慮遷移到最後一個Plone 4.1版本。使用新的和有光澤的plone.app.theming(僅適用於Plone> 4.1),您可以在您的重氮(前xdv)規則文件中使用theme parameters(consult the documentation here),例如, $host變量(或者您可能希望爲您的用例設置的任何自定義參數 - 可通過plone.app.theming控制面板進行配置)。如果你堅持使用Plone3.x/collective.xdv,那麼你最好的選擇將是在你的網絡服務器設置標題,例如(Nginx示例)。

location/{ 
... 
proxy_set_header Host $host; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header X-XDV "true"; 
proxy_set_header X-Subsite "sub-a"; 
} 

並從請求中訪問它們。

+0

Diazo/plone.app。主題還提供主機名稱作爲主題的參數,因此您應該可以直接在主題條件中使用主機名稱,例如。 http://pypi.python.org/pypi/plone.app.theming#theme-parameters – 2011-05-29 17:33:58

+0

這是一個恥辱,他們必須使用相同的規則文件...他們必須使用相同的規則文件嗎? – 2014-12-08 01:43:43