首页 > 解决方案 > DNN 中的页面导入/导出,页面上有 2sxc 模块

问题描述

DNN 9.6.1 2sxc 11.2.0

我有一个开发和生产站点,它们(或多或少)是彼此的副本。

我在开发网站上创建了一个 2sxc 应用程序并构建了一些页面。我需要将页面和应用程序移动到生产站点。

  1. 我从开发站点导出应用程序并将其导入生产站点,没有任何问题。
  2. 我从开发站点导出(包含内容)包含应用程序的页面,然后将页面模板传输到生产站点。
  3. 然后,我在生产站点上创建了新页面,为页面指定了适当的模板。
  4. 新页面已创建,2sxc 应用程序位于正确的位置,但我在屏幕上收到消息说数据尚未初始化或为空。
  5. 我可以删除应用程序,添加新应用程序,指定应用程序模板并手动添加数据(应用程序附带的数据),一切都很好。除了手动重新创建内容项列表很痛苦。

如果我使用开发站点上导出的页面模板在开发站点上创建新页面页面,则新页面创建完美。

所以,我认为这是应用程序导出/导入过程的问题。

标签: 2sxcdotnetnuke-9dnn9

解决方案


我给乔的解决方案是这样的

基本

所以在我们开始之前,我需要确保你理解区分数据和内容的核心概念。

  1. 数据只是数据 - 您的代码可以对其进行排序等,并像记录一样使用它
  2. 内容是手动放置在页面上的数据,按照内容编辑器想要的顺序。这组项目及其顺序存储在ContentBlock

现在在我们继续之前,我建议您阅读https://docs.2sxc.org/specs/content/index.htmlhttps://docs.2sxc.org/specs/content/dnn-integration.html,它们解释了 DNN 如何modules 指向一个内容块。

您的问题重新解释

据我了解,我相信您的设置正在使用内容。

  1. 因此,在您的源系统 DNN1 中,您有一个模块 M1 指向包含 ContentBlock CB1 的 App A1。
  2. 然后您导出了 A1 - 可能没有在 App-Export 中检查“包括 ContentBlocks”,其中包括 CB1
  3. 在 DNN2 上重新导入它。
  4. 您创建了一个新的模块 M2 - 它还没有内容块,因此它创建了一个新的 CB2。
  5. 现在您不得不手动重新创建新 CB2 中的项目列表

这对吗?

了解站点导出-导入

如果您正在迁移站点,那么您将导出仍包含 M1 的站点模板。M1 仍会指向 App1 和 CB1 但找不到它 - 然后您会看到一条消息,它还找不到它。在这种情况下,您将使用复选框导出 A1 以包含 ContentBlocks并将其导入 DNN2 - 一切都会神奇地工作。这也在这里解释:https ://2sxc.org/en/learn/copy-duplicate-an-entire-site

将其用于您自己的设置

如果您打算多次执行此应用程序的导出/导入,我建议您

  1. 首先始终导出包含ContentBlocks的应用程序。
  2. 在 DNN2 上添加一个 M2(它创建一个 CB2 引用),然后手动转到 DNN sql 表并替换这个新模块的ModuleSetting以指向原始(现在重新导入)内容块 CB1。这是您可以在源系统上查找的 GUID。

完成此操作后,多次重新导入应用程序将始终指向原始 CB1,并且一切正常;)

@joe 最佳标记为已修复


推荐阅读