Summer ’19 リリース以前 (API バージョン 45.0 以前) は、Network、CustomSite、SiteDotCom メタデータ型を組み合わせてコミュニティサイトを定義していました。ただし、SiteDotCom のメタファイルが人間の判読できないバイナリファイルなので、多人数開発(資源のマージが必要)またはサイト移行の際に、ほとんど使えないとの問題があり、その後ExperienceBundleの登場でこの問題が解消されました。
ExperienceBundleとはサイト資源を人間判読可能なメタデータファイル(普通のメタデータファイルに似てる)として管理しサイトの開発と移行に便利です。
参考:Salesforce Developers
##①メタデータ API でサイト資源(ExperienceBundle)の取得方法
1.「設定」からExperienceBundleを有効化します。
2.VSCodeで対象資源定義のpackage.xmlファイルを作成します。
※CustomSite、NetworkとExperienceBundleの三つが必要ですが、必要に応じてその他資源(上記例のNavigationMenu)追加の場合もあります。
【注意】:SiteDotComを使用しないこと
3.資源を取得します。
package.xmlファイルを右クリックし、「SFDX:マニフェストファイルのソースを組織から取得」でサイト資源一式が取得できます。
【注意】:うまく取得できない場合、上記図の通り、手動でexperiences(force-app\main\default\experiences)フォルダを作成してから再度試してください。
4.取得した資源を確認します。
下記とおり、資源(ExperienceBundle)が取得できました。
##②Salesforce DXでスクラッチ開発方式を使用したExperienceBundleの取得方法
スクラッチ開発方式の場合、手順が下記になります。
1.スクラッチ組織定義ファイル(project-scratch-def.json)に下記を追加します。
"features": ["COMMUNITIES"], "settings": { "experienceBundleSettings": { "enableExperienceBundleMetadata": true }, "communitiesSettings": { "enableNetworksEnabled": true } }
これでスクラッチ組織を作成するとExperienceBundleが自動的に有効になります。
2.sfdxコマンド(force:source:push,force:source:pull)でサイト資源のデプロイと取得ができます。
※force:source:pushで資源をデプロイするとサイトの作成と有効化が自動的に行われます。
##③ExperienceBundleでサイトデプロイと移行の注意点
- メタデータ API でデプロイの際、package.xmlにCustomSite、NetworkとExperienceBundleの三つを設定しておけば、コミュニティサイトの作成と有効化が自動的に行われるので手動で行う必要がありません。
- 2回目以降のデプロイではサイトの再作成が必要ないので、package.xmlに必要な資源だけ(例:ExperienceBundleだけ)を定義すればOKです。