`
羽落窗前
  • 浏览: 107533 次
  • 性别: 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使用详解

    这篇博客文章深入讲解了Drupal模块开发中如何使用HOOK,将帮助我们理解并熟练运用这一关键特性。 一、HOOK的基本概念 HOOK是Drupal中的一种钩子机制,它允许模块在特定事件发生时执行自定义代码。 Drupal的核心或...

    drupal常用hook、theme_hook、模板命名等小结

    drupal常用hook、theme_hook、模板命名等小结

    drupal-codegenerator:hook_schema() 和 hook_entity_info() 的代码生成器

    在Drupal中,扩展模块通过实现特定的钩子(hook)来扩展系统功能。`hook_schema()` 和 `hook_entity_info()` 都是Drupal核心提供的关键钩子,它们在数据库建模和实体管理中扮演着重要角色。 `hook_schema()` 是 ...

    drupal_6_core_hooks_cheat_sheet

    钩子是Drupal框架中的关键概念之一,允许模块在特定的时间点或事件发生时执行自定义代码。本文将详细介绍Drupal 6核心模块中的一些重要钩子。 #### 核心钩子概述 - **hook_access($op, $node, $account)**: 定义...

    drupal-9.0.1_drupal9_drupal9教程_drupal9开发实例_

    这些教程可能涵盖如何创建用户、发布内容、安装和配置模块,以及如何自定义Drupal网站的外观和功能。 "Drupal 9开发实例"则更深入,提供了实际项目中的应用示例,比如构建电子商务网站、社交媒体平台或企业内部系统...

    drupal之hook_link和hook_link_alter钩子函数解析

    主要为大家介绍了drupal中hook_link和hook_link_alter钩子函数,实例分析了钩子函数的具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下

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

    其中,hook_user是一个非常实用的钩子函数,通过它可以在用户注册、登录、注销、更新用户信息等事件发生时,执行自定义的代码逻辑。同时,Drupal内置的mail系统提供了一套标准方法用于发送电子邮件。 接下来,我们...

    Drupal中hook_theme函数用法

    此外,Drupal 还提供了预处理机制,即 `template_preprocess_HOOK()` 函数,用于在渲染模板之前处理变量。例如,你可以定义一个 `template_preprocess_hot_news()` 函数: ```php function template_preprocess_hot...

    drupal使用hook_form_alter()修改表单实例

    Drupal拥有强大的模块化架构,开发者可以通过编写钩子函数(hooks)来扩展和自定义网站的功能,其中hook_form_alter()是Drupal核心提供的一个非常重要的钩子函数。 在Drupal中,表单是由数组结构组成的,通过hook_...

    drupal 7 module development

    `hook_install()` 和 `hook_uninstall()` 在安装或卸载模块时执行,`hook_update_N()` 用于执行数据库更新脚本。 了解并掌握以上知识点,你就能有效地开发 Drupal 7 模块,为 Drupal 网站增加定制功能。通过不断...

    drupal7 自己写的扩展模块 news

    在这个场景中,我们讨论的是一个名为 "news" 的自定义扩展模块,专为 Drupal 7 设计。这个模块在 Drupal 官方库中可能尚未存在,意味着它是开发者独立编写的,以满足特定需求或功能。 开发 Drupal 模块通常涉及以下...

    DRUPAL6中定义hook_menu参数的方法

    总之,理解并熟练使用 `hook_menu()` 是 Drupal 开发中的关键技能,它允许开发者自定义站点的导航结构,创建动态内容和管理用户访问权限。通过合理的配置,可以实现各种复杂的功能和布局,使得 Drupal 成为一个功能...

    入门到熟悉Drupal6.x模块开发简明实用教程

    - **编辑.info文件**:`.info`文件是模块的核心配置文件,用于向Drupal系统描述模块的基本信息,包括模块名称、版本号、描述、依赖项等。正确设置这些信息对模块的识别和安装至关重要。 - **.info文件细节**:在`....

    Drupal模块分类

    6. **维护与更新**:由于是开源项目,"Drupal模块分类"会持续接收社区的贡献和改进,以适应Drupal的最新版本和用户的新需求。 在实际操作中,安装并启用“module_filter”这个压缩包文件后,您可以在Drupal的管理...

    sparql_update_indexer:Drupal 7 模块,支持通过 SPARQL 1.1 更新协议索引实体

    `sparql_update_indexer`模块允许开发者使用SPARQL更新语句来动态地更新和维护这些索引,而不必依赖Drupal的标准索引机制,如Apache Solr或Elasticsearch。这种做法在处理大量异构数据或者需要与其他RDF数据源进行...

    适合运行在SinaAppEngine(SAE)上的Drupal7.x_PHP_JavaScript_.zip

    10. **持续集成/持续部署(CI/CD)**:为了高效管理和更新SAE上的Drupal实例,可以利用Git等版本控制系统配合自动化部署工具实现CI/CD流程。 这个"Drupal4sae-7.12-1.x"版本很可能已经包含了上述针对SAE优化的调整和...

    drupal6搭建sns网站(Drupal_6_Social_Networking)

    本文将深入探讨如何使用Drupal 6搭建一个功能完善的社交网络平台。 首先,理解SNS(Social Networking Site)的概念至关重要。SNS是指通过互联网提供用户之间交流、分享信息、建立和维护关系的平台。它们通常包含...

    Drupal专业开发指南

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

    drupal 6 钩子

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

Global site tag (gtag.js) - Google Analytics