====== Drupal 编写自己的模块 ====== Drupal是个扩展性很好的CMS,Drupal有很丰富的第三方模块,一些功能只要通过一个小模块就可以很轻松的解决。 不过有些时候可能要实现一些特殊的功能,那么你就需要自己编写模块了。其实自己写一个模块也非常简单。 ===== Drupal 模块所必需的文件 ===== Drupal模块有下面两个文件就可以了: module_name.info module_name.module module_name.info 包含一些简单的模块信息,比如模块名,模块依赖于哪些其它模块,适用于那个Drupal版本扥等。 module_name.module 则是实现模块的功能的主要文件。 ===== module_name.info 文件===== **最简单的Drupal模块信息文件:** ; $Id$ name = pythonclub description = pythonclub.org test module package = Pythonclub.Org Package core = 6.x version = "6.x-1.1" * name 表示模块名字 * description 表示模块的说明 * package 表示属于哪个Package,就是在模块列表中属于哪一类 * core 这个最重要,表示这个模块适用于那个Drupal版本 * version 此模块的版本信息 ===== module_name.module 模块主体文件 ===== 这里是你一显身手的地方,这里你可以重写各种drupal hook,如果你想做个filter,那你只要添加函数 module_name_filter();如果你想加一个block,那你添加函数module_name_block() 就可以了。 一般在这里写你自己的hook函数,Drupal会通过Hook方式来调用你的函数。下面就以实现一个Block为例子,实现一个现实固定内容的模块。 t('pythonclub.org test block'), 'weight' => 0, 'status' => 1, 'region' => 'left'); return $blocks; } else if ($op == 'view') { $block = array('subject' => t('pythonclub.org test block'), 'content' => gen_block_content()); return $block; } } function gen_block_content() { return "This is test block content by PythonClub.org"; } # vim: set expandtab tabstop=2 shiftwidth=2 autoindent smartindent ft=php : ?> ===== 模块截图 ===== {{:drupal:module:drupal-module.jpg|}} {{:drupal:module:drupal-module-2.jpg|}} ===== 示例模块下载 ===== {{:drupal:module:pythonclub.zip|}}