2012-01-12 69 views
2

方案: 內容樹的部分是,根據兩個主機名運行一個網站的主頁項目(www.site1.com和www.site2.com改變由主機名的內容和呈現在Sitecore的6.4

這兩個主機名的用途是區分服務於相同內容的兩個目標國家和同一組織(市場部門,網絡編輯器等)

當然,內容在整個兩個主機名稱

除了....

在幾個地方我們需要一些小的差異。例如聯繫電子郵件或法律聲明(這些都是Sitecore內容)。在其他地方,我們可能希望能夠根據它所處的主機上下文來更改項目的表示組件。我們可能希望跨特定模板的所有項目執行此操作。

使事情複雜化,該網站已從另一個網站(www.siteA.com)克隆,該網站是不同國家的幾個克隆(一些翻譯)的來源。這是爲了使我們能夠將新項目/內容變更/功能推向我們的子公司。所以所有的模板和表示組件已經在大量的主機上下文和內容樹的很多部分之間共享。

是否有任何Sitecore功能可以使這成爲可能/簡單 - 或者我們是否需要將上下文測試編碼到我們的演示組件中(可能在Sitecore中的一些配置項目旁邊以避免硬編碼值)?

回答

2

偉大的問題。這是一個長鏡頭,但它可能工作:

爲什麼不爲Site2創建新設備,並且在需要更改Site2演示數據的情況下,配置Site2設備的演示設置。如果不是,請不要設置它們,並且默認設備將呈現內容。這裏最難的部分是配置設備如何解決問題。也許你可以創建在<httpRequestBegin>管道中的自定義設備解析器:

<processor type="Sitecore.Pipelines.HttpRequest.BeginDiagnostics, Sitecore.Kernel"/> 
<!--<processor type="Sitecore.Pipelines.HttpRequest.DeviceResolver, Sitecore.Kernel"/>--> 
<processor type="YourProject.Pipelines.HttpRequest.DeviceResolver, YourProject"/> 
<processor type="Sitecore.Pipelines.HttpRequest.LanguageResolver, Sitecore.Kernel"/> 

在你的處理器,你可以看看主機,以確定哪些使用。

您還可以在下面Paul提到的新節點<site ... />上定義Site2設備。例如:

<site name="site1" hostName="site1.com" rootPath="/sitecore/content" startItem="/home" ... /> 
<site name="site2" hostName="site1.com" device="Site2" rootPath="/sitecore/content" startItem="/home" ... /> 

Site1和Site2都指向樹的相同部分,它們只是使用不同的設備。

+2

擴展標記答案:請注意,您可以在web.config中設置站點元素的'設備'屬性,這應該爲您提供另一個站點的已定義備用設備。這也意味着你不需要定製設備解析器? – 2012-01-12 18:39:05

+1

大點保羅! – 2012-01-12 19:20:32

+0

輝煌。正是我在找什麼。感謝你們倆。 – 2012-01-13 13:53:30