2015-11-20 73 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