コンテンツシリアライズの設定

日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecore Content Serializationを有効にするには、Sitecore CLI Serialization Pluginをインストールしてシリアライズコマンドを有効にし、プロジェクトファイルを設定する必要があります。

シリアライズコマンド

コンテンツシリアライゼーション操作を行うには、Sitecore CLI内の一連の シリアライズコマンド およびサブコマンドを使用します。

これらのコマンドを使用するには、Sitecore CLI Serialization Pluginをインストールする必要があります。これはserializationコマンドを提供することでCLIを拡張します。

コンテンツシリアライズの設定

Sitecore Content Serialization(SCS)は、プロジェクトおよびモジュールファイルを通じて構成され、どのコンテンツ項目を含めるか、どの項目を除外するか、またどの操作を行うかを定義します。

SCSシステムはコンテンツ項目をプロジェクトフォルダにYAMLファイルとしてシリアライズします。デフォルトパスはモジュールファイルに対して相対的に \serializationですが、任意のパスに対して 相関的なシリアライズパスを設定 できます。

構成はプロジェクトの構成ファイル(sitecore.json)とプロジェクトのモジュールファイル(例: Project.module.json)の2レベルで行われます:

プロジェクト設定ファイル

プロジェクト設定ファイルはsitecore.jsonと名付けられています。関連するSitecore Content Serializationモジュールを参照するmodulesプロパティを含むいくつかのプロパティを持っています。

プロジェクトの最も単純な形での構成は次のようになります。

{ "$schema": "./.sitecore/schemas/RootConfigurationFile.schema.json", "modules": "src/*/*.module.json" }

コンテンツの含め方と除外

イン クル スや ルールで連続化のためにコンテンツのサブセットを選びます。これはコンテンツツリーの特定の部分の連続化を繰り返し行うのに役立ちます。

Project.module.jsonのようなモジュールファイルで、内容項目のシリアライズに含まれるか、または除外するかを設定します。すべてのモジュールファイルでシリアライゼーション設定を配置・オーバーライドできます。

!注コンテンツアイテムはすべてのモジュールで一度だけ含まれます。

各includeには、ファイルシステム内のフォルダ名となるnameプロパティと、コンテンツアイテムツリーのどの部分をシリアライズするかを指定するpathプロパティが必要です。

例えば、コンテンツアイテムツリー全体をファイルシステムのserialization\content\ フォルダにシリアライズするには、これをProject.module.jsonファイルに追加し、sitecore ser pullコマンドを実行します。

"items": { "includes": { "name": "content", "path": "/sitecore/content/home" }

}

!重要インクルスの順番は重要です。もしコンテンツ項目が同じモジュール内のテンプレートに依存している場合、テンプレートの含め方が最優先でなければなりません。

含まれるプロパティおよびルールプロパティの完全なリストについては、Sitecore Content Serialization設定リファレン スを参照してください。

!注インクルーツプロパティは ルート プロパティと呼ばれ、ルート ルートパスのように言われます。

ルール

ルールはコンテンツ項目ツリーのシリアライズを設定するために使われます。ルールはルートパス、影響を与えるコンテンツ項目の範囲、許可されたプッシュ操作の変更に基づいて設定します。

例えば、/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" }

}

}

ルールシステムは「 先勝 制」の原則に基づいており、コンテンツがルールに合致すると、その後のすべてのルールは無視されます。

  • 最初のルールは、SCS /sitecore/content/home/products/legacy パス内のすべてのコンテンツ項目を無視するように指示します。
  • 2つ目のルールは、SCS /sitecore/content/home/products パス内のすべてのコンテンツ項目をシリアライズするよう指示します。すべてのサブコンテンツは、範囲が ItemAndDescendantsされているため含まれています。
  • 三つ目のルールは、これ以上はコンテンツ /sitecore/content/home をシリアライズするSCS禁止です。このルールのワイルドカードパスは、前のルールで一致しないすべてのコンテンツ項目と一致し、 ignored スコープによってシリアル化されません。

ルールを設定する際には以下の点を念頭に置いてください:

  • ルールの経路が重複しないようにしましょう。あるいは、もしそうなら、最も具体的なルールを最初に設定しなければなりません。
  • 親のパスのルールは、子供や子孫のパスのルールを上書きします。
  • ルールスコープはルートスコープ以上に包括的ではありません。例えば、ルートスコープが ItemAndChildrenの場合、ルールスコープは ItemAndDescendantsできません。
  • ルール内の alias プロパティは、この特定のルールのルート name プロパティ(ファイルシステム内のフォルダ名)を置き換えます。
  • aliasプロパティscopeプロパティをignored値で設定している場合、スコープが使われます。無視対象のコンテンツはエイリアスの影響を受けません。

すべての設定可能なルールプロパティについては、Sitecore Content Serialization Configuration Referenceを参照してください。

SCSパッケージ内のフィールドの除外

!注除外フィールド機能はCLI 4.0以降から利用可能です。

sitecore.json設定ファイルや任意の*modules.json fileで指定することで、シリアライズからフィールドを除外できます。

!注同期操作は常に除外されたフィールドを無視します。つまり、Sitecoreでこれらのフィールドを変更しても、CLIは変更を検知せず、データをプッシュしても上書きされません。YAMLファイルに除外欄がある場合、それらは含まれるフィールドの変更後か、手動で除外を削除してpull操作を行う場合にのみ削除されます。

excludedFields性質は、2つの性質を持つ除外フィールドの配列を含みます

CLIコマンドの除外フィールドをpackage、watch、diff設定することもできます。

この記事を改善するための提案がある場合は、 お知らせください!