contextualcode / ezplatform-content-packages
eZ 平台捆绑包,提供导入和导出内容的方式
Requires
- php: ~7.1
- ext-json: *
- ext-zip: *
- doctrine/orm: ^2.6
- ezsystems/ezplatform-admin-ui: ^1.5
- ezsystems/ezpublish-kernel: ^7.5
- kaliop/ezmigrationbundle: ^5.0
Suggests
- doctrine/doctrine-migrations-bundle: To apply required database changes
README
本捆绑包提供在不同 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的启发。
生成子树导出的主要步骤
- 为我们的子树中的每个位置生成eZ迁移文件
- 我们生成“创建”eZ迁移文件和“更新”eZ迁移文件。这使得我们可以引用正在导出/导入的子树中的ID(在后续步骤中),而不会出现循环依赖问题
- 为我们刚才创建的迁移文件中的每个位置/内容ID创建引用
- 用我们刚刚创建的引用替换所有位置/内容ID
- 将子树的根节点的父位置ID替换为一个占位符,以便此内容包可以导入到任何父位置下
- 将我们在迁移文件中引用的所有二进制文件(图像/文件)复制到我们的目录中
- 将其全部打包,向用户提供服务作为内容包
导入较为简单
- 解压内容包
- 将导出步骤4中创建的父位置ID占位符替换为给定的位置ID
- 运行eZ迁移
贡献
欢迎拉取请求。对于重大更改,请首先打开一个问题来讨论您想要更改的内容。