只是想知道最佳做法是设置一个可以在某些页面上覆盖的全局标题,如果需要的话?
例如,全球范围内应用了Google跟踪代码(整个网站),并且在一个表单上需要有自己的跟踪代码并删除全局跟踪代码?
我尝试过创建代码块并在项目模板中设置标准值,尽管只将代码应用于新创建的页面但不适用于现有页面。这意味着必须将代码添加到每个单独的页面。
感谢
答案 0 :(得分:0)
当我必须实现这样的解决方案时,我要么创建一个名为“站点设置”的模板并从主页继承它(或使用此模板创建项目),然后为Site类编写一些扩展方法。在Web.config中存储设置项的ID是我通常希望避免的,我通常只是将模板附加到主页。
这样我最终可以得到以下结果。
<%=Sitecore.Context.Site.Settings.AnalyticsCode()%>
此特定扩展方法首先会查看上下文项,以查看是否填充了“Google Analytics代码”字段,如果不填充,则我会抓住主页并从那里获取字段。
此方法当然允许您使用上下文站点或上下文项中提供的一些方便的扩展方法进行扩展。
答案 1 :(得分:0)
您可以使用该字段在Sitecore树中创建一种设置项,并将该字段添加到所选页面。然后使用类似的代码:
<%= (!String.IsNullOrEmpty(Sitecore.Context.Item["GoogleId"]))
? Sitecore.Context.Item["GoogleId"]
: MySettingsItem["GoogleId"] %>
答案 2 :(得分:0)
这听起来像是“Field Fallback”的体面用法。从本质上讲,您网站中的每个网页(项目)都有Google Tracking Code
字段。您可以连接某种Fallback机制来使用当前项的值,或查找树直到找到值。这将允许您在'Home'项目中设置Google Tracking Code
,并且所有后代都将使用该值,除非它明确设置在较低级别。
有关后备主题的信息,请参阅my (Sean Kearney's) blog post。