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