跳转到主要内容
东方龙马 提交于 2 May 2009
我们要做的第一件事就是为我们的模块起个名字。“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.x。Drupal 6 或者更高版本将不允许启用不兼容的模块。模块的显示是分组的,组别将决定于package的值,因此,假如我们有三个不同的模块都定义了Package = Pro Drupal Developments 那么它们将显示在同一组中。我们还可以为这个列表增加一些可选的值。下面是一个需要PHP5.2环境以及必须开启forum和taxonomy模块的例子:   : $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开头标签和CVS的ID标签,之后的内容如下:   <?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).   我们下一道工序是定义一些设定,以便形成一个网页表单——让我们选择到底要注释哪些节点类型。有两步工作需要完成:首先,定义一个可以用来访问我们的设定的路径;然后,建立设定表单。

 

Taxonomy upgrade extras