代码之家  ›  专栏  ›  技术社区  ›  ctford

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

  •  3
  • ctford  · 技术社区  · 15 年前

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

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

    我该怎么做呢?

    5 回复  |  直到 14 年前
        1
  •  5
  •   Community CDub    7 年前

    阿法克,没有办法实现你的意思。我倾向于尽可能多地投入 hook_update_N() 实现和频繁的数据库同步,如我的回答中所述 this question . 但是,当您已经有了一个要与之合并数据的活动服务器时,这不起作用。

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

    • Features . 这是一个新概念和一个新模块。这个想法非常棒:它允许您定义一组配置/模块/设置,并将它们导出为 特征 . 然后将像在目标站点上安装模块一样安装此功能。此模块不导出所有可能的设置,但它对需要最硬配置的模块(如CCK、视图、ImageCache和其他)做得很好…你可以看到一个放映演示(大约10分钟) here .

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

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

    • Deploy . 因为 节点输出 我曾经研究过使用这个模块(仍在开发中)。最后,我没有这样做,我更喜欢合并生产数据库和临时数据库,但是这个概念似乎非常有效,因为它允许通过SOAP导入/导出复杂的数据类型。

    • Taxonomy import/export .我想这个名字是不言而喻的。它使用文件来完成任务(XML或CSV)。

    • Installation profiles (建议) 特福德 )在配置新站点时很有用。它们允许您在安装时指定要启用的模块、默认的主题等。它们非常方便,因为有一个命令行工具叫做 Drush 这将自动生成安装配置文件。缺点是,配置文件设计用于安装,而不是单个模块的部署。但是,可以获取drush生成的配置代码,并在启用模块时调用它。

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

    啊!

        2
  •  3
  •   Peter Carrero    15 年前

    你看过“功能”模块吗?这是作为开放式中庭分布的一部分引入的一种新模式,但也可作为独立模块提供。根据他们的描述:

    “Features模块可以捕获和管理Drupal中的功能。一个特性是Drupal实体的集合,这些实体一起满足特定的用例。

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

    http://drupal.org/project/features

        3
  •  3
  •   ctford    15 年前

    Installation profiles 在配置新站点时很有用。它们允许您在安装时指定要启用的模块、默认的主题等。它们非常方便,因为有一个命令行工具叫做 Drush 这将自动生成安装配置文件。

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

        4
  •  2
  •   Seb    15 年前

    我知道你的意思,安装所有模块很痛苦。

    我相信您可以调查所有第三方模块,看看如何进行配置,并在您的自定义模块中模拟配置,但我建议您不要这样做…

    问题是,模块可能会改变其设置从一个版本存储到另一个版本的方式,因此每当您更新到任何模块的新版本时,都应该进行反向工程,以查看您的“终极一键式配置模块”是否仍然正常工作-如果您问我,这比手动配置所有模块更痛苦对于每个项目。

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

        5
  •  0
  •   avpaderno    15 年前

    因为只有在安装Drupal时才需要初始化,所以我认为安装配置文件是更好的解决方案;要保留在安装配置完成后不再使用的模块,IMO看起来有点过分。