每个 Drupal 站点都会用到一定数量的模块,养成良好的模块组织习惯非常重要,尤其以团队进行某一个项目时,规范的模块目录组织结构能够使站点的开发和维护变得更加容易。经过长时间的项目积累与验证,今天与大家分享一下模块目录结构的组织方式:
5 U1 @' Z) i% Z
3 j/ a: U6 G4 r# `1 Tsites/all/modules/contrib
/ I# s! N, V. A# c1 vsites/all/modules/custom# [: t9 g( h+ T3 A7 c5 P/ f, ~# N6 I
sites/all/modules/[project_name]
6 W+ `! Q& V) D$ I! K- Ysites/all/modules/dev
3 j. t4 y* i: K0 d2 z& M& ^3 T% y1 h* @& f$ |. q" p8 `" ?
模块位置的基本原则
- \$ i' l! g) y5 G! L按照惯例,所有非核心的 Drupal 模块都应该放置于 sites 目录下,这样在将来对 Drupal 版本进行升级时才会方便。" t- @% g/ E/ T( `2 m1 u, d
1 G3 p& J% S# L1 p# U分目录组织模块
, Z# M3 _4 U9 W% H$ U% A+ ]从上面的目录结构可以看出,我们将模块目录分为第三方模块、自定义模块、项目模块和开发辅助模块。/ T) m2 m: x/ W$ G
, W9 `0 F! ? w7 S“第三方模块”是指我们从 Drupal 官网上下载下来的模块,一般而言,我们不会也不推荐修改这些模块。因此将这类模块存放于 contrib 目录进行集中管理。
) J' c" E, z+ ^5 m
0 y5 j# p2 o. s7 q) r% S5 n“自定义模块”目录用于存放我们自己创建的通用模块—“通用”是指这个模块拿出来放到其它的Drupal网站也能用,“自定义模块”与“第三方模块”的区别可能只在于能不能通过 drupal.org 进行下载。“自定义模块”目录的另一个作用是存放我们改动某个第三方模块(虽然不推荐个性第三方模块,但有时还是不得不修改它们才便于实现某些功能),那么我们建议将改动的第三方模块移动到 custom 目录下,这样一来,在对模块进行升级前我们会记得对这个模块进行了修改,就可以在升级前制作补丁而避免升级覆盖了修改。
- D, ~+ Y u5 I7 M
$ Y8 P6 w C! t$ q: v“项目模块”目录下的模块也属于自定义模块,不同点在于这个目录下的模块是针对某一个项目的特定模块,不具备通用性。除了自定义模块,使用 features 模块导出的针对当前项目的各种功能包也应该放在此目录下。
$ o' U4 `8 T/ p2 X. a& E: l
3 }% V" z0 b5 d& T; P“开发模块”目录则用于存放各个作为开发用途的模块。0 o8 k" e: G; |7 h0 Y0 @% S( ^
2 P& D% a) D6 ~+ a6 h; B# `3 F
单独存放开发辅助模块& Z% J( d* Q1 j) B! V2 o1 i& `
在制作 Drupal 站点的过程中,少不了使用各种开发辅助模块,如 devel, devel_themer, demo, simpletest, trace 等等。这些模块对于开发过程非常有帮助,但如果放到生产服务器和测试服务器则不太合适,还会产生不少安全隐患。因此将这些模块单独存放在 dev 目录下,同时也不应该被 git 或其它版本控制软件跟踪,让它们只存在于每个开发人员的开发环境下,即轻便又安全。2 {/ g0 X b- W" B( A H2 B, D. [
1 r% h: G2 V2 u6 }" N
5 C: \7 ` i! R/ _7 w& O+ X
本文选择: lugir,谢谢!
: V: k( S0 k3 |+ M3 g6 E& x% T |
|