作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com在Beta5的module文件里面,还引入了这段代码:
/**
* Implements hook_module_implements_alter().
*
* Ensures the call to field_validation_form_field_ui_field_overview_form_alter()
* function runs after any invocation of the form_alter() by other modules, e.g.
* Field Group module.
*/
function field_validation_module_implements_alter(&$implementations, $hook) {
if ($hook == 'form_alter' && array_key_exists('field_validation', $implementations)) {
$group = $implementations['field_validation'];
unset($implementations['field_validation']);
$implementations['field_validation'] = $group;
}
}
这段代码的作用是,让field_validation模块的钩子hook_form_alter实现,放在最后面执行,这样就不会和field group模块冲突。
我们经常会遇到这样的问题,多个模块同时实现了一个钩子,此时执行的顺序,有时候非常重要,比如hook_form_alter就属于这样的钩子。在以前的情况下,我们采用修改模块重量的方式,简单一些的话,就是直接使用phpmyadmin,打开数据库的system表,直接修改对应模块的重量。复杂一点的话,把它放到安装文件的hook_install钩子里面。
/**
* Implements hook_install().
*/
function field_validation_install() {
db_query("UPDATE {system} SET weight = 10 WHERE name = 'field_validation'");
}
这里顺带说一下,在2.X版本里面,我们实现了对Feeds的集成,实现了hook_feeds_processor_targets_alter这个钩子,但是我们的实现,和Feeds模块自身的实现冲突了,所以我调整了一下模块的重量,通过调整重量,使得程序能够正常工作了.