作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
如果我们没有特别指定,那么Drupal会假定我们把页面回调函数放在了module文件中。在Drupal7中,对于每个页面请求,系统通常都会加载所有的module文件,为了尽可能的降低所加载的module文件大小,我们可以把很多回调函数放置在inc文件中。可以使用菜单项中的file键,来指定哪个文件包含了它的回调函数,这样回调函数就不需要放在当前的module文件中了。我们在前面一章中,就曾提到过file键。
如果我们定义了file键,那么Drupal默认将会在当前模块目录下查找该文件。如果页面回调函数是由其它模块提供的,也就是说该文件不在当前模块目录中,那么我们需要告诉Drupal在查找该文件时所用的文件路径,这里使用file path键,就可以轻松的实现这一点了。我们在前面一章中,就曾用到过file path键。
我们新建一个menu_abc.pages.inc文件,将我们的回调函数剪切过去,然后修改菜单项中的代码,添加file键。
function menu_abc_menu() {
$items['menu_abc'] = array(
'title' => '菜单ABC',
'description' => '一个简单的菜单项.',
'page callback' => 'menu_abc_callback_page',
'file' => 'menu_abc.pages.inc',
'access callback' => TRUE,
'weight' => 10,
'menu_name' => 'main-menu',
);
return $items;
}
保存好module文件和inc文件后,清空缓存数据,我们看到了相同的结果。如果我们修改inc文件中的返回内容,我们会看到相应的变化。此时回调函数已经放在inc文件中了。