Sitecoreコンテンツ シリアル化の構造の概要
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
Sitecoreインスタンスとの間でコンテンツ アイテムをシリアル化するには、Sitecoreコンテンツ シリアル化 (SCS) システムを使用します。これは、含めるコンテンツ項目と除外するコンテンツ項目、およびコンテンツ項目に対して実行する操作を構成することによって行われます。
SCSシステムは、コンテンツ項目をYAMLファイルとしてプロジェクトフォルダにシリアル化します。デフォルトのパスはモジュールファイルに対する相対パス \serializationですが、任意のパスへの 相対シリアル化パスを構成できます 。
プロジェクト設定ファイル
プロジェクト設定ファイルの名前はsitecore.jsonです。これには、関連するSitecoreコンテンツ シリアル化モジュールを参照するmodulesプロパティなど、いくつかのプロパティがあります。
最も単純な形式のプロジェクト構成は、次のようになります。
{
"$schema": "./.sitecore/schemas/RootConfigurationFile.schema.json",
"modules": [ "src/*/*.module.json" ]
}
手動および自動シリアル化
シリアル化は、手動または自動で行うことができます。
-
手動シリアル化は、オンデマンドでSitecoreインスタンスとの間でコンテンツ アイテムをプッシュまたはプルする場合に使用します。
-
CLIとSVSを使用して、watchコマンドを有効にできます。これにより、Sitecoreの変更が監視され、シリアル化されたアイテムが自動的にディスクにプルされます。
コンテンツアイテムを含める場合と除外する場合
シリアル化するコンテンツ項目のサブセットをincludesとrulesで選び出します。これは、コンテンツ項目ツリーの特定の部分のシリアル化を繰り返す場合に便利です。
シリアル化に含めるコンテンツ項目と除外するコンテンツ項目を、Project.module.jsonなどのモジュールファイルで設定します。シリアル化構成は、すべてのモジュール ファイルに配置およびoverrideできます。
コンテンツ項目は、すべてのモジュールに一度だけ含まれます。
各インクルードには、ファイル システム内のフォルダー名となるnameプロパティと、コンテンツ項目ツリーのシリアル化する部分を指定するpathプロパティが必要です。
たとえば、コンテンツ項目ツリー全体をファイルシステム内のserialization\content\ フォルダにシリアル化するには、これをProject.module.jsonファイルに追加し、sitecore ser pullコマンドを実行します。
"items": {
"includes": [
{
"name": "content",
"path": "/sitecore/content/home"
}
]
}
インクルードの順序は重要です。コンテンツアイテムが同じモジュール内のテンプレートに依存している場合は、テンプレートインクルードを最初に指定する必要があります。
インクルード プロパティとルール プロパティの完全なリストについては 、Sitecore Content Serialization設定リファレンス を参照してください。
インクルード プロパティは、root nameやroot pathのように、rootプロパティと呼ばれます。
準則
ルールは、コンテンツ項目ツリーのシリアル化を構成するために使用されます。ルールは、ルート パスを基準とした相対パス、影響を与えるコンテンツ項目の範囲、および許可されるプッシュ操作に対する変更を使用して構成します。
たとえば、/sitecore/content/home/products/ パスとそのすべての子孫 ( legacy/ パスを除く) を同期する場合は、次のようなインクルードを追加します。
"items": {
"includes": [
{
"name": "content",
"path": "/sitecore/content/home",
"rules": [
{
"path": "/products/legacy",
"scope": "ignored"
},
{
"path": "/products",
"scope": "ItemAndDescendants",
"allowedPushOperations": "createUpdateAndDelete"
},
{
"path": "*",
"scope": "ignored"
}
]
}
]
}
ルールシステムはfirst-match-winsの原則に従って機能し、コンテンツアイテムがルールに一致すると、後続のすべてのルールが無視されます。
-
最初のルールは、/sitecore/content/home/products/legacyパス内のすべてのコンテンツアイテムを無視するようにSCSに指示します。
-
2番目のルールは、/sitecore/content/home/productsパス内のすべてのコンテンツアイテムをシリアル化するようにSCSに指示します。スコープがItemAndDescendantsであるため、すべてのサブコンテンツ アイテムが含まれています。
-
3番目のルールは、SCSがこれ以上 /sitecore/content/homeコンテンツ項目をシリアル化しないようにします。このルールのワイルドカード パスは、前のルールに一致しないすべてのコンテンツ項目に一致し、ignoredスコープはそれらのシリアル化を防ぎます。
ルールを設定する際には、以下の点に注意してください。
-
ルールパスをオーバーラップさせないでください。または、その場合は、最も具体的なルールを最初に置く必要があります。
-
親のパスのルールは、子パスと子孫パスのルールよりも優先されます。
-
ルールのスコープは、ルート スコープよりも包括的にすることはできません。たとえば、ルート スコープがItemAndChildrenの場合、ルールのスコープをItemAndDescendantsにすることはできません。
-
ルールのaliasプロパティは、この特定のルールのルートnameプロパティ (ファイル システム内のフォルダ名) を置き換えます。
-
aliasプロパティをignored値を持つscopeプロパティand構成した場合は、スコープが使用されます。無視されるスコープが設定されたコンテンツ項目は、エイリアスの影響を受けません。
設定可能なすべてのルール プロパティについては 、Sitecore Content Serialization設定リファレンス を参照してください。
SCSパッケージ内のフィールドの除外
除外フィールド機能は、CLI 4.0以降で使用できます。
シリアル化からフィールドを除外するには、sitecore.json設定ファイルおよび任意の*modules.json fileでフィールドを指定します。
同期操作では、除外されたフィールドは常に無視されます。そのため、Sitecoreでこれらのフィールドを変更しても、CLIは変更を検出しず、データをプッシュしても上書きされません。YAMLファイル内のフィールドを除外した場合、含まれているフィールドが変更された後、またはその除外を手動で削除してpull操作を実行した場合にのみ、フィールドが削除されます。
excludedFieldsプロパティには、除外されたフィールドの配列と、fieldIdとdescriptionの2つのプロパティが含まれています。
CLIコマンドpackage、watch、diffの除外フィールドも設定できます。