1. Sitecoreコンテンツシリアライズ

Sitecoreコンテンツシリアライゼーションの構造概要

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

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

Sitecore Content Serialization(SCS)システムを使って、Sitecoreインスタンス内でコンテンツ項目をシリアライズします。これは、どのコンテンツ項目を含めるか、どれを除外するか、そしてそれらのコンテンツに対してどの操作を行うかを設定することで行われます。

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

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

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

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

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

手動および自動のシリアライズ

手動または自動でシリアライズできます:

  • Sitecoreインスタンスに対して、またはデマンドでコンテンツをプッシュまたはプルしたいときは手動のシリアライゼーションを使います。

  • CLIやSVSを使ってwatchコマンドを有効にすることができます。これによりSitecoreの変更を監視し、シリアライズされたアイテムを自動的にディスクに引き出します。

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

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

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

注記

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

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

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

"items": {
  "includes": [
    {
      "name": "content",
      "path": "/sitecore/content/home"
    }
  ]
}
大事な

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

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

注記

包含プロパティはrootプロパティと呼ばれ、root nameroot pathのように。

ルール

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

例えば、/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原則に基づいており、コンテンツ項目がルールに一致すると、その後のすべてのルールは無視されます。

  • 最初のルールは、SCS /sitecore/content/home/products/legacyパス内のすべてのコンテンツ項目を無視するように指示します。

  • 2つ目のルールは、SCS /sitecore/content/home/productsパス内のすべてのコンテンツ項目をシリアライズするよう指示します。すべてのサブコンテンツは、範囲がItemAndDescendantsされているため含まれています。

  • 三つ目のルールは、これ以上はコンテンツ /sitecore/content/homeをシリアライズするSCS禁止です。このルールのワイルドカードパスは、前のルールで一致しないすべてのコンテンツ項目と一致し、ignoredスコープによってシリアル化されません。

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

  • ルールの経路が重複しないようにしましょう。あるいは、もしそうなら、最も具体的なルールを最初に設定しなければなりません。

  • 親のパスのルールは、子供や子孫のパスのルールを上書きします。

  • ルールスコープはルートスコープ以上に包括的ではありません。例えば、ルートスコープがItemAndChildrenの場合、ルールスコープはItemAndDescendantsできません。

  • ルール内のaliasプロパティは、この特定のルールのルートnameプロパティ(ファイルシステム内のフォルダ名)を置き換えます。

  • aliasプロパティandscopeプロパティにignored値を設定している場合、スコープが使われます。無視対象のコンテンツはエイリアスの影響を受けません。

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

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

注記

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

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

注記

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

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

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

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