将 Experience Cloud 站点从沙盒部署到生产环境

我们建议在测试中创建、自定义和测试您的 Experience Cloud 站点 环境,例如沙盒,然后再将其部署到生产组织。当测试是 完成时,您可以使用更改集或元数据 API 将站点从一个组织迁移到另一个组织。 决定是使用变更集还是 MD API 取决于几个因素。需要考虑的一些事项 是要迁移的更改的复杂性,还是您对开发人员的满意程度 工具,以及您正在使用的应用程序生命周期管理 (ALM) 模型。

提示

要了解有关可用的 ALM 模型和开发选项的更多信息,请执行以下操作: 查看确定哪个应用程序生命周期 管理模式非常适合您在 Trailhead 上。

注意

Lightning Bolt 解决方案不适合在 组织。使用 Lightning Bolt 解决方案在 AppExchange 上共享或销售解决方案,或实施 具有交钥匙解决方案或新外观的网站。

更改集

如果您更习惯使用点击式工具,那么更改集就是您的部署 朋友。更改集表示组织(或元数据组件)中的一组自定义项 您可以部署到连接的组织。

您可以使用声明性工具管理应用程序。您不必使用命令行 接口或版本控制系统,以满足您的定制需求。您可以使用“设置”菜单 在开发环境中创建更改。然后,将更改迁移到 环境,在您完成 ALM 步骤时。

发布工件是一组相对于生产组织中的内容的元数据更改。 发布的只是已添加或更改的元数据,如果它没有更改,则它是 不在版本中。

元数据 API

如果您能够快速掌握元数据 API,并且对代码世界更熟悉,请使用元数据 用于以编程方式部署更改的 API。您可以检索、部署、创建、更新和删除 组织的自定义信息,例如 Experience Cloud 站点、自定义对象 定义和页面布局。

当您的更改很复杂或需要更严格的更改时,使用元数据 API 是理想的选择 变更管理流程和审计流程(或版本控制系统)来管理多个 工作流。

与更改集过程一样,您创建的发布工件是一组元数据 相对于生产组织的变化。

提示

某些 Experience Cloud 站点设置和功能尚不受支持 元数据 API,因此您必须在环境之间手动迁移它们。请记住跟踪这些 更改,以便您不会忘记迁移它们。

  • 使用更改集
    部署 Experience Cloud 站点 使用更改集在具有部署连接的相关组织之间移动全部或部分 Experience Cloud 站点。您可以使用网络组件类型移动任何完整的 Experience Cloud 站点。或者,您可以使用“数字体验”组件类型移动增强型 LWR 站点的部分站点内容。
  • 使用元数据 API 部署 Experience Cloud 站点 使用元数据 API
    将 Experience Cloud 站点从一个 Salesforce 组织移动到另一个组织。在测试环境中设置和测试站点,然后检索站点的数据并将其部署到生产组织。
  • Experience Builder 站点的 ExperienceBundle ExperienceBundle 元数据类型提供构成 Experience Builder 站点
    的不同设置和组件(如页面、品牌集和主题)的基于文本的表示形式。无论是您自己的组织,还是咨询合作伙伴或 ISV,您都可以使用首选开发工具(包括 Salesforce Extensions for VS Code、Salesforce CLI 或您喜欢的 IDE 或文本编辑器)以编程方式快速更新和部署站点。
  • 从24年冬季开始,在迁移到增强型LWR站点时避免部署问题,您无法再禁用23年冬季首次引入的增强型站点
    和内容平台。因此,默认情况下,从 LWR 模板创建的任何站点现在都是增强的 LWR 站点。与使用 ExperienceBundle 元数据类型的非增强型 LWR 站点不同,增强型 LWR 站点使用 DigitalExperienceBundle 和 DigitalExperienceConfig 类型。但是,如果您在 24 年冬季之前在源组织(如沙盒)上创建了非增强型 LWR 站点,并且现在希望首次将该站点部署到目标组织(如生产),则元数据类型的这种差异可能会导致部署问题。
  • 部署经过身份验证的 LWR 站点
    的注意事项 从 23 年冬季开始,通过 Experience Builder 或 Connect API 创建的新 LWR 站点在其 URL 末尾不包含 /s。在 23 年冬季之前创建的经过身份验证的 LWR 站点的 URL 仍包含 /s,如果沙盒和生产 URL 不匹配,则此 URL 结构更新会影响部署。了解支持哪些部署方案,以及如何解决与 /s 相关的不受支持的部署错误。

使用更改集部署 Experience Cloud 站点

使用更改集在相关组织之间移动全部或部分 Experience Cloud 站点 具有部署连接。您可以使用 Network 组件类型来移动任何完整的 Experience Cloud 站点。或者,您可以使用“数字体验”组件类型移动部分站点 增强型 LWR 站点的内容。

  • 使用更改集
    部署完整的 Experience Cloud 站点 使用更改集在具有部署连接的相关组织(例如沙盒和生产组织)之间移动 Experience Cloud 站点。在测试环境中创建、自定义和测试站点,然后在测试完成后将站点迁移到生产环境。
  • 使用更改集
    部署部分 Experience Cloud 站点内容 使用更改集在具有部署连接的相关组织(例如沙盒和生产组织)之间移动各个 Experience Cloud 组件和内容。在测试环境中创建和测试更改,然后在准备就绪时仅将这些更改迁移到生产环境。
  • 部署具有更改集
    的 Experience Cloud 站点的注意事项 在迁移具有更改集的 Experience Builder 或 Salesforce 选项卡 + Visualforce 站点时,请记住以下注意事项和限制。

使用更改集部署完整的 Experience Cloud 站点

使用更改集在具有 部署连接,例如沙盒和生产组织。创建、自定义和测试 测试环境中的站点,然后在测试时将站点迁移到生产环境 完成。

用户权限 需要
要自定义或发布 Experience Cloud 站点,请执行以下操作:创建和设置体验
若要编辑部署连接并使用入站更改集,请执行以下操作:部署更改集并修改所有数据注意如果用户 仅需要访问部署的元数据,则可以启用修改 元数据:通过元数据 API 函数权限。此权限提供以下 用户部署所需的访问权限,而无需提供对组织数据的访问权限。 有关详细信息,请参阅《通过元数据 API 函数权限修改元数据》中的 “修改元数据” Salesforce 帮助。
要使用出站更改集,请执行以下操作:创建和上载更改集,创建 AppExchange 软件包,并上传 AppExchange 软件包

您可以使用更改集来移动完整的 Experience Builder 和 Salesforce 选项卡 + Visualforce 使用网络组件类型的站点。

  1. 在首选测试组织(如沙盒)中创建和测试站点。
  2. 在测试组织的“设置”中,在 “快速查找”框,然后选择“出站更改集”。
  3. 创建更改集,然后单击“更改集组件”中的“添加” 部分。
  4. 选择“网络”组件类型,选择您的站点,然后选择 单击添加到更改集
  5. 若要添加依赖项,请单击“查看/添加依赖项”。我们 建议选择列出的所有依赖项。提示
    • 对于链接到标准对象的导航菜单,自定义列表视图不是 作为依赖项包含在内。手动将自定义列表视图添加到更改中 列表。
    • 手动添加“管理”|”成员
    • 依赖项列表有两个 Site.com items— 和 . 保存您可以设置的各种 Visualforce 页面 在 Experience Workspaces 的管理中。 包括 Experience Builder 中的页面。MySiteNameMySiteName1MySiteNameMySiteName1
  6. 单击“上传”,然后选择您的目标组织,例如 生产。确保目标组织允许入站连接。入站和出站 组织必须具有部署连接。
  7. 从“设置”中,选择“入站更改集”并查找更改集 您从源组织上传的。
  8. 验证并部署更改集,使其在目标组织中可用。警告当您部署入站更改集时,它会覆盖 目标组织。
  9. 手动重新配置目标组织站点中任何不受支持的项目。
  10. 为您的网站添加数据,并对其进行测试以确保一切按预期工作。 然后发布您的更改以上线。

使用更改集部署部分 Experience Cloud 站点内容

使用更改集在 具有部署连接的相关组织,例如沙盒和生产组织。创造 并在测试环境中测试更改,然后在以下情况下仅将这些更改迁移到生产环境 他们已经准备好了。

所需的用户权限
要自定义或发布 Experience Cloud 站点,请执行以下操作:创建和设置体验
若要编辑部署连接并使用入站更改集,请执行以下操作:部署更改集并修改所有数据注意如果用户只需要访问元数据 对于部署,您可以启用通过元数据修改元数据 API 函数 许可。此权限为此类用户提供了部署所需的访问权限,而无需 提供对组织数据的访问。有关详细信息,请参阅“通过元数据 API 修改元数据 Salesforce 帮助中的“Functions 权限”。
要使用出站更改集,请执行以下操作:创建和上传更改集,创建 AppExchange 包,以及上传 AppExchange 包

23 年冬季创建的增强型 LWR 站点可使用更改集进行部分部署 和以后。

您可以使用更改集移动使用数字 Experience Builder 站点的部分内容 体验组件类型。

  1. 在首选测试组织(如沙盒)中创建和测试站点。
  2. 在测试组织的“设置”中,在“快速查找”框中,输入“出站更改” 集,然后选择“出站更改集”。
  3. 创建更改集,然后单击“更改集组件”中的“添加” 部分。
  4. 选择“数字体验”组件类型。
  5. 从组件列表中选择要部署的内容,然后单击“添加到更改集”。提示
    • 要确定每个列出的组件属于哪个增强型 LWR 站点,请使用类型 列。Type 列使用命名约定 site/。MySiteName
    • 若要标识每个列出的组件所代表的内容,请使用“名称”列。名称 列使用命名约定 sfdc_cms__<contentType>/<contentName>。例如 名称 sfdc_cms__brandingSet/Build_Your_Own_LWR 表示名为 Build Your 的品牌集 拥有轻水堆。
  6. 单击“上传”,然后选择您的目标组织,例如生产组织。确保目标组织允许入站连接。入站和出站组织 必须具有部署连接。
  7. 从“设置”中,选择“入站更改集”,然后找到 您从源组织上传。
  8. 验证并部署更改集,使其在目标组织中可用。警告部署入站更改集时,它将覆盖相应的站点 目标组织中的内容。
  9. 手动重新配置目标组织站点中任何不受支持的项目。
  10. 为确保一切正常,请测试您的网站。然后发布更改 上线。

部署具有更改集的 Experience Cloud 站点的注意事项

迁移 Experience Builder 或 Salesforce 选项卡 + 带有更改集的 Visualforce 站点。

常规

  • 当您部署入站更改集时,它会覆盖 目标组织。因此,尽管不能使用更改集删除组件,但可以删除 Experience Builder 站点中的页面。例如,假设您从 沙盒中的Experience Builder站点,然后创建更新的出站更改集。什么时候 在目标组织(如生产组织)中重新部署更改集时,页面也 在那里删除了。
  • 如果您更新 Experience Cloud 站点模板,请确保您还更新了 在部署更改集之前定位组织。
  • 您无法部署到使用早期发行版的目标组织。例如 如果您的源组织位于 Summer ’19(API 版本 46.0)上,则无法部署到目标组织 在 Spring ’19 上(API 版本 45.0)。

管理

管理设置位于 Experience Workspaces 中。

  • 请记住添加“管理”|”成员添加到出站更改集。它们不会自动包含在内 依赖。
  • 对于在 17 年夏季版本之前在沙盒组织中创建的 Experience Cloud 站点,您 必须在迁移之前重新保存管理设置才能成功传输这些设置。
  • 在目标组织中发布站点之前,更改密码的设置会忘记 “密码”、“主页”、“自助注册”和“登录”页面似乎将恢复为默认值 值。
  • 要更新“会员”区域和“登录和注册”区域中的设置,您必须 在单独的更改集中部署更改。首先更新和部署“成员”区域 设置,然后更新和部署“登录和注册”设置。

导航菜单

导航菜单组件在 Experience Builder 站点中可用。

  • 对于链接到对象的菜单项,列表视图将重置为默认列表视图。 此外,标准对象的自定义列表视图不作为依赖项包含在内。
  • 部署带有其他菜单项的导航菜单会删除所有翻译 应用于目标环境中的现有菜单项。

建议

  • 不支持对建议名称的更新。如果更改 建议 在之前迁移过它的源组织中,目标组织会处理它 作为一项新的建议。
  • 不支持推荐图像。
  • 当您部署入站更改集时,它会覆盖目标组织的计划更改集 来自源组织的建议的建议。

增强型 LWR 站点的部分部署

  • 部分站点内容部署可用于增强的 LWR Experience Cloud 站点 创建于 23 年冬季或之后。
  • 若要部署部分网站内容,请确保目标组织包含现有网站 与源站点同名。
  • 将数字体验组件添加到出站更改集还会添加 组件到更改集的变体。例如,添加主视图组件 自动添加“主页”视图的所有翻译。

不支持的设置和功能

不支持以下项目。在部署入站更改集后手动添加它们。

  • 导航和特色主题
  • 观众 针对
  • 仪表板和参与度
  • 推荐图片
  • Experience Builder 中的品牌面板图像
  • Experience Workspaces中的以下管理设置:
    • “登录和注册”的“注册”部分中的“帐户”字段 面积
    • 选择要显示的登录选项选项 “登录和注册”区域的“登录”部分
    • “设置”区域
    • “富发布者应用”区域

使用元数据 API 部署 Experience Cloud 站点

使用元数据 API 将您的 Experience Cloud 站点从一个 Salesforce 组织移动到 另一个。在测试环境中设置和测试站点,然后检索站点的 数据并将其部署到您的生产组织。

根据网站框架的不同,以下元数据类型组合在一起以定义 网站。若要成功迁移站点,请使用元数据 API 检索调用来检索 org 的组件。网络表示 Experience Cloud 站点。包含管理设置,例如 作为页面覆盖、电子邮件和成员资格配置。定制网站包含域和页面设置信息,包括 indexPage、siteAdmin 和 URL 定义。DigitalExperienceBundle 和 DigitalExperienceConfig 或 ExperienceBundle  SiteDotCom所需的元数据类型因网站类型而异。代表 不同的设置和组件,例如页面、品牌集和 主题,构成一个网站。

对于冬季推出的增强型轻水堆站点 ’23(API 版本 56.0)、DigitalExperienceBundle 和 DigitalExperienceConfig 组合以提供基于文本的表示形式 您的网站元素和设置,但重新构想了更多 以内容为中心的结构。您可以检索可编辑的站点元数据,以及 以编程方式快速创建、更新、发布和部署网站。你 还可以部分部署增强型轻水堆站点。

对于非增强型轻水堆 站点,ExperienceBundle 提供基于文本的表示形式 站点的设置、页面和组件。您可以检索可编辑的网站 元数据,并快速创建、更新、发布和部分部署 以编程方式访问网站。

对于 Aura 站点,您可以选择使用 ExperienceBundle 或 SiteDotCom,但我们建议使用 体验捆绑包。在 Summer ’19(API 版本 45.0 及更早版本)之前, Network、CustomSite 和 SiteDotCom 元数据类型组合在一起以定义 光环网站。但是,检索 SiteDotCom 类型会生成人类不可读的二进制 .site 文件。请参阅 Experience Builder 站点的 ExperienceBundle。

为 Visualforce 站点,网络代表站点。

有关这些元数据类型的其他信息以及有关迁移的说明 data,请参阅元数据 API 开发 人员 指南和 Salesforce CLI 命令 参考资料。

所需元数据类型一目了然

用于部署网站的元数据类型因网站类型而异。

必需的元数据类型增强型 LWR 站点轻水堆站点Aura 站点Visualforce 网站
网络必填必填必填必填
定制网站必填必填必填必填
数字体验捆绑包必填
DigitalExperienceConfig 数字体验配置必填
体验捆绑包必填必填ExperienceBundle  SiteDotCom
网站DotCom必填

提示和注意事项

  • 在将数据迁移到另一个组织之前,请在目标组织中启用数字体验 并输入您在沙盒组织中使用的相同域名,以避免 出现错误。
  • 对于每个 Experience Cloud 站点,网络组件都具有唯一的名称和 URL 路径前缀。检索网络组件时,生成的 XML 文件 name 基于网络的名称。迁移时,API 会查看 文件名,如果存在,则更新站点。如果不存在,则 API 创建站点。如果有人在沙盒中更改了站点名称,然后尝试 要进行迁移,他们会看到一个错误。该 API 正在尝试使用 现有路径前缀。
  • 检查 CustomSite 的 XML 文件,确保所有依赖项都 带过来。如果缺少任何内容,请在 XML 文件中显式说明它们。
  • 除了前面描述的必需组件外,还包括所有 您的网站所需的其他组件。组件可以包括以下项 自定义对象、自定义字段、自定义 Lightning 组件和 Apex 类。
  • 要使用未锁定的软件包部署网络和配置文件组件,请创建一个 为每个组件单独解锁包并单独部署它们。
  • 使用 ExperienceBundle 部署 Aura 站点时,请确保 SiteDotCom 类型不包含在清单文件中。
  • 如果在“管理”|”设置,请确保源站点和目标站点具有匹配的值 用于 Network 组件中的 和 属性。picassoSitesite
  • 如果来宾用户配置文件有任何更改,请将配置文件作为一部分包括在内 的站点迁移。
  • 迁移用户配置文件时,用户将添加到生产中的站点 组织。然后,电子邮件将以与任何新网站相同的方式发送给会员。
  • 在部署过程中,请确保目标组织中的 NavigationMenu 开发人员名称与源中的开发人员名称相同 组织。
  • 如果 containerType 为 CommunityTemplateDefinition,则不能 通过元数据 API 更新现有的 NavigationMenu。
  • 要使用自定义模板部署 Aura 站点,请首先检索并部署 CommunityTemplateDefinition 和相关元数据类型,例如 CommunityThemeDefinition。然后检索并部署 ExperienceBundle 或 SiteDotCom 和相关元数据类型。
  • 部署带有其他菜单项的导航菜单会删除任何 应用于目标环境中现有菜单项的翻译。
  • 若要在移动站点时包含导航菜单,请使用 NavigationMenu 元数据类型。
  • 您无法部署到使用早期发行版的目标组织。为 例如,如果您的源组织使用的是 Summer ’19(API 版本 46.0),则不能 在 Spring ’19(API 版本 45.0)上部署到目标组织。
  • NavigationLinkSet 在 Winter ’20 中已弃用(API 版本 47.0),并替换为 NavigationMenu。
  • ExperienceBundle 不支持跨不同 API 进行检索和部署 版本。如果您尝试从早期版本升级 ExperienceBundle 元数据 API 版本到更高版本,例如,从 API 版本 48.0 到 49.0 – 执行以下步骤:
    1. 将 package.xml 清单文件中的 API 版本设置为 48.0 并部署 包。
    2. 然后,将 package.xml 中的 API 版本设置为 49.0。
    3. 要获取最新的 ExperienceBundle 更新,请检索包。
  • 部署站点时,有时会收到有关无效 ID 的警告消息 值。例如:The topicId property of component 9b8a4e98-e724-4292-bd3c-0813adf9ddc2 references an object with the ID value 0TO4R000000EGPEWA4. Occasionally, when deployed to a destination org, ID values can become invalid—for example, if the referenced ID doesn’t exist in the destination org. If you encounter component issues in your destination org, verify that the ID values are correct.在这些 在这种情况下,您可以成功部署站点,尽管有警告。 但是,我们建议在目标组织中验证对象 ID 组件中引用的仍然有效。如果 ID 不正确,请手动操作 更新 ID 以解决目标组织中的任何组件问题。 或者,如果它是您创建的自定义组件,请考虑 将对象 ID 替换为对象的 API 名称,以避免 将来的问题。

示例模板

以下示例包含您 可以通过元数据进行迁移 应用程序接口。

<?xml version="1.0" encoding="UTF-8"?>
<Network xmlns="http://soap.sforce.com/2006/04/metadata">
    <allowInternalUserLogin>true</allowInternalUserLogin>
    <allowMembersToFlag>true</allowMembersToFlag>
    <allowedExtensions>txt,png,jpg,jpeg,pdf,doc,csv</allowedExtensions>
    <caseCommentEmailTemplate>unfiled$public/ContactFollowUpSAMPLE</caseCommentEmailTemplate>
    <changePasswordTemplate>unfiled$public/CommunityChangePasswordEmailTemplate</changePasswordTemplate>
    </communityRoles>
    <disableReputationRecordConversations>true</disableReputationRecordConversations>
    <emailSenderAddress>admin@myorg.com</emailSenderAddress>
    <emailSenderName>MyCommunity</emailSenderName>
    <enableCustomVFErrorPageOverrides>true</enableCustomVFErrorPageOverrides>
    <enableDirectMessages>true</enableDirectMessages>
    <enableGuestChatter>true</enableGuestChatter>
    <enableGuestFileAccess>false</enableGuestFileAccess>
    <enableInvitation>false</enableInvitation>
    <enableKnowledgeable>true</enableKnowledgeable>
    <enableNicknameDisplay>true</enableNicknameDisplay>
    <enablePrivateMessages>false</enablePrivateMessages>
    <enableReputation>true</enableReputation>
    <enableShowAllNetworkSettings>true</enableShowAllNetworkSettings>
    <enableSiteAsContainer>true</enableSiteAsContainer>
    <enableTalkingAboutStats>true</enableTalkingAboutStats>
    <enableTopicAssignmentRules>true</enableTopicAssignmentRules>
    <enableTopicSuggestions>true</enableTopicSuggestions>
    <enableUpDownVote>true</enableUpDownVote>
    <forgotPasswordTemplate>unfiled$public/CommunityForgotPasswordEmailTemplate</forgotPasswordTemplate>
    <gatherCustomerSentimentData>false</gatherCustomerSentimentData>
    <lockoutTemplate>unfiled$public/CommunityLockoutEmailTemplate</lockoutTemplate>
    <maxFileSizeKb>51200</maxFileSizeKb>
    <networkMemberGroups>
        <permissionSet>MyCommunity_Permissions</permissionSet>
        <profile>Admin</profile>
    </networkMemberGroups>
    <networkPageOverrides>
        <changePasswordPageOverrideSetting>VisualForce</changePasswordPageOverrideSetting>
        <forgotPasswordPageOverrideSetting>Designer</forgotPasswordPageOverrideSetting>
        <homePageOverrideSetting>Designer</homePageOverrideSetting>
        <loginPageOverrideSetting>Designer</loginPageOverrideSetting>
        <selfRegProfilePageOverrideSetting>Designer</selfRegProfilePageOverrideSetting>
    </networkPageOverrides>
    <picassoSite>MyCommunity1</picassoSite>
    <selfRegistration>true</selfRegistration>
    <sendWelcomeEmail>true</sendWelcomeEmail>
    <site>MyCommunity</site>
    <status>Live</status>
    <tabs>
        <defaultTab>home</defaultTab>
        <standardTab>Chatter</standardTab>
    </tabs>
    <urlPathPrefix>mycommunity</urlPathPrefix>
    <welcomeTemplate>unfiled$public/CommunityWelcomeEmailTemplate</welcomeTemplate>
</Network>

示例包 .xml 清单文件

清单文件定义您尝试检索的组件。以下 示例显示了 检索 Experience Builder 站点的所有组件。package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>Network</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomSite</name>
    </types>
    <types>
        <members>*</members>
        <name>ExperienceBundle</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomTab</name>
    </types>
    <types>
        <members>*</members>
        <name>CustomObject</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexComponent</name>
    </types>
    <types>
        <members>*</members>
        <name>Portal</name>
    </types>
    <types>
        <members>*</members>
        <name>Profile</name>
    </types>
    <types>
        <members>*</members>
        <name>Document</name>
    </types>
    <version>46.0</version>
</Package>

适用于 Experience Builder 站点的 ExperienceBundle

ExperienceBundle 元数据类型提供基于文本的不同 构成体验的设置和组件,例如页面、品牌集和主题 建筑商网站。无论是对于你自己的组织,还是咨询合作伙伴或 ISV,你都可以 使用首选开发工具以编程方式快速更新和部署站点, 包括适用于 VS Code 的 Salesforce 扩展、Salesforce CLI 或你喜欢的 IDE 或文本 编辑 器。

在 Summer ’19 版本(API 版本 45.0 及更早版本)之前,Network、CustomSite 和 SiteDotCom 元数据类型组合在一起以定义 Experience Builder 站点。但是,检索 SiteDotCom 类型生成一个非人类的二进制 .site 文件 读。通过检索 ExperienceBundle 类型而不是 SiteDotCom,您可以提取和 以人类可读的格式编辑粒度网站元数据,包含在三级文件夹中 结构。

局限性

  • 不支持托管包。

ExperienceBundle 结构

检索 ExperienceBundle 时,数据存储在三级文件夹结构中。

“体验”文件夹包含每个“体验生成器”的文件夹 组织中的站点。每个文件夹(在本例中customer_service)包含 子文件夹,用于定义站点并表示您在Experience Builder中访问的不同元素。每 子文件夹包含 .json 文件,其中包含可在本地编辑的属性 machine或scratch org,然后部署。site_name让我们仔细看看定义每个Experience Builder站点的文件。

文件夹内容
品牌集branding_set_name.json 定义了 网站的品牌设置属性。
配置site_name.json 定义了一些站点 设置,例如公共访问和渐进式渲染。languages.json 定义支持的语言。loginAppPage.json 和 mainAppPage.json 是单页应用程序 (SPA)。loginAppPage.json 用于需要 login,mainAppPage 用于所有其他页面。一 SPA 是加载单个 HTML 页面的 Web 应用。与传统的不同 网站,包括用户在其中导航的多个页面, SPA 由多个视图组成,这些视图以用户身份动态更新页面 与它交互。
路线每页包含一个名为 page_name.json 的文件,用于定义 URL 以及其他与路由相关的信息。
主题每个主题包含一个名为 theme_name.json 的文件,该文件定义了 主题。
变化每个变体包含一个名为 experienceVariation_name.json 的文件。你 可以使用体验变体来更改体验的默认行为 基于受众的构建器网站,例如品牌、页面变体、组件 可见性或组件属性。
视图每个视图包含一个名为 view_name.json 的文件。每个文件定义一个 SPA 视图,相当于最终用户的页面。视图由区域组成 在呈现的页面中包含其他区域或组件。

提示

在更新 Experience Builder 站点的 .json 文件之前,我们 建议复制站点的文件夹作为备份。

有关 ExperienceBundle 及其包含的文件的完整定义,请参阅元数据 API 开发人员 指南。

启用 ExperienceBundle 元数据类型

为 Aura 站点启用 ExperienceBundle 后,元数据 API 调用 ( 和 ) 和 Salesforce DX 操作 (, , 和 ) 使用 ExperienceBundle 类型,而不是 SiteDotCom。retrievedeploypullpushstatus

如果使用更改集来部署站点,则依赖项列表包括以下两项 键入 Site.com 和 1。1 现在表示 ExperienceBundle 而不是 SiteDotCom。MySiteNameMySiteNameMySiteName

注意

您无需为 LWR 站点启用 ExperienceBundle 元数据类型。轻水堆站点使用 默认为 ExperienceBundle。

  1. 在“设置”中,在“快速查找”框中输入, ,然后选择设置Digital Experiences
  2. 选择启用 ExperienceBundle 元数据 API
  3. 保存更改。

或者,您可以在使用临时组织创建临时组织时启用此功能 定义文件。(请参阅元数据覆盖范围 报告。

{
    "orgName": "Sample Org",
    "edition": "developer",
    "features": [
        "COMMUNITIES"
    ],
    "settings": {
        "experienceBundleSettings": {
            "enableExperienceBundleMetadata": true
        },
        "communitiesSettings": {
            "enableNetworksEnabled": true
        }
    }
}

使用元数据 API 检索和部署 ExperienceBundle

在元数据 API 中,清单文件定义您尝试检索的组件。 此示例显示 使用 ExperienceBundle 而不是 SiteDotCom 检索 Experience Builder 站点。package.xml

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>CustomSite</name>
    </types>
    <types>
        <members>*</members>
        <name>ExperienceBundle</name>
    </types>
    <types>
        <members>*</members>
        <name>Network</name>
    </types>
    <version>46.0</version>
</Package>

检索 .zip 文件后,将其解压缩以访问和编辑文件。

请参阅部署和检索元数据 替换为 Zip 文件。

使用 Salesforce DX 检索和部署 ExperienceBundle

Salesforce 开发人员体验 (DX) 是一组工具,可简化整个 开发生命周期。它改善了团队发展和协作,促进了自动化 测试和持续集成,并使发布周期更加高效和 敏捷。如果您已设置 Salesforce DX 环境,则可以快速:

  • 使用以下命令检索组织中的所有Experience Builder站点sf project retrieve start
  • 使用以下方式部署更新sf project deploy start
  • 使用 或sf project deploy preview sf project retrieve preview
  • 检索可用模板的列表sf community list template
  • 使用以下方法创建站点sf community create
  • 使用sf community publish

如果您不熟悉 Salesforce DX,请查看这些很棒的资源。

避免迁移到增强型 LWR 站点时出现部署问题

从 24 年冬季开始,您无法再禁用增强的网站和内容平台, 它于 23 年冬季首次推出。因此,从 LWR 模板创建的任何站点都是 现在是默认增强的 LWR 站点。与使用 ExperienceBundle 的非增强型 LWR 站点不同 元数据类型,增强的 LWR 站点使用 DigitalExperienceBundle 和 DigitalExperienceConfig 类型。但是,如果您在源组织(如沙盒)上创建了非增强型 LWR 站点 24 年冬季,您现在希望首次将站点部署到目标组织,例如 生产,元数据类型的这种差异可能会导致部署问题。

在这种情况下,我们不是在部署之前在目标组织上创建站点,而是 建议使用部署过程创建站点。否则,如果首先创建 目标组织上的站点,则新站点是增强的 LWR 站点,这意味着它使用 DigitalExperienceBundle 和 DigitalExperienceConfig 类型。并且因为非增强 源组织上的 LWR 站点使用 ExperienceBundle(如果您随后尝试将其部署到目标) org,则由于元数据类型不匹配,部署失败。

但是,假设您在部署之前在目标组织中创建了站点。你能做什么 如何解决部署错误?

由于您无法删除 Experience Cloud 站点,因此我们建议您重命名站点并 更新目标组织中的站点 URL,使其不再与源中的值匹配 组织。此方法释放了部署过程,以便使用 源组织的值。

  1. 在目标组织中,在站点的“管理”工作区的“设置”页上,将 站点,使其与源组织中的站点不同。
  2. 在“设置”的“快速查找”框中,输入“自定义 URL”。
  3. 在“自定义 URL”中,找到网站的两个 URL。每个站点包括:
    • 映射到 ExperienceBundle 或 DigitalExperienceBundle 的 Site.com 社区 URL 和 DigitalExperienceConfig 元数据类型(视情况而定)映射到 CustomSite 的社区 URL
  4. 更改这两个站点 URL,以确保它们不再与 来源组织。
  5. 更新站点名称和 URL 后,使用更改集或 使用首选部署工具的元数据 API。
  6. 如果您使用的是元数据 API,请记住检索站点并包含网络和 CustomSite 类型,以允许系统在 目标组织。如果您使用的是更改集,请记住在之前重新创建更改集 部署。

部署经过身份验证的 LWR 站点的注意事项

从 23 年冬季开始,通过 Experience Builder 或 Connect API 创建新的 LWR 站点 不要在其 URL 末尾包含 /s。在 Winter 之前创建的经过身份验证的 LWR 站点的 URL ’23 仍包含 /s,如果沙盒和生产环境,此 URL 结构更新会影响部署 URL 不匹配。了解支持哪些部署方案以及如何解决不支持的方案 与 /s 相关的部署错误。

注意

所描述的方案假定沙盒和生产环境位于同一版本的 Salesforce的。不支持将站点从较新版本部署到较旧版本。

元数据 API 部署

  • 支持通过元数据 API 部署创建站点,无论源站点的 URL 包括 /s。如果源站点的 URL 包含 /s,则新目标站点的 URL 将包含 /s。如果 源站点的 URL 不包含 /s,新目标站点的 URL 不包含 /s。
  • 若要使用元数据 API 部署更新站点,请源站点的 URL 和目标站点的 URL 必须匹配。两个 URL 都必须包含 /s,否则任何一个 URL 都不能包含 /s。
  • 要解决与 /s 相关的元数据 API 部署错误,请将元数据包更新为 在源站点的 URL 中添加或删除 /s。确保源站点的 URL 与 目标站点的 URL。您不能在目标站点的 URL 中添加或删除 /s。

更改集部署

  • 支持通过更改集部署创建站点,无论源站点的 URL 包括 /s。如果源站点的 URL 包含 /s,则新目标站点的 URL 将包含 /s。如果 源站点的 URL 不包含 /s,新目标站点的 URL 不包含 /s。
  • 若要使用更改集部署更新站点,源站点的 URL 和目标站点的 URL 必须匹配。两个 URL 都必须包含 /s,否则任何一个 URL 都不能包含 /s。
  • 若要解决与 /s 相关的更改集部署错误,请重命名源站点或 通过API或Experience Builder的目标站点。重命名其中一个站点会创建一个 站点,而不是更新目标站点。不能将 /s 添加到 /s 中,也不能从 源站点的 URL 或目标站点的 URL。