通过添加函数university_profile_modules(),我们告诉Drupal我们的安装轮廓想要启用哪些模块(还有,我们知道这个函数的名称是由我们的轮廓名称加上_profile_modules合成)。这个函数返回一个数组,里面包含了轮廓所要启用的模块名称。对于数组中模块名称出现的顺序,你要小心一点,因为模块之间可能是存在依赖关系的,以需要正确的处理这种可能存在的依赖关系。
/**
* Return an array of the modules to be enabled when this profile is installed.
*
* The following required core modules are always enabled:
* 'block', 'filter', 'node', 'system', 'user'.
*
* @return
* An array of modules to be enabled.
*/
function university_profile_modules() {
return array(
// Enable optional core modules.
'dblog', 'color', 'help', 'taxonomy', 'throttle', 'search', 'statistics',
// Enable single signon by enabling a contributed module.
'pubcookie',
);
}
在启用这些模块以前,安装器会询问每一个模块,以查看Drupal底层的系统是否提供了该模块所有的必要条件。通过为每个模块调用hook_requirements('install')来完成检查。如果要求没有完全被满足,安装器将会失败,并报告缺少了哪些条件。
注意 必要条件钩子是一个可选的钩子,它允许模块在进行安装以前,测试是否准备好了所需要的环境。例如,一个模块可能在PHP的最小版本上有限制。必要条件钩子必须放在模块的.install文件中。关于该钩子的更多信息,可参看http://api.drupal.org/api/function/hook_requirements/6。
安装器在启用模块以前,首先会确保模块是存在的。它会在多个地方查找,表23-1列出了这些地方。由于我们要启用pubcookie模块(不包含在Drupal核心中的模块),在运行我们的安装轮廓以前,我们需要确保能够在下面所列的目录中找得到它。
表 23-1. Drupal模块可存放的目录
------------------------------------------------------------------------------
目录 存放的模块
modules Drupal 核心模块
sites/all/modules 第3方模块(适用于所有站点)
profiles/profilename/modules 位于安装轮廓中的模块
sites/*/modules 与你的settings.php文件位于同一目录的模块
安装器还会在放置你站点settings.php文件的目录下查找模块。如果settings.php位于sites/default,那么Drupal会在sites/default/modules下面找。类似的,如果settings.php位于sites/example.com,那么Drupal将在sites/example.com/modules下面寻找模块。