`
羽落窗前
  • 浏览: 108539 次
  • 性别: Icon_minigender_2
  • 来自: 厦门
社区版块
存档分类
最新评论

Drupal模块自定义版本更新(hook_update_N)的用法

阅读更多

自己编写的Drupal模块,有时候需要对数据库表进行修改,但是又不想抹掉已经在数据库中存有数据的表格,就要用到hook_update_N()。

 

步骤:

1。在模块的 .install 文件夹下添加hook_update_N()的钩子. 按照drupal官网文档上的命名规则,建议用version版本号来定义N是多少。例如,如果.info里version = ‘6.x-1.2', 那么function名可以定义为 xxxx_update_6012()

 

2.  以下是几种修改数据库表的例子

 

- Adding a new column

 

<?php
function mymodule_update_6100() {
  $ret = array();
  db_add_field($ret, 'mytable1', 'newcol', array('type' => 'int', 'not null' => TRUE));
  return $ret;
}
?>
 

 

- Add a new table

 

<?php
function mymodule_update_6101() {
  $schema['mytable2'] = array(
     // table definition array goes here
  );
  $ret = array();
  db_create_table($ret, 'mytable2', $schema['mytable2']);
  return $ret;
}
?>
 

 

 

- Add a new key

 

<?php
function mymodule_update_6102() {
  $ret = array();
  db_add_unique_key($ret, 'mytable2', 'mykey', array('field1', 'field2')); 
  return $ret;
}
?>
 

 

3. 添加完成之后,进入update.php,点击continue,在 Select version里就能看到了。

注意:Drupal 6 有一个bug, 如果module的名字里包含大写字母,在select version里会找不到这个模块的更新版本。解决方法是,在includes/install.inc文件里,添加一行代码,如下:

function drupal_get_schema_versions($module) {
  。。。
  $module = strtolower($module); //加上这一行
  foreach ($functions['user'] as $function) {
  。。。
}
 

 

 

 

 

 

 

分享到:
评论

相关推荐

    drupal中创建hook_user并调用drupal的mail函数发送email实例

    通过上述介绍,我们可以看到,在Drupal中创建hook_user并调用mail函数发送电子邮件的过程涉及到Drupal模块开发的多个方面,包括对hook的理解和使用,表单的创建和处理,以及邮件系统的配置和调用。希望本文的内容...

    Drupal专业开发指南

    钩子(Hook)是一种允许开发者扩展Drupal核心功能或已有模块功能的方法。通过实现特定的钩子函数,可以改变数据处理流程或添加新的功能。 **1.7 主题** 主题用来改变网站的外观和布局,可以通过选择不同的主题来实现...

    drupal 6 钩子

    通过理解这些钩子的功能和使用方法,开发者可以更加灵活地扩展 Drupal 的功能,满足不同项目的需求。此外,Drupal 还提供了更多高级钩子,如 `hook_nodeapi()`、`hook_menu()` 等,这些钩子能够进一步增强 Drupal 的...

    Drupal API

    `hook_init()`、`hook_menu()` 和 `hook_block()` 等钩子函数是模块开发中的关键,它们允许在 Drupal 初始化时、创建菜单项或添加区块时执行自定义代码。 4. **主题系统**:Drupal 的主题系统允许开发者通过 PHP 和...

    jquery简单入门

    此外,还介绍了 Drupal 中的重要函数 `hook_menu()` 及其使用方法,帮助读者更好地理解如何在 Drupal 中管理菜单结构和路径。对于初学者而言,了解这些基础知识将有助于更快地上手 jQuery 和 Drupal 的开发工作。

Global site tag (gtag.js) - Google Analytics