跳转到主要内容
Carol 提交于 30 October 2014

原文链接:http://atendesigngroup.com/blog/organizing-features-complex-drupal-sites

译者:Carol   校对:龙马

为复杂的Drupal网站组织好功能

我们用一系列综合的(一套)网站代码和Drupal数据库里储存的设置来搭建Drupal网站。设置对于没有写代码经验的人来说是很容易更改的。但是我们没办法像跟踪代码里面的更改一样容易的去跟踪数据库里设置的更改。

Drupal的功能模块是Drupal7里被广泛用于存储设置的解决方案和代码里面的版本控制配置一样。像Drupal中大多数的一样,不是只有一个方法可以在代码里面来配置:一些Aten的人员已经开始在想另外一个方法叫做 CINC.

如果你想用功能模块,你应该尽早知道不是只有一个办法来创建功能的.Drupal 程序包提供了一些指南,但是功能开发模块的组织和架构通常都被丢给了程序员来做。但是也会因为在一个复杂的网站上有很多程序员和很多功能而被很快的搞傻。为了以防在功能是一个项目的需求情况下,我们已开发出了一个能很好的为我们服务的方法。

保持功能命名约定的一致性

我们的功能名称按照这个公约: [项目名称缩写][总结] [程序包名称]_功能

[项目名称缩写]三个字母的代码被决定安排在一个项目的开头即保持自定义模块和功能的名称是这个项目独一无二的。

[总结] 关于一个功能特点极短的总结。

[程序包名称]指需要为该项目严格的按照程序包命名公约设定。

功能 这个部分使别人知道这个模块是为功能而开发并且也使这个模块的名称保持唯一。

实际案例

页面内容类别-abc_页面_实体_功能

图片格式定义-abc_图片_格式_配置_功能

博客视图-abc_博客_视图_功能

以程序包名称来划分功能

当开发一个新的功能时,你可以指定一个程序包名称。这个和自定义模块里面的“程序包=『某物』”的意思一样。资料文件夹。程序包名称为你的功能列表页面和所有模块页面的功能分类。程序包名称的一致性也让其他的程序员和客户能更快的找到需要的功能。我们建议在一个项目的一开始就敲定程序包名称。我们的程序包名称一般来说都是按照这样来写的:

[项目名称缩写] 配置(图片格式,文字格式,搜索设置,许多模块设置)

[项目名称缩写] 实体(内容类别,字段,字段列表,类别等等)

[项目名称缩写]视图(视图模块提供的视图定义)

[项目名称缩写]页面(页面管理和平台)

为功能模块创建一个目录结构

我们典型的模块目录(网站/所有/模块)是这样的一个结构:

第三方(从Drupal.org下载的模块)

自定义(不是第三方或者不属于此项目的模块)

功能(由功能创建的模块)

补丁(补丁的第三方模块)

功能目录(网站/所有/模块/功能)能够让你更容易的找到你所想要的。我们尽力希望能更多的提供镜面程序包名称。

  • features(功能)
    • configuration(配置)
    • entity(实体)
      • content_type(内容类别)
      • field_collection(字段列表)
      • shared(分享)
      • taxonomy(分类)
    • page(页面)
    • views(视图)

限制交叉功能依赖性

对于一个功能来说依赖于别的Drupal模块是很正常的。例如,当用到字段分组一个内容类别功能会依赖于字段分组模块。当创建内容类别功能,被内容类别所使用到的多个字段会相互紧紧依赖彼此。功能交叉依赖性最快的方法是创建两个拥有共同的一些字段的内容类别功能(例如,主体,标签。)内容类别一或许会包含一些为主体字段提供的字段基础,内容类别二也同样使用主体并且现在有对内容类别一的依赖。

功能交叉依赖让功能的真正独立和在整个项目中重复使用变得很难实现。而我们采用的办法是刻意的去使用分享字段和添加他们到一个完全不同的功能。我们称这个功能“分享字段基础”,这个分享字段允许内容类别一和内容类别2完全相互独立。

今天到尾声部分,最重要的事情是选择一个方法并且在整个项目中贯彻到底。我们已经创建了适合我们的工作流程,但是同样还有别的方法也适用。你的方法跟我们的有什么区别么?你是用什么方法来创建功能并且很好的组织分类他们的呢?你对于Drupal8方案里的在代码里配置感到激动么?

 

Drupal 版本