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