模块

Drupal 8 内核模块变化

  距离 Drupal 8 正式发布的时间越来越近,有关 Drupal 8 的咨询和文章也越来越多。除了 Drupal 8 的新特性是大家特别关注的一块之外,D8 中核心模块的变化也是相当引人注意的。

  本文整理了 D8 相对于 D7 的一些核心模块变化,包括从核心中移除的模块,也包括加入到核心中的模块,以及因为D8提供了类似模块而无需再使用的第三方模块(关于 D7 相对于 D6 的核心模块变化可阅读《整合到Drupal 7 核心的Drupal 6 模块》一文)

  下图为Drupal8 内核语言模块及功能相关规划(点击看大图)

Drupal8 内核语言模块及功能相关规划

迪原高科(北京)招聘 Drupal 初中级开发人员 | Dilato IT

Drupal

  迪原高科(北京)招聘初中级 Drupal 开发人员,欢迎熟悉 Drupal 和对 Drupal 有兴趣的朋友加入我们。

 

工作描述:

  • 根据客户需求建立 Drupal 网站、开发 Drupal 模块

 

职位要求:

  • 熟悉 PHP,有PHP项目经验
  • 半年左右 Drupal 开发经验
  • 基本的英文阅读能力
  • 热爱 Drupal 并希望深入学习

 

其它介绍:

Drupal 模块目录组织结构推荐

  每个 Drupal 站点都会用到一定数量的模块,养成良好的模块组织习惯非常重要,尤其以团队进行某一个项目时,规范的模块目录组织结构能够使站点的开发和维护变得更加容易。经过长时间的项目积累与验证,今天与大家分享一下模块目录结构的组织方式:

sites/all/modules/contrib
sites/all/modules/custom
sites/all/modules/[project_name]
sites/all/modules/dev

模块位置的基本原则

  按照惯例,所有非核心的 Drupal 模块都应该放置于 sites 目录下,这样在将来对 Drupal 版本进行升级时才会方便。

分目录组织模块

  从上面的目录结构可以看出,我们将模块目录分为第三方模块、自定义模块、项目模块和开发辅助模块。

  “第三方模块”是指我们从 Drupal 官网上下载下来的模块,一般而言,我们不会也不推荐修改这些模块。因此将这类模块存放于 contrib 目录进行集中管理。

整合到 Drupal 7 核心的 Drupal 6 模块

  本文档提供了一份模块清单,这些模块有 Drupal 6 版本,在升级到 Drupal 7 之后,这些模块的功能已经部分或已完全被整合到 D7 的核心了。

  以个列表还在不断更新,因此并非最终版本,最新版本的原文可以查看《Drupal 6 contributed modules that are in Drupal 7 core

可卸载的模块

以下这些模块的功能已经包含在 Drupal 7 的核心中,它们的升级不涉及数据迁移。当网站从 D6 升级到 D7 时,可以将这些模块从模块目录下移除。升级完成后,可能需要对这些模块进行重新配置以便恢复 D6 时的功能。(对于包含复杂配置的模块,我们也希望模块维护人员提供自动化升级能力)

内容分类: 

Drupal 模块 master 主分支中的 README.txt 文件示例

  向 drupal.org 社区提交模块时,通常会将代码放在分支上进行开发,而对于主分支 master,则习惯只在其下保留一个 README.txt 文件,这个 README.txt 文件中包含各个版本的模块的代码和位置,用于帮助人们找到合适的版本。

  以下是一个 master 主分支中的 README.txt 文件的样本,感谢 drupal.org 社区的 ELC 提供:

内容分类: 

使用模块的 weight 值调整模块加载/调用顺序

  熟悉 Drupal 开发的人都知道 API 中的 hook_xxx 函数是可被调用的钩子函数,比如 book_nodeapi(), comment_nodeapi()  都是应用了 hook_nodeapi() 这个钩子。一般情况下,大家都知道应用钩子后, 应用了钩子的函数就会在调用时执行。但是,一般都不会太关注模块被调用的顺序,比如 book_nodeapi() 和 comment_nodeapi() ,Drupal 是先调用 book_nodeapi(),还是先调用 comment_nodeapi() 呢?

  Drupal 在调用模块时,遵循两个顺序,首先是模块的权重,即 weight 值,其次是按模块的名称首字母排序。默认时,book 模块和 comment 的模块权重都为 0,因此这两个模块在被调用时是根据名称首字母来排序,即先调用 book_nodeapi(), 再调用 comment_nodeapi().

  大多数情况下,并不需要关心模板的权重,因为模块之前通常都是独立工作,因此模块的调用顺序如何并不会对函数执行的效果形成影响。——不过,在一些情况下,开发人员需要为模块设置一个权重值,以确保某个模块最先被调用,或最后被调用。或者更复杂的调用顺序(当然这种情况就更难遇上了)。

内容分类: 

页面