2014-06-23 3 views
2

동일한 속성을 가진 다른 노드가 여러 개있는 경우 어떻게 특정 노드를 패치 할 수 있습니까?Sitecore - 다른 노드와 동일한 속성을 가진 패치 노드

나는 ContentSearch 섹션, 체코 언어 분석기를 패치해야하지만, 모든 노드가

< mapEntry 유형 = "Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider">

을 시작 이 구성의

부분이

...</maEntry> 
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider"> 
    <param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch"> 
    <param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib"> 
     <param hint="name">ar-AE</param> 
    </param> 
    </param> 
    <param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
    <param desc="defaultAnalyzer" type="Lucene.Net.Analysis.AR.ArabicAnalyzer, Lucene.Net.Contrib.Analyzers"> 
     <param hint="version">Lucene_30</param> 
    </param> 
    </param> 
</mapEntry> 
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider"> 
    <param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch"> 
    <param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib"> 
     <param hint="name">pt-BR</param> 
    </param> 
    </param> 
    <param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
    <param desc="defaultAnalyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.Contrib.BrazilianAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
     <param hint="version">Lucene_30</param> 
    </param> 
    </param> 
</mapEntry> 
<mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider"> 
    <param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch"> 
    <param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib"> 
     <param hint="name">cs-CZ</param> 
    </param> 
    </param> 
    <param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
    <param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers"> 
     <param hint="version">Lucene_30</param> 
    </param> 
    </param> 
</mapEntry> 
<mapEntry>... 

처럼 보인다 그리고는 OU에 (패치해야 예) 두 번째 노드의 defaultAnalyzer. 하지만 두 번째 노드는 실제 환경에 있지 않습니다. SECOND,하지만 세 번째, 일곱 번째 일 수 있습니다. ... "mapEntry"노드를 찾아야 할 것입니다. 나는이

<map hint="list:Add"> 
    <!-- Patch analyzer for Czech language --> 
    <mapEntry type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider"> 
     <param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
      <param desc="defaultAnalyzer" type="Lucene.Net.Analysis.Cz.CzechAnalyzer, Lucene.Net.Contrib.Analyzers"> 
       <patch:attribute name="type">MySolution.MetroAsciiFoldingAnalyzer, MySolution</patch:attribute> 
      </param> 
     </param> 
    </mapEntry> 
</map> 

를 사용하는 경우

그것은 첫 번째 노드 패치됩니다.

Select node based on child node value in Web.config Transform과 비슷한 것을 찾았지만 전체 하나의 노드를 내 사용자 지정 노드로 바꾸 겠지만 .... 필요한 것입니까?

답변

4

당신이 변환을, 그리고 당신이 Sitecore config patch를 사용하여이 작업을 수행하려고 추정 할 수있는 사용 SlowCheetah에 링크 대답은 ...

당신이 자식 값을 기반으로 노드를 선택하기 때문에

, 당신은을 사용할 수 있습니다 contains은 값을 확인하는 기능입니다. 그러나 특정 노드를 패치 할 수는 있지만 쿼리를 위해 선택할 수는 없습니다. 따라서 본질적으로 전체 노드를 교체해야합니다.

먼저 기존 cs-CZ 항목을 삭제 한 다음 직접 추가하시기 바랍니다. mapEntry 노드를 더 고유하게 만들어야 desc 속성을 추가해야합니다. 그렇지 않으면 첫 번째 일치 (이 경우 ja-JP)를 덮어 씁니다.

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" > 
    <sitecore> 
    <contentSearch> 
     <indexConfigurations> 
     <defaultLuceneIndexConfiguration> 
      <analyzer> 
      <param desc="map"> 
       <map> 

       <mapEntry patch:instead="*[contains(.,'cs-CZ')]"> 
        <patch:delete />     
       </mapEntry> 

       <mapEntry desc="cs-CZ Analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.PerExecutionContextAnalyzerMapEntry, Sitecore.ContentSearch.LuceneProvider"> 
        <param hint="executionContext" type="Sitecore.ContentSearch.CultureExecutionContext, Sitecore.ContentSearch"> 
        <param hint="cultureInfo" type="System.Globalization.CultureInfo, mscorlib"> 
         <param hint="name">cs-CZ</param> 
        </param> 
        </param> 
        <param desc="analyzer" type="Sitecore.ContentSearch.LuceneProvider.Analyzers.DefaultPerFieldAnalyzer, Sitecore.ContentSearch.LuceneProvider"> 
        <param desc="defaultAnalyzer" type="MySolution.MetroAsciiFoldingAnalyzer, MySolution"> 
         <param hint="version">Lucene_30</param> 
        </param> 
        </param> 
       </mapEntry> 

       </map> 
      </param> 
      </analyzer>  
     </defaultLuceneIndexConfiguration> 
     </indexConfigurations> 
    </contentSearch> 
    </sitecore> 
</configuration> 
관련 문제