每个 Drupal 站点都会用到一定数量的模块,养成良好的模块组织习惯非常重要,尤其以团队进行某一个项目时,规范的模块目录组织结构能够使站点的开发和维护变得更加容易。经过长时间的项目积累与验证,今天与大家分享一下模块目录结构的组织方式:* E3 U# L7 ]) b9 H K3 p4 S' `) b4 m
1 l* T" e+ f8 y. R' L" x
sites/all/modules/contrib
?7 \" ~2 ~; J' `* ]sites/all/modules/custom
5 R. U- r* P# p$ P6 {" Hsites/all/modules/[project_name]
. S3 c, M1 t, F% Jsites/all/modules/dev8 c( B0 e3 S! \& z0 r( L; d( v, y
/ Q# }2 N3 ?: e5 F6 |0 x" L+ O' n G9 ]模块位置的基本原则# \7 ]# [. }( y$ S
按照惯例,所有非核心的 Drupal 模块都应该放置于 sites 目录下,这样在将来对 Drupal 版本进行升级时才会方便。
6 U; W: [7 F1 A) Q V0 A; V
: Y3 R! D' y" c. N) R6 G分目录组织模块; x& [) u9 W% _+ S; E6 u8 M
从上面的目录结构可以看出,我们将模块目录分为第三方模块、自定义模块、项目模块和开发辅助模块。) D$ B: v/ A% Q- _6 p5 ~. H I2 b
5 j' n2 o0 q' ~ x“第三方模块”是指我们从 Drupal 官网上下载下来的模块,一般而言,我们不会也不推荐修改这些模块。因此将这类模块存放于 contrib 目录进行集中管理。
! l) {$ ^. o( L; M
6 N1 V% f& m, d# I+ N( m' g“自定义模块”目录用于存放我们自己创建的通用模块—“通用”是指这个模块拿出来放到其它的Drupal网站也能用,“自定义模块”与“第三方模块”的区别可能只在于能不能通过 drupal.org 进行下载。“自定义模块”目录的另一个作用是存放我们改动某个第三方模块(虽然不推荐个性第三方模块,但有时还是不得不修改它们才便于实现某些功能),那么我们建议将改动的第三方模块移动到 custom 目录下,这样一来,在对模块进行升级前我们会记得对这个模块进行了修改,就可以在升级前制作补丁而避免升级覆盖了修改。
0 w7 \" N; I" ~) ]% H& S7 e- V/ |5 `: T. S* ~9 I3 Y$ J$ M2 @
“项目模块”目录下的模块也属于自定义模块,不同点在于这个目录下的模块是针对某一个项目的特定模块,不具备通用性。除了自定义模块,使用 features 模块导出的针对当前项目的各种功能包也应该放在此目录下。8 O _) o4 i1 G' ~9 N, `6 ~
* l( [: ]6 C( B, _- o
“开发模块”目录则用于存放各个作为开发用途的模块。
5 N% N- h7 p$ b* O& f% `4 R. D. e8 A5 `0 S) S' s/ n7 V" @
单独存放开发辅助模块' k0 k) Q: h: D5 a7 c. }9 \/ Z
在制作 Drupal 站点的过程中,少不了使用各种开发辅助模块,如 devel, devel_themer, demo, simpletest, trace 等等。这些模块对于开发过程非常有帮助,但如果放到生产服务器和测试服务器则不太合适,还会产生不少安全隐患。因此将这些模块单独存放在 dev 目录下,同时也不应该被 git 或其它版本控制软件跟踪,让它们只存在于每个开发人员的开发环境下,即轻便又安全。
) `7 h0 \$ Z3 A# p7 h) N/ T8 S! Q# S( G) E
# Q* a/ g5 E0 g7 |% q' V. h, e本文选择: lugir,谢谢!; N+ L, [# U6 i) [& G# |* s
|
|