contextualcode/ezplatform-content-packages

eZ 平台捆绑包,提供导入和导出内容的方式

v3.2.0 2021-02-25 13:47 UTC

README

Downloads Latest stable License

本捆绑包提供在不同 eZ 平台安装之间导出和导入内容的方法。

以下是导出/导入表单和进度的 一些截图

安装

请参阅 安装说明

使用方法

安装后,在“内容”标签下将出现一个新的菜单选项,链接到 /content_packages

导出内容包

从您希望导出的安装中,访问内容包导出页面(/content_packages/export)。

目前支持导出的内容包类型包括位置子树、内容类型和标签树。

请注意,导出是针对特定用户的。正常 eZ 权限适用,其他人将无法查看您的导出。

子树导出

包含二进制文件(文件/图像)。其他位置/内容 ID 的引用(例如,在关系属性中)将解析为其新 ID。

重要

请注意,如果子树外存在对内容/位置 ID 的引用,它将被保留(而不是导出或解析为新 ID)。这是我们希望在未来的版本中修复的限制。

子树导出选项

表单中有些选项。保持默认设置即可,但如果您需要自定义内容包的生成方式,您可能需要更改它们。

  • "语言"

    导出所使用的语言。

  • "保留远程 ID"

    控制是否在导出中包含远程 ID。如果不包含,则在导入时将分配新的远程 ID。

  • "保留所有者"

    控制是否在导出中包含对象的拥有者。如果不包含,则导入此内容包的用户将是所有者。

  • "保留发布日期"

    控制是否在导出中包含原始发布日期。

  • "保留修改日期"

    控制是否在导出中包含原始修改日期。

  • "保留部分"

    控制是否在导出中包含部分。

  • "保留对象状态"

    控制是否在导出中包含对象状态。

  • "包含文件二进制文件"

    如果选中,导出中的图像/文件将包含在内容包中。如果未选中,导出中的图像/文件将不包含,但迁移文件中的图像/文件引用仍然存在。这适用于您希望在之后使用 rsync 将文件放入内容包的情况。

  • "包含文件引用"

    如果选中,导出迁移文件中的图像/文件值将保持不变。如果未选中,导出中的图像/文件值将被删除。这适用于您根本不希望在新的系统中导入文件的情况。

  • "从导出中排除字段"

    这些是要从导出中排除的逗号分隔的内容类属性。它们可以是“attribute_identifier”或“class_identifier/attribute_identifier”的形式。

  • "替换硬编码位置 ID 的属性"

    此参数非常有用,例如,如果您有一个包含硬编码位置ID的富文本属性。在此处传递该属性的名称,导出将用正确的、新的ID(如果这些位置也在导出的子树中)替换那些硬编码的位置ID。

  • "替换硬编码内容ID的属性列表"

    与“替换硬编码位置ID的属性列表”参数相同,但用于内容ID。

  • "在字段引用周围添加括号"

    由于迁移文件的工作方式,您可能希望此字段包含您添加到“替换硬编码位置ID的属性列表”和“替换硬编码内容ID的属性列表”中的属性。

导入内容包

导出内容包后,您可以使用该.zip文件将其导入到不同的eZ安装中。访问内容包导入页面(/content_packages/import)。

当导入子树内容包时,您必须选择导入子树的父位置ID。

工作原理

此工具基于Kaliop的eZ迁移包构建,该包受到DoctrineMigrationsBundle的启发。

生成子树导出的主要步骤

  1. 为我们的子树中的每个位置生成eZ迁移文件
    • 我们生成“创建”eZ迁移文件和“更新”eZ迁移文件。这使得我们可以引用正在导出/导入的子树中的ID(在后续步骤中),而不会出现循环依赖问题
  2. 为我们刚才创建的迁移文件中的每个位置/内容ID创建引用
  3. 用我们刚刚创建的引用替换所有位置/内容ID
  4. 将子树的根节点的父位置ID替换为一个占位符,以便此内容包可以导入到任何父位置下
  5. 将我们在迁移文件中引用的所有二进制文件(图像/文件)复制到我们的目录中
  6. 将其全部打包,向用户提供服务作为内容包

导入较为简单

  1. 解压内容包
  2. 将导出步骤4中创建的父位置ID占位符替换为给定的位置ID
  3. 运行eZ迁移

贡献

欢迎拉取请求。对于重大更改,请首先打开一个问题来讨论您想要更改的内容。