2015-11-20 40 views
3

我试图让HTML缓存大干快上publish:end:remote事件清除网站上的列表中添加站点名称。Sitecore的补丁 - 添加网站

<event name="publish:end:remote"> 
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
    <sites hint="list"> 
     <site patch:after="*[@site]">mysite</site> 
    </sites> 
    </handler> 
    <handler type="Sitecore.Publishing.RenderingParametersCacheClearer, Sitecore.Kernel" method="ClearCache"/> 
</event> 

然而,它没有按预期工作。我做了Google搜索,没有发现任何关于如何在元素之前或之后修补的信息。大多数的例子是上/属性等

由于之前。

回答

5

如果要修补的节点没有属性,您可以选择节点来康普艾的文本()。之前或之后。看看这个例子:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <events timingLevel="custom"> 
     <event name="publish:end:remote"> 
     <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
      <sites> 
      <site patch:before="site[./text()='website']">plop3</site> 
      </sites> 
     </handler> 
     </event> 
    </events> 
    </sitecore> 
</configuration> 

一种不同的方法,以您的问题。 使用修补程序删除,您可以清除列表并从头开始构建您的列表。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/"> 
    <sitecore> 
    <events timingLevel="custom"> 
     <event name="publish:end:remote"> 
     <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
      <sites hint="list"> 
      <patch:delete /> 
      </sites> 
      <sites hint="list"> 
      <site>website</site> 
      <site>anotherwebsite</site> 
      </sites> 
     </handler> 
     </event> 
     </events> 
    </sitecore> 
</configuration> 
+0

在APP_CONFIG \ \包括线Sitecore.ExperienceExplorer.config从162 Sitecore的8.1,你可以找到使用./text() –

+0

pefect,正是我追求的先进典型。谢谢。 –

0

你没有打补丁的网站列表。您需要逐个添加所有网站。

<event name="publish:end:remote"> 
     <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
      <sites hint="list"> 
       <site>SiteOne</site> 
       <site>Sitetwo</site> 
        ... 
       <site>SiteN</site> 
      </sites> 
     </handler> 
    </event> 
+0

但我们不想在我们的解决方案中存储任何sitecore配置。有没有办法保护网站和添加更多网站? –

+0

你是什么意思:“我们不想在我们的解决方案中存储sitecore配置”?通常情况下,您的解决方案中的app_config文件夹已复制到目标文件夹,但依赖于解决方案。 –

+1

我的意思是,我们应该只修补Sitecore的配置文件,使升级更容易 –

5

你不需要使用任何patch:deletepatch:instead。您只需将name属性添加到您的新<site>标记中,Sitecore就会将它们视为单独的网站定义。

下面是一些进一步的解释:Config patching system for the external config files

创建App_config\Include\My.Site.Definition.config文件的内容:

<sitecore> 
    <sites> 
    <site name="mysite" patch:before="site[@name='website']" 
     ... /> 
    </sites> 
    <events> 
    <event name="publish:end"> 
     <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
     <sites hint="list"> 
      <site name="mysite">mysite</site> 
     </sites> 
     </handler> 
    </event> 
    <event name="publish:end:remote"> 
     <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
     <sites hint="list"> 
      <site name="mysite">mysite</site> 
     </sites> 
     </handler> 
    </event> 
    </events> 
</sitecore> 

另一种选择是使用的,而不是<site>标签其他一些标签,导致当父标签包含hint="list"属性,它将所有子标签视为该列表的项目。您需要确保每个标签都是唯一的。你可以这样使用它:

<event name="publish:end:remote"> 
    <handler type="Sitecore.Publishing.HtmlCacheClearer, Sitecore.Kernel" method="ClearCache"> 
    <sites hint="list"> 
     <site1>mysite</site1> 
     <othersite>othersite</othersite> 
    </sites> 
    </handler> 
</event> 
+1

是正确的,需要添加一个唯一的标签,并且顺序对缓存更清晰无关紧要。 – jammykam