第一节 建立文件

 

建立文件
 
我们要做的第一件事就是为我们的模块起个名字。“annotate”(注释)就很不错——简洁而且具有一定的描述性。然后,我们要找个地方放置它。可以选择和核心模块一起放在modules目录下,但这样维护就会变得很困难,因为必须记住哪些是核心模块哪些是我们自己的。所以,让我们把它和核心模块分开放置吧,就在sites/all/modules目录下。
 
建立sites/all/modules/custom目录。再在其中建立annoatae子目录,这样做是为了将你开发的模块(custom modules)和你所下载的第三方模块区分开来。是否采用这样的结构其实取决于你,不过它将使接手你的网站的其他开发者感到更加适应。而建立一个文件夹annotate而不是只建立一个文件annotate.module的原因在于我们的模块在发布的时候将包含一些其他的文件。例如:需要一个READEME.txt文件来向其他用户解释我们的模块用来做什么以及如何使用它,而一个annotate.info文件可以向Drupal主体提供一些相关信息。
 
那么,准备好开始了么?
我们的annotate.info文件如下所示:
 
 
: $id$
name = Annotate
description = Allows users to annotate nodes.
Core = 6.x
Package = Pro Drupal Developments
 
文件以简单的格式定义了些键和值。我们从CVS系统(concurrent versions system)的ID标签($id$)开始。如果我们想将这个模块加入到Drupal社区的模块库中来和其他人分享它,这个值将被CVS系统自动替换。然后我们建立了Drupal用于在模块管理页面中显示的名字和描述信息。再之后是详细的定义了我们的模块主要兼容的Drupal的版本,此时,版本是6.xDrupal 6 或者更高版本将不允许启用不兼容的模块。模块的显示是分组的,组别将决定于package的值,因此,假如我们有三个不同的模块都定义了Package = Pro Drupal Developments 那么它们将显示在同一组中。我们还可以为这个列表增加一些可选的值。下面是一个需要PHP5.2环境以及必须开启forumtaxonomy模块的例子:
 
: $id$
name = Forum confusion
description = Randomly reassigns replies to different discussion threads.
core = 6.x
dependencies[] = forum
dependencies[] = taxonomy
package = “Evil Bob’s Forum Bonuspak”
php = 5.2
 
 
Note:你可能不明白为什么我们需要一个独立的.info文件。为什么不在主模块文件中定义一个函数来返回这些数据呢?因为当调用模块管理页面,必须读取和分析每一个模块是否开启,这将导致内存的使用量远大于平时,甚至会超出PHP所指配的内存量的界限。而通过使用.info文件,信息将消耗最小的内存就进行快速的读取。
 
 
现在,我们已经准备好创建模块的主体了。在sites/all/modules/custom/annotate子目录下建立名为annotate.module的文件吧。在文件的开头写上PHP开头标签和CVSID标签,之后的内容如下:
 
<?php
// $id$
/**
 *@file
*Lets users add private annotations to nodes.
*
*Adds a text field when a node is displayed
*so that authenticated users may make notes.
*/
 
首先应该注意到的是这段内容的格式。我们以/**开头,在接下来的每一行,又用了一个空格和一个单独的星号(*)开头。在最后,用一个独立的“*/”作为这段内容的结尾。@file起到作用的是表明下一行将会描述文件的主要作用。有了这一行描述,api.module——自动提取和格式化Drupal文档的模块——就能明白我们的文件究竟用来干什么了。在空了一行之后,我们又加入了一个稍为详细一些的描述,这是专门为了那些测试(毫无疑问也将优化)我们模块的开发者准备的。要注意的是,这里并没有使用PHP的结束标签(?>):这在PHP中是可选的行为,但是如果加上它,将可能由于文件末尾处出现由空白区域导致一些问题。(详见http://drupal.org/node/545
 
Note:为什么我们对于格式如此挑剔呢?因为当全世界数以百计的人们共同开发一个项目的时候,所有人遵循同一准则工作能节省许多时间。而Drupal编程所要求的风格细节可以在Drupal开发手册中“编码准则(coding standards)”一节中找到。(详见http://drupal.org/node/318).
 
我们下一道工序是定义一些设定,以便形成一个网页表单——让我们选择到底要注释哪些节点类型。有两步工作需要完成:首先,定义一个可以用来访问我们的设定的路径;然后,建立设定表单。
 

 

评论

赞,非常不错的教材!
by:unsvse

-----------------------

偶来自:湖师,大家多多指教!

再在其中建立annoatae子目录 ------> " annoatae " ?

: $id$
代码有问题。

应该是
; $Id$

supply in stock and custom lace front wigs, full lace wigs, lace wigs, human hair wigs,
remy lace front wigs, cheap wigs, cheap, buy, celebrity
full lace wigs
lace wigs
lace wigs sale
lace front wigs
synthetic front lace wigs
A Famous Dresses Shop which sell directly Wedding Dresses, Evening Dress, Bridesmaid Dresses,Prom dresses
cheap wedding dresses
cheap evening dresses
cheap prom dresses
cheap evening dresses
cheap prom dresses
Elegant evening dresses are always associated with the brides and their bridesmaids.Shopping for evening dresses and your wedding dress in stylish bridal ..

首先是 :$Id$ 应该是 ;$Id$才对
其次是 Core和Package 首字母都应该是小写的