用户工具

站点工具


drupal:module:programming

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为例子,实现一个现实固定内容的模块。

<?php
// $Id$
 
/**
* @file
* one line module description
*
* detail module description
* can be multi line.
 
*/
 
function pythonclub_block($op = 'list', $delta = 0, $edit = array()) {
if ($op == 'list') {
  $blocks[0] = array('info' => 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 <a href=\"http://pythonclub.org/\"> PythonClub.org</a>";
}
 
# vim: set expandtab tabstop=2 shiftwidth=2 autoindent smartindent ft=php :
?>

模块截图

示例模块下载

drupal/module/programming.txt · 最后更改: 2010/06/02 01:18 (外部编辑)