Sitecore 补丁 - 添加网站
Sitecore Patch - Add website
我正在尝试在站点列表中添加站点名称,以便 HTML 缓存在 publish:end:remote
事件时被清除。
<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>
但是它没有按预期工作。我进行了谷歌搜索,但没有找到任何关于我们如何在元素之前或之后进行修补的信息。大多数示例是 on/before 属性等
谢谢。
您不必修补网站列表。您需要一个接一个地添加所有网站。
<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>
如果要给没有属性的节点打补丁,可以select节点的text()进行匹配。之前或之后。看这个例子:
<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>
您不需要使用任何 patch:delete
或 patch: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>
这已经得到回答,但添加到上面的答案中 - 在修补站点时,您不需要添加其他元素属性,而只需添加您正在修补的元素属性。
<sitecore>
<events>
<!-- Html Cache clear on publish events -->
<!-- Force FULL cache clear on publish-->
<event name="publish:end">
<handler>
<sites>
<site name="customSite">customSite</site>
</sites>
</handler>
</event>
<!-- Html Cache clear on publish events -->
<!-- Force FULL cache clear on publish-->
<event name="publish:end:remote">
<handler>
<sites>
<site name="customSite">customSite</site>
</sites>
</handler>
</event>
</events>
我正在尝试在站点列表中添加站点名称,以便 HTML 缓存在 publish:end:remote
事件时被清除。
<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>
但是它没有按预期工作。我进行了谷歌搜索,但没有找到任何关于我们如何在元素之前或之后进行修补的信息。大多数示例是 on/before 属性等
谢谢。
您不必修补网站列表。您需要一个接一个地添加所有网站。
<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>
如果要给没有属性的节点打补丁,可以select节点的text()进行匹配。之前或之后。看这个例子:
<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>
您不需要使用任何 patch:delete
或 patch: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>
这已经得到回答,但添加到上面的答案中 - 在修补站点时,您不需要添加其他元素属性,而只需添加您正在修补的元素属性。
<sitecore>
<events>
<!-- Html Cache clear on publish events -->
<!-- Force FULL cache clear on publish-->
<event name="publish:end">
<handler>
<sites>
<site name="customSite">customSite</site>
</sites>
</handler>
</event>
<!-- Html Cache clear on publish events -->
<!-- Force FULL cache clear on publish-->
<event name="publish:end:remote">
<handler>
<sites>
<site name="customSite">customSite</site>
</sites>
</handler>
</event>
</events>