2011-01-07 38 views
5

我为一所大学工作,在过去的一年里,我们终于摆脱了数千页静态HTML网站,转移到Drupal站点。这显然需要大量的数据输入。切换CMS的工具和提示CMS

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

+0

因为我感觉你想要django或类似的MVC的pattren标签?或者你的意思是''适合''另一个准备好的CMS?因为我想尽量减少我的答案。 – MBarsi 2011-01-10 19:42:12

+0

理想情况下,我正在寻找不是特定于一个CMS的最佳实践和工具,但由于它看起来像Django是您选择的CMS,请继续并在切换到Django的上下文中回答。 – Jimmy 2011-01-10 20:02:01

回答

5
  • 期望有两个预处理和后处理过程手动您的数据,无论发生什么事。尽早接受您的数据可能处于比您想象的更糟的状态:字段将被滥用;记录到记录的引用(外键)可能无法正确实施,或根本无法执行;内容可能需要除草,偶尔会出现问题或不正确。

  • 检查您的数据库编码。较旧的数据库不会采用Unicode编码,如果必须导出数据转储并将其导入别处,则会变得脾气暴躁。即便如此,假设您的数据中会出现一些古怪的不可打印字符:像Word这样的程序似乎以某种方式将它们注入到任何地方,并且我已经看到...... codepoints ...您的人们不会相信。考虑在你甚至启动这些字符(甚至清理数据库转储)之前清理你的数据。决定是否垃圾或尝试将它们转换为例如单词“聪明”的标点符号。

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

  • 迁移模块非常出色,但要获得非常好的数据保真度并玩出更多聪明的技巧,您可能需要了解其钩子系统(Drupal关于特定命名方案的函数的术语)以及编写模块的基础知识(模块大致只是一个PHP文件,其中所有功能都以相同的文本,模块文件的名称开头)。

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

  • 预计运行并重新运行并重新运行导入,每次修复新事物。尽可能早地检查十个或二十个项目。如果有任何问题,请检查十或二十个。修复并重复导入。

  • 衡量单次进口运行可能需要多长时间。悲观:当我们引入完整的数据集时,我们预计需要十个小时的导入会遇到指数级放缓;直到我们终于解决了一些缓慢的查询,预计需要两周时间。

  • 如果有疑问,或者如果您认为上述技术方面比工作本身需要更多的时间,那么只需聘请临时工来完成数据。但是,您仍然需要尽可能早地进行体面的质量控制。 Drupal开发人员也可以聘请:试用您所在国家的相关IRC频道,或在相关的groups.drupal.org小组中发布注释。他们比临时工更昂贵,但他们通常会写出更好的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提供支持。新代码可以用相同的用户界面使用Django编写。旧部件和新部件之间的路由可以通过Web服务器URL重写来执行。 django和drupal部件都可以使用相同的数据库。