Drupal 模块开发基本教程(一)

 

第一部分:基本模块结构

事实上,模块真正必须实现的函数只有一个,那就是hook_help()。这里我们约定在本文中对drupal的系统“钩子”我们都写为“hook_钩子名”的形式,你实现的时候的函数名实际上是“模块名_钩子名”的形式。

什么是钩子(hook)?

Drupal 是一个内容管理系统的编程框架,其核心功能已经很完备了。我们编写扩展模块时并不需要自己完成每一个功能,大多数扩展系统的方法只是按命名规则写好钩子 (Hook)的实现函数,系统就会在特定的时候来调用你的函数,这样你的扩展功能就被实现了。记住,不是你去调用系统,而是系统来调用你,我觉得这个和 Windows的消息循环是有点类似的。

Hook_help()可以告诉drupal系统模块的信息以使模块在“模块”管理页面上列出来,这样用户就可以选择是否启用或禁用此模块了。模块一但被 启用,模块文件里的全部代码都被包含到系统中,同时,模块的函数也可以调用drupal的所有可用函数和访问所有可用变量了。

下面是最简单的hook_help()写法,这里的模块文件名是example.module,模块名是example,记得在php文件要有〈?php和?〉标记在文件首尾。

function example_help($section) {
  switch ($section) {
    case 'admin/modules#description':
      // 下面的描述会显示在admin/modules路径下的模块列表里
      return t('An example module showing how to develop a module for Drupal.');
  }
}

只要将包含上面函数的example.module文件放到drupal目录下的modules子目录里,访问“模块”管理页面(在admin/modules)就可以启用这个模块了,简单吧。

注:上面的返回值中我们使用了t()函数,这个函数用以实现drupal的本地化,虽然代码里是写的英文,但如果我们有对应的本地语言的翻译,用户会看到对应的本地化字符串。

现在,我们有了一个可启用/禁用的模块了,在开始为它添加功能之前,我们先了解一下Drupal的模块开发编程规范(全文见 http://cvs.drupal.org/viewcvs/*checkout*/drupal/contributions/CODING_STANDARDS.html?rev=1.1&content-type=text%2Fplain )。Drupal为了最大程度的兼容PHP的不同版本,它不使用命名空间或类的封装特性,因此,我们需要特别注意命名的问题,一般的约定是:

1)函数和方法使用小写字符,并用下划线分隔单词。函数应当使用模块名作为前缀以避免不同模块间的函数名冲突。私有的函数和方法再在名称前加一个下划线。
2)常量名完全大写,并用下划线分隔单词。前面应当加上大写的模块名前缀。
3)你定义的全局变量的名字前加上“_模块名_”前缀。
其他的约定请参见编码规范。

模块可以实现的功能很多,一般分为如下几个功能类别:
1)产生页面显示内容;
2)自定义node类型;
3)扩展现有的node类型;
4)生成定制的区块(block);
5)控制node的显示权限;
6)文件上传;
7)定制过滤器(Filter);
8)其他高级应用。

下面我们以自定义页面显示内容为例开始module开发之旅。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值