Drupal Hooks Alter的先后顺序
发布:smiling 来源: PHP粉丝网 添加日期:2014-12-05 14:58:52 浏览: 评论:0
下面来看一篇关于Drupal Hooks Alter的先后顺序文章,希望文章对你能带来帮助.
Drupal 系统的精髓在于Hooks(钩子)的设计,当系统存在多个模块时,那么模块alter hooks的先后顺序时怎样的呢?带着这个问题,我们找到了正确的答案,就是Drupal module weight 直接影响了hooks在module的执行顺序,默认的情况,每一个module的weight为0,那么order的方法就是按照module的name,这样极易受模块的名称所影响先后顺序。
更新模块Weight:在Drupal 7,模块的weight可以被灵活的修改,通过 hook_module_implements_alter() hook 来实现,代码如下:
- <?php
- /**
- * Implements hook_module_implements_alter().
- */
- function custommodule_module_implements_alter(&$implementations, $hook) {
- if (in_array($hook, array('form_alter'))) {
- // Move our hook implementation to the bottom.
- $group = $implementations['custommodule'];
- unset($implementations['custommodule']);
- $implementations['custommodule'] = $group;
- }//开源软件:phpfensi.com
- }
- ?>
另外一个兼容Drupal所有版本的方法时,hook_install 在 “custom_module.install” 文件中.
注意:使用hook_install的时候需要在后台删除模块,再重新启用模块才会生效,代码如下:
- <?php
- function your_module_name_install() {
- db_update('system')
- ->fields(array('weight' => your_preferred_weight))
- ->condition('name', '[your_module_name]', '=')
- ->execute();
- }
- ?>
你也通过一个代码片段来直接更新数据库,代码如下:
- <?php
- db_query("UPDATE {system} SET weight = [your_preferred_weight] WHERE type = 'module' AND name = '[your_module_name]'");
- ?>
也可以通过第三方模块来修改,可以使用 Utility 模块和Modules weight模块.
Drupal 系统模块列表(包含name和weight):
- +----------------------------+--------+--------+--------+
- | name | type | status | weight |
- +----------------------------+--------+--------+--------+
- | strongarm | module | 1 | -1000 |
- | block | module | 1 | -5 |
- | webform | module | 1 | -1 |
- | backup_migrate | module | 1 | 0 |
- | colorbox | module | 1 | 0 |
- | contextual | module | 1 | 0 |
- | crumbs | module | 1 | 0 |
- | ctools | module | 1 | 0 |
- | date | module | 1 | 0 |
- | date_api | module | 1 | 0 |
- | date_views | module | 1 | 0 |
- | entity | module | 1 | 0 |
- | faq | module | 1 | 0 |
- | field | module | 1 | 0 |
- | field_ui | module | 1 | 0 |
- | file | module | 1 | 0 |
- | filter | module | 1 | 0 |
- | image | module | 1 | 0 |
- | libraries | module | 1 | 0 |
- | link | module | 1 | 0 |
- | list | module | 1 | 0 |
- | locale | module | 1 | 0 |
- | masquerade | module | 1 | 0 |
- | menu | module | 1 | 0 |
- | menu_block | module | 1 | 0 |
- | node | module | 1 | 0 |
- | options | module | 1 | 0 |
- | path | module | 1 | 0 |
- | print | module | 1 | 0 |
- | search | module | 1 | 0 |
- | shortcut | module | 1 | 0 |
- | taxonomy | module | 1 | 0 |
- | taxonomy_manager | module | 1 | 0 |
- | text | module | 1 | 0 |
- | token | module | 1 | 0 |
- | translation | module | 1 | 0 |
- | transliteration | module | 1 | 0 |
- | update | module | 1 | 0 |
- | user | module | 1 | 0 |
- | views_ui | module | 1 | 0 |
- | wysiwyg | module | 1 | 0 |
- | dblog | module | 1 | 0 |
- | domain | module | 1 | 0 |
- | mollom | module | 1 | 0 |
- | overlay | module | 1 | 0 |
- | system | module | 1 | 0 |
- | field_group | module | 1 | 1 |
- | pathauto | module | 1 | 1 |
- | i18n | module | 1 | 10 |
- | i18n_string | module | 1 | 10 |
- | views | module | 1 | 10 |
- | rules | module | 1 | 20 |
- | admin_menu | module | 1 | 100 |
- +----------------------------+--------+--------+--------+
你可以通过这个页面找到Drupal中所有核心的Hooks,它可能会对你非常有用.
Tags: Drupal Hooks Alter
相关文章
- ·Drupal中l()函数使用方法详解(2014-11-27)
- ·Drupal核心与模块版本及版本号选择技巧(2014-12-05)
- ·Drupal Schema 模块从现有数据库到hook_schema(2014-12-05)
- ·Drupal Overlay 应用到指定页面2种方法(2014-12-05)
- ·解决Drupal Overlay中margin-top无效问题(2014-12-05)
- ·Drupal 实现多语言站点的方法(2014-12-05)
- ·Drupal 7操作数据库常用sql(更新,删除,查询)(2014-12-05)
- ·Drupal 7自定义表单开发要点与例子(2014-12-05)
- ·使用 Drupal Form Hooks 进行表单自定义修改(2014-12-05)
- ·Drupal 7 实现上一篇下一篇的简单方法(2015-02-16)
- ·Drupal 7多站点共用同一个数据库如何配置(2015-04-04)
- ·Drupal如何正确的方式渲染Field(字段)实例(2015-04-04)
- ·总结Drupal电商平台 Commerce Ubercart 比较(2015-04-04)
- ·简单方法修改drupal运行时的php内存(2015-04-04)
- ·Drupal中如何使用JQuery和Ajax(2015-04-04)
- ·简单办法解决Drupal无法正确获取到ip地址的问题(2015-04-04)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)