从另一个模块中配置Drupal模块

时间:2009-12-08 16:47:09

标签: drupal drupal-6

当我创建一个新的Drupal站点时,我通常最终会得到至少一个自定义模块和几个社区贡献的模块。为了使站点正常工作,需要在各个模块上设置许多配置值。这使得部署到一个新的Drupal实例上既费力又容易出错。

我想让我的自定义模块能够配置所有其他模块。无论是在安装时还是在我的自定义模块管理页面上单击按钮,其他模块上的所有必要配置值都将以编程方式设置。

我最好怎么做呢?

5 个答案:

答案 0 :(得分:5)

AFAIK,没有办法轻松实现你的意思。我倾向于在hook_update_N()实现中尽可能多地使用,并按照我对this question的回答中所述进行频繁的数据库同步。但是,当您已经拥有必须合并数据的实时服务器时,这不起作用。

为此目的,我根据需要使用各种工具。没有人是完美的,但这里只是我最喜欢的一小部分:

  • Features。这是一个新概念和一个新模块。这个想法非常棒:它允许您定义一组配置/模块/设置并将它们导出为功能。然后将安装此功能,就好像它是目标站点上的模块一样。此模块不会导出所有可能的设置,但它确实可以很好地处理需要最难配置的模块,如CCK,视图,ImageCache等...您可以看到一个截屏演示(~10分钟){{ 3}}

  • here。这是一种更激进的方法:它只是在目标系统上转储和重建整个数据库。只有当您需要完全覆盖目标系统时才有用。

  • Backup and migrate。这允许将节点从drupal安装导出(和导入)到另一个。它支持批量操作,但是 - 不幸的是 - 它不支持附加文件和图像的迁移。

  • Node export。由于节点导出的限制,我曾经研究过使用这个模块(仍处于开发阶段)。我最后没有,并且更喜欢合并生产和临时数据库,但这个概念似乎非常有效,因为它允许通过SOAP导入/导出复杂的数据类型。

  • Deploy。我想这个名字是不言自明的。它使用文件来完成任务(XML或CSV)。

  • Taxonomy import/export(由 ctford 建议)在配置新网站时非常有用。它们允许您在安装时指定要启用的模块,默认指定主题等。它们非常方便,因为有一个名为Installation profiles的命令行工具可以自动构建安装配置文件。缺点是配置文件设计用于安装 - 而不是单个模块的部署。但是,有可能获取Drush生成的配置代码,并在启用模块时调用它。

最后,您可以找到一组用于导入/导出数据的工具Drush

HTH!

答案 1 :(得分:3)

你看过“功能”模块了吗?它是作为开放式中庭分发的一部分引入的新范例,但也可作为独立模块提供。从他们的描述:

“功能模块可以捕获和管理Drupal中的功能。功能是Drupal实体的集合,它们结合在一起满足某个用例。

功能提供了一个UI和API,用于从具有可导出功能的模块中获取不同的站点构建组件,并将它们捆绑在一个功能模块中。功能模块与任何其他Drupal模块类似,只是它在.info文件中声明其组件(例如视图,上下文,CCK字段等),以便可以通过编程方式对其进行检查,更新或还原。“

http://drupal.org/project/features

答案 2 :(得分:3)

配置新网站时,

Installation profiles非常有用。它们允许您在安装时指定要启用的模块,默认指定主题等。它们非常方便,因为有一个名为Drush的命令行工具可以自动构建安装配置文件。

缺点是配置文件设计用于安装 - 而不是单个模块的部署。但是,有可能获取Drush生成的配置代码,并在启用模块时调用它。

答案 3 :(得分:2)

我知道你的意思,设置所有模块都很痛苦。

我确信您可以调查所有第三方模块,了解配置是如何进行的,并在您的自定义模块中模仿,但我建议您不要...

问题是模块可能会改变他们将设置从一个版本存储到另一个版本的方式,因此每当您更新到任何模块的新版本时,您应该进行一些逆向工程以查看您的“最终一击” - 配置模块'仍然正常 - 如果你问我,比为每个项目手动配置所有模块更痛苦。

放松,放轻松,享受Drupal:)

答案 4 :(得分:0)

由于仅在安装Drupal时需要初始化,我认为安装配置文件是更好的解决方案;为了保持一个配置安装后不再使用的模块似乎有点过分,IMO。