SPEAKテンプレートをそれに依存しているSPEAKアイテムより先にプッシュする方法


解説

この記事では、SPEAKアイテムをSitecoreインスタンスにプッシュするときに、Sitecoreコンテンツのシリアル化の失敗を回避する方法について説明します。

Sitecoreコンテンツのシリアル化(SCS)では、シリアライズされたSPEAKアイテムをSitecoreインスタンスにインポートするときに、最初にテンプレートをプッシュする必要があります。

SPEAKのルート アイテムとその子孫およびSPEAKテンプレートが削除された後で、SPEAKアイテムを最初から復元する場合は注意が必要です。これらのアイテムが過去にすでにシリアル化されている場合、この時点での復元は失敗します。

解決策

SPEAKテンプレートに依存しているどのアイテムよりも先に、そのテンプレートを確実にプッシュするには、以下の手順を実行してください。

  1. Project.module.jsonファイルを開きます。
  2. SPEAK_Templatesノードを、プッシュするSPEAKアイテムのリストの一番上に移動します。
    { 
    "namespace": "Project",
    "resources": ["*/*.json"],
    "items": {
    "includes": [
    {
    "name": "SPEAK_Templates",
    "path": "/sitecore/client/Speak/Templates"
    },
    {
    "name": "SPEAK_Layouts",
    "path": "/sitecore/client/Speak/Layouts"
    },
    {
    "name": "SPEAK_System",
    "path": "/sitecore/client/Speak/System"
    }
    ]
    }
    }
  3. Project.module.jsonファイルを保存します。
  4. SCSを使用してSPEAKアイテムをSitecoreインスタンスにプッシュします。

SPEAKアプリケーションのアイテム

SPEAKアプリケーションとそのアイテムにも同じ問題が存在しますが、同じ解決策で解決できます。 Project.module.jsonファイルで、SPEAK_APP_TemplatesノードをプッシュするSPEAKアプリケーションのアイテムのリストの一番上に移動します。

{
"namespace": "Project",
"resources": ["*/*.json"],
"items": {
"includes": [
{
"name": "SPEAK_APP_Templates",
"path": "/sitecore/client/Sitecore/Applications/Examples/OM/Templates",
"database": "core"
}
,
{
"name": "SPEAK_APP_ExistingOrders",
"path": "/sitecore/client/Sitecore/Applications/Examples/OM/Fake Data",
"database": "core"
},
{
"name": "SPEAK_APP_Pages",
"path": "/sitecore/client/Sitecore/Applications/Examples/OM/Pages",
"database": "core"
}
]
}
}