Drupal 二次开发应遵循的标准

来源:互联网 发布:modbus通讯协议及c编程 编辑:程序博客网 时间:2024/04/30 14:22

原文: http://drupaluser.cn


Drupal使用者中文社区 ,提供drupal模块中文介绍,drupal教程,drupal开发,drupal主题制作文章。

 

 

模块(Module) 是扩展 Drupal 的主要机制。它们实现一个定义良好的接口,使新模块和系统能够相互交互。
Drupal 将这个接口中的函数称为挂钩(hook)。

Drupal 挂钩分成为三类;它们在模块中有三种作用:

身份验证(Authentication) 提供额外的用户身份验证机制 
核心(Core) 与核心 Drupal 代码进行交互 
节点(Node) 向系统提供新的节点类型 

通常,如果需要以任何方式扩展 Drupal,就要创建新模块。需要创建模块的一种常见情况是,
数据库中的标准节点表不包含应用程序所需的信息。

实现节点挂钩的模块很容易利用扩展的数据库模式存储它所需的任何信息。一定要理解一点:
模块不必实现 Drupal 的所有挂钩;它只需实现那些实现扩展所需的挂钩。

节点访问挂钩

<module_name>_perm

perm 挂钩定义可以分配给每个用户的访问权限类型。

节点模块定义了几种标准类型:

<module_name>_access

access 挂钩能够将对内容的访问限制为某些操作。
传递节点操作(查看、创建、更新、删除等等)和节点来帮助确定访问特权。

节点显示挂钩

<module_name>_form

form 挂钩定义用来添加或编辑这个模块的节点的输入组件,比如文本域、复选框等等。
文档中提供了这个函数的示例。 form 接口的实现在 Drupal 4.6 和 4.7 之间已经改变了。

<module_name>_validate

在将数据提交给 Web 站点之前,模块使用 validate 挂钩确保节点中的数据是有效的。

<module_name>_submit

在 validate 挂钩成功完成之后,在将数据提交给 Web 站点之前,模块使用 submit 挂钩对节点中的数据进行修改。

<module_name>_view

view 挂钩为模块提供定义此类型节点的显示方式的机制。它首先通过使用另一个挂钩对节点进行过滤,然后通过主题化过程生成 HTML。

<module_name>_menu

menu 挂钩使模块能够定义它希望处理的 URL 路径。
返回值是一个条目数组。每个条目是一个关联数组,定义一个惟一的 URL。
返回值有各种形式,从路径树形式的一般条目到回调条目(为某一路径注册要调用的函数)。

<module_name>_nodeapi

如果需要与系统中的其他模块进行交互,nodeapi 挂钩就很有用了。
例如,如果启用了 comment 模块,那么可以调用 comment_nodeapi() 函数,从而使用与节点相关联的评论信息来扩展节点对象。nodeapi 挂钩还可以用于其他事件,包括查看、数据库访问、搜索、检验等等。

节点数据库挂钩

<module_name>_load

load 挂钩允许模块从数据库中额外的表中装载与此类型节点相关的任何额外信息。
返回值是一个对象,其中包含要添加的额外属性。Drupal 会自动地将它们与正在装载的节点合并。

<module_name>_insert

insert 挂钩通知模块将节点的数据添加到数据库中。
通常,这会调用数据库抽象层中的一个函数(例如,db_query),从而将节点的相关数据插入为这个模块定义的表中。存储在 node 数据库表中的标准数据(比如主体、创建日期等等)是自动地写入数据库的。

<module_name>_update

update 挂钩使模块能够更新数据库中现有节点的数据。
如果要支持模块的节点修订,update 挂钩也是最常见的实现所需代码的位置。

<module_name>_delete

delete 挂钩允许模块在从数据库中删除节点时执行额外的操作。
在这时,可以清空模块特有的任何表。

Web 站点的外观标准主题函数:

1.<theme name>_<content name>

这个函数的名称由当前主题的名称和被主题化的内容的名称(即节点类型)组成。
如果当前主题名为 ibc,而且我们要对内容 announcement 进行主题化,
那么这个主题函数名就是 ibc_announcement。

2.<theme engine name>_<content name>

这个函数的名称由当前主题引擎的名称和内容的名称组成。
我们将使用 PHPtemplate 引擎,所以对于内容 announcement,
这个主题函数名就是 phptemplate_announcement。

3.theme_<content name>

这是最后一个函数,也是最简单的。如果要对内容 announcement 进行主题化,
那么这个主题函数名就是 theme_announcement。

模板文件

PHPTemplate 允许将特定的文件(称为模板文件)映射到 Drupal 中的特定函数和模块。
模板文件以 .tpl.php 结尾,它使用相关联的函数或模块传递给它的一个数据数组。
可以使用 PHP 和 xHTML 操作这一数据,将它显示在 Web 页面上。
Drupal 为现有的节点类型提供了一般性模板,帮助您对主题进行定制。

page.tpl.php、node.tpl.php 和 comment.tpl.php 文件是一般性模板的例子。
它们保存在主题目录中。页面模板定义的页面用来包含节点模板定义的任何节点的显示。

page.tpl.php

这里很可能是开始对主题进行定制的地方。这个模板定义 Drupal 显示的所有内容页面的结构。
在这里,可以定义全局的结构化 xHTML 元素(比如 head 和 body 元素)、样式表的包含文件、设置内容布局
的语义的骨架 DIV 元素等。

node.tpl.php

这个模板用来控制如何显示节点数据。如果希望对特定类型的节点进行主题化,
那么要复制 node.tpl.php 文件并将文件名改为 node-<type>.tpl.php,其中的 <type> 是节点类型的名称。
我们在 IBC Web 站点的讨论部分中使用一个称为 node-forum.tpl.php 的模板,从而改变论坛内容的默认布局。

comment.tpl.php

这个模板文件控制一条评论的布局。可以使用 Drupal 的 Comment 模块 将评论添加到页面中。

转自:http://www.ibm.com/developerworks/cn/web/i-osource5/

原创粉丝点击