【问题标题】:Tools and tips for switching CMS切换 CMS 的工具和技巧
【发布时间】:2011-06-05 00:38:58
【问题描述】:

我在一所大学工作,在过去的一年中,我们终于摆脱了数千页的静态 HTML 站点,并转移到了 Drupal 站点。这显然需要输入大量数据。

如果您已经在使用 CMS 并正在切换到另一个更适合您需求的 CMS,该怎么办?在如此巨大的变化中,您如何最大程度地减少大量数据输入?是否有为此构建的工具,或者应该遵循一些最佳实践?

【问题讨论】:

  • 正如我从您想要 django 或类似 MVC 的 pattren 的标签中感知到的那样?或者你的意思是''西装''另一个现成的CMS?因为我想尽可能地减少我的答案。
  • 理想情况下,我正在寻找并非特定于某个 CMS 的最佳实践和工具,但由于看起来 Django 是您选择的 CMS,请继续在切换到的上下文中回答Django。

标签: django drupal content-management-system joomla


【解决方案1】:
  • 无论发生什么,都必须手动对数据进行预处理和后处理。尽早接受您的数据可能处于比您想象的更糟糕的状态:字段将被滥用;记录到记录的引用(外键)可能没有正确实现,或者根本没有实现;内容可能需要除掉,有时只是不好或不正确。

  • 检查您的数据库编码。较旧的数据库不会采用 Unicode 编码,如果您必须导出数据转储并将它们导入其他地方,就会变得脾气暴躁。即便如此,假设您的数据中会有一些古怪的不可打印字符:像 Word 这样的程序似乎以某种方式将它们注入到任何地方,而且我已经看到......代码点......你们不会相信。考虑在您开始(甚至扫描数据库转储)之前扫描您的数据以获取这些字符。决定是否将它们丢弃或尝试在例如的情况下转换它们。单词“智能”标点字符。

  • 从隐含的数据结构创建显式数据结构非常困难。如果您的传入数据有一个单独的日期字段,您可以将其映射到日期字段;如果它有一个日期作为一大块 HTML 的一部分,即使该日期位于具有 id 属性的标签中,简单的脚本也不会起作用。您可以将离线脚本与 BeautifulSoup 或(如果您的 HTML 更好一点)更快的 lxml 一起使用来预处理您的数据集,提取那些隐式字段,并将它们保存为隐式格式。考虑创建一个中间数据库来存放这些修订。

  • Migrate 模块非常出色,但要获得真正好的数据保真度并发挥更聪明的技巧,您可能需要了解它的钩子系统(Drupal 对遵循特定命名方案的函数的术语)以及编写将这些钩子放入的模块(一个模块基本上只是一个 PHP 文件,其中所有函数都以相同的文本开头,即模块文件的名称。)

  • 应标记所有导入的内容,以便至少进行粗略检查。您可以通过使用 status=0 (即未发布)导入它来执行此操作,然后使用 Views 模块创建一个视图以浏览内容并在其他选项卡中打开它以进行检查。视图批量操作让您在视图项旁边有一组复选框,因此您可以一次批准多个节点。

  • 期望运行并重新运行并重新运行导入,每次都修复新内容。尽早检查十个或二十个项目。如果有任何问题,请检查十个或二十个。修复并重复导入。

  • 衡量一次导入运行可能需要多长时间。悲观一点:当我们引入完整的数据集时,我们预计需要十个小时的导入遇到指数放缓;在我们最终修复一些缓慢的查询之前,预计需要两周时间。

  • 如果有疑问,或者如果您认为上述技术方面的时间比工作本身要多,那么只需雇用临时工来做数据。但是您仍然需要在工作期间尽早进行体面的质量控制。 Drupal 开发人员也可以租用:尝试您所在国家/地区的相关 IRC 频道,或在相关的 groups.drupal.org 组中发布说明。它们比 temps 更贵,但它们通常会写出更好的 PHP ......!也考虑聘请代理机构:这是一个无耻的插件,因为我为一个机构工作,但有时最好让专家从事这些特定的工作。

  • 真正好的导入总是很难,比你想象的要难。不要让它让你失望!

【讨论】:

    【解决方案2】:
    1. 您需要从 django 访问现有数据。这对我的迁移有很大帮助:http://docs.djangoproject.com/en/1.2/howto/legacy-databases/。使用正确的模型定义,您将拥有完整的 django 功能,包括管理员。事实上,我将 django 用作几个遗留 php 项目的管理后端 - django 的管理可以轻松超越许多自定义的手写管理脚本。

    2. 授权应该保持不变。用户应该能够使用他们的凭据登录,但是很难为身份验证数据编写迁移脚本,因为密码哈希模式可能不同,并且在不知道普通密码的情况下无法在它们之间进行转换。 Django 提供了一种支持不同身份验证来源的方法,因此您可以编写 Drupal 身份验证后端:http://docs.djangoproject.com/en/1.2/topics/auth/#writing-an-authentication-backend

    3. 无需进行完全重写。如果某些部分工作正常,它们仍然可以由 Drupal 提供支持。可以使用具有相同 UI 的 Django 编写新代码。新旧部件之间的路由可以通过 Web 服务器 url 重写来执行。 django 和 drupal 部分都可以由同一个 DB 驱动。

    【讨论】:

      【解决方案3】:

      迁移+表向导(和模式+视图)是要走的路。使用表格向导,您可以将任何表格公开给 drupal,并使用 migrate 相应地映射字段。

      在这里查看详细的演练: http://www.lullabot.com/articles/drupal-data-imports-migrate-and-table-wizard

      【讨论】:

        【解决方案4】:

        Drupal 的Migrate 模块将提供很大帮助。 Economist.com data migration to Drupal 将为您提供该过程的概述。

        Drupalcon DC 2009 上 Migration: not just for the birds 演示文稿中的 video 可能有些过时,但也提供了很好的介绍。

        【讨论】:

        • 迁移模块看起来很棒。你知道有什么类似的,但相反的吗? (又名从 Drupal 切换到 Joomla)
        猜你喜欢
        • 1970-01-01
        • 2013-04-21
        • 2010-10-20
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 2011-10-25
        • 2021-06-23
        • 2010-09-16
        相关资源
        最近更新 更多