設定パッチ ファイルの例

Current version: 10.1

以下に示すパッチ構文の例は、パッチの適用が Sitecore 設定にどのように影響するかを具体的に説明したものです。どの例でも、まず元の設定、次にパッチ ファイル、最後にパッチ ファイルが Sitecore.config ファイルとマージされた後の設定を示しています。

以下の例を示します。

Sitecore 設定をカスタマイズするには、これらのパッチ構文の例を参考にして Sitecore の構成設定を追加または変更してください。

最初に、patchset の名前空間を宣言してこれらを使用可能にする必要があります。通常、これらの名前空間は、次のようにパッチ ファイルの先頭で <configuration> 設定の一部として宣言します。

RequestResponse
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" 
xmlns:set="http://www.sitecore.net/xmlconfig/set/">
    <sitecore>
        . . . . . 
    </sitecore>
</configuration>

設定のマージ

異なるパッチ ファイルに記述された設定は、パッチ ファイルが処理される順にマージされます。

RequestResponse
<!-- Sitecore.config -->
<settings>
  <setting name="name" value="Aaron" />
</settings>
<!-- /App_Config/Include/file1.config -->
<settings>
  <setting name="city" value="New York" />
</settings>
<!-- /App_Config/Include/file2.config -->
<settings>
  <setting name="country" value="USA" />
</settings>

実行時に使用される設定は次のとおりです。

RequestResponse
<settings>
  <setting name="name" value="Aaron" />
  <setting name="city" value="New York" />
  <setting name="country" value="USA" />
</settings>

特定の要素の前への要素の挿入

特定の要素の前に設定要素を挿入できます。この例では、設定内での test2 の位置にかかわらず、test2 タイプのプロセッサの前にプロセッサを追加します。

RequestResponse
<!-- Sitecore.config -->
<test>
  <processor type="test1" />
  <processor type="test2" />
  <processor type="test3" />
</test>
<!-- Patch file -->
<test>
  <processor type="testA" patch:before = "processor[@type='test2']"/>
</test>

実行時に使用される設定は次のとおりです。

RequestResponse
<test>
  <processor type="test1" />
  <processor type="testA" />
  <processor type="test2" />
  <processor type="test3" />
</test>

特定の要素の後への要素の挿入

既存の要素の後に設定要素を挿入できます。この例では、設定内での test2 の位置にかかわらず、test2 タイプのプロセッサの後にプロセッサを挿入します。

RequestResponse
<!-- Sitecore.config -->
<test>
  <processor type="test1" />
  <processor type="test2" />
  <processor type="test3" />
</test>
<!-- Patch file -->
<test>
  <processor type="testA" patch:after = "processor[@type='test2']"/>
</test>

実行時に使用される設定は次のとおりです。

RequestResponse
<test>
  <processor type="test1" />
  <processor type="test2" />
  <processor type="testA" />
  <processor type="test3" />
</test>

属性の追加または更新

新しい属性を追加、または既存の属性の値を更新できます。指定した属性がすでに存在する場合は、その既存の値がパッチ ファイルの値に置き換えられます。指定した属性が mysite にまだ存在しない場合は、mysite に追加されます。patchset のどちらの名前空間を使用しても、この結果を達成できます。

この例では、domainPath 属性を mysite サイトに追加してその値を /home に設定し、virtualFolder 属性を /sitecore modules/web に変更します。

RequestResponse
<!-- Sitecore.config -->
<sites>
  <site name="mysite" virtualFolder="/"></site>
</sites>

このパッチ ファイルでは、patch 名前空間を使用して属性を変更します。

RequestResponse
<!-- Patch file -->
<sites>
    <site name="mysite" virtualFolder="/">
        <patch:attribute name="domainPath">/home</patch:attribute>
        <patch:attribute name="virtualFolder">/sitecore modules/web</patch:attribute>
    </site>
</sites>

このパッチ ファイルでは、set 名前空間を使用して同じ結果を達成します。

RequestResponse
<!-- Patch file -->
<sites>
    <site name="mysite" virtualFolder="/" set:domainPath="/home" set:virtualFolder="/sitecore modules/web"></site>
</sites>

最終的な結果は、どちらのパッチ ファイルでも同じです。実行時に使用される設定は次のとおりです。

RequestResponse
<sites>
  <site name="mysite" domainPath="/home" virtualFolder="/sitecore modules/web"></site>
</sites>

要素の削除

patch:delete 構文を使用して設定要素を完全に削除できます。削除する要素を正確に識別するため、要素ノードの name 属性を指定する必要があります。その他の属性や内部要素は指定しないでください。

RequestResponse
<!-- Sitecore config -->
<sitecore>
    <element name="a"/>
    <element name="b"/>
    <element name="c"/>
</sitecore>
<!-- Patch file -->
<sitecore>
    <element name="b">
        <patch:delete />
    </element>
</sitecore>

実行時に使用される設定は次のとおりです。

RequestResponse
<sitecore>
    <element name="a"/>
    <element name="c"/>
</sitecore>
注記

patch:delete を使用する際は注意してください。この構文を使用すると、指定した要素とそのすべての属性が完全に削除されます。

要素の値の置換

兄弟要素を挿入するのではなく、選択した要素を置換するには、patch:instead 属性を使用します。patch:before および patch:after とは異なり、この属性を使用すると元のノードまたは要素を完全に置換できます。

構文は次のとおりです。

<processor type="CustomC, CustomA" patch:instead="*[@type='Sc, Sc']" />

RequestResponse
<!-- Sitecore.config -->
<sitecore>
    <element name="a"/>
    <element name="b"/>
    <element name="c"/>
</sitecore>
<-- Patch file -->
<sitecore>
    <element name="d" patch:instead="*[@name='b']"/>
</sitecore>

実行時に使用される設定は次のとおりです。

RequestResponse
<sitecore>
    <element name="a"/>
    <element name="d"/>
    <element name="c"/>
</sitecore>

Do you have some feedback for us?

If you have suggestions for improving this article,