chillu/drupal-blog-importer

此包已弃用,不再维护。没有建议的替代包。

将Drupal博客结构(包括评论和作者)导入SilverStripe CMS,用于博客模块的使用

dev-master 2016-02-22 10:21 UTC

This package is auto-updated.

Last update: 2021-01-21 12:05:48 UTC


README

Build Status

将Drupal博客数据转换为SilverStripe博客(使用博客模块构建)。

  • 以标准博客结构导入帖子标签
  • 使用"comments" 模块导入评论(可选)
  • 将博客作者和评论作者导入到Member记录中(可选)
  • 将标签导入由"blogcategories" 模块创建的多对多关系中(可选)
  • 将博客帖子体内的相对图片重写为自定义本地文件夹(用于手动迁移)
  • 下载相对图片并将它们重写到提供的文件夹中(可选)
  • 将不同博客的帖子导入不同的“博客持有者”中
  • 基于可用的CSV数据,无需安装Drupal模块或应用程序访问权限
  • 支持增量导入和更新
  • 为帖子URL生成Apache重写规则

注意:该模块处于alpha状态,迄今为止仅针对Drupal 5进行了测试。它不会导入所有数据点,请参阅以下已知限制。

设置

SilverStripe 扩展

由于SilverStripe博客和评论模块没有提供映射现有Drupal数据所需的所有列,因此我们需要通过添加几个列来扩展它们。例如,Drupal评论有主题行。将以下内容添加到您的配置中(例如,在mysite/_config/config.yml中)

BlogEntry:
  extensions:
    - DrupalBlogEntryExtension
Comment:
  extensions:
    - DrupalCommentExtension
Member:
  extensions:
    - DrupalMemberExtension

这是一个可选步骤,您需要调整模板和CMS逻辑才能利用这些新列。

SQL导出脚本

导出逻辑位于tools/export.sql

该模块操作CSV数据,可以通过MySQL命令行工具检索。请注意,SQL用户需要已授予File权限,因为脚本使用SELECT ... INTO OUTFILE

脚本假定博客节点的列类型为'column'。如果其名为其他(例如'blog'),请替换SQL脚本中的值。如果您已配置了表名前缀,请勿忘记添加。

默认情况下,CSV数据导出到/tmp文件夹。如果无法访问此位置,请更改脚本路径。我们使用特定的连接和组合列,因此直接从您的工具导出表数据将不起作用 - 请使用此脚本。

使用方法

从Drupal导出

运行以下命令

mysql -u <user> -p <my-drupal-database> < drupal-blog-importer/tools/export.sql

导入到SilverStripe

在SilverStripe webroot中运行以下命令

sake dev/tasks/DrupalBlogImporterTask postFile=/tmp/posts.csv userFile=/tmp/users.csv commentFile=/tmp/comments.csv 

可以省略参数以仅导入部分数据。

可用参数

  • postFile:博客文章CSV文件的绝对或相对路径
  • commentFile:评论CSV文件的绝对或相对路径
  • userFile:用户CSV文件的绝对或相对路径
  • publish:发布创建的博客页面?

扩展导入器

导入器可能无法完全满足您的需求。例如,标签可能以"blogcategories"模块作为多对多关系导入,或者评论作者可能以昵称与["论坛"模块]中的个人资料匹配的方式导入。

CSV导入逻辑基于核心类CSVBulkLoader。它提供了很多灵活性,可以在转换和重新映射数据方面进行操作。每种类型(用户、评论、帖子)都有自己的加载类,可以被继承。

:::php
class MyDrupalBlogPostBulkLoader extends DrupalBlogPostBulkLoader {
	public $columnMap = array(
		'tags' => '->importTags',
		// ...
	);
	protected function importTags($obj, $val, $record) {
		// Example: Look up many-many relation, and add new objects
	}
}

只需指导依赖注入器使用这些类即可(例如,在mysite/_config/injector.yml中)

Injector:
	DrupalBlogPostBulkLoader:
		class: MyDrupalBlogPostBulkLoader

限制

  • 丢弃博客文章的修订历史
  • 丢弃已注册用户的博客文章订阅
  • 忽略博客文章的访问控制
  • 评论线程被简化
  • 用户没有公开的个人资料或登录能力
  • 标签未加权,术语层次结构被简化
  • 不更新查看次数(除非特别实现)