2012-09-26 41 views
0

想知道最佳做法是設置一個全局標題,可以在某些頁面上覆蓋,如果可能需要的話?Sitecore全局標題

例如,在全球範圍內(對整個網站)應用谷歌跟蹤代碼,並且在一個表單上它需要有自己的跟蹤代碼,並且全局代碼已被刪除?

我已經嘗試創建代碼塊並在項目模板中設置標準值,儘管只將代碼應用於新創建的頁面,但不適用於現有頁面。這意味着必須將代碼添加到每個單獨的頁面。

感謝

回答

0

當我不得不實施解決方案,比如這個,我要麼創建一個名爲「網站設置」模板,並從主頁繼承(或使用該模板創建一個項目),然後寫一些擴展Site類的方法。在Web.config中存儲設置項的ID是我通常喜歡避免的情況,通常我只是將模板附加到主頁上。

這樣我可以結束以下。

<%=Sitecore.Context.Site.Settings.AnalyticsCode()%> 

這個特殊的擴展方法將首先看看上下文項目,看是否填充了「Analytics(分析)代碼」字段,如果不是,那麼我搶的主頁,並從那裏獲得,而不是現場。

這種方法當然可以讓你用你的上下文站點或上下文項目提供的許多方便的擴展方法進行擴展。

0

您可以使用該字段在Sitecore樹中創建一種設置項目,並將該字段添加到選定頁面。然後使用類似於此的代碼:

<%= (!String.IsNullOrEmpty(Sitecore.Context.Item["GoogleId"])) 
    ? Sitecore.Context.Item["GoogleId"] 
    : MySettingsItem["GoogleId"] %> 
0

這聽起來像是一個體面的使用「場後備」。基本上,您網站中的每個頁面(Item)都會有Google Tracking Code字段。您可以連接某種回退機制以使用當前項目上的值,或查找樹直到找到值。這將允許你在'Home'項目中設置Google Tracking Code,所有的後代都會使用這個值,除非它明確地設置在較低的級別。

有關回退問題請參閱my (Sean Kearney's) blog post

這是我的Field Fallback shared source module的鏈接。