About Drupal.

本篇文章是对Druapl的一些基本概念的介绍,使读者从宏观上大概了解Drupal.

= Drupal 的功能特点 =
从总体上看,Drupal有以下功能特点:
+ 搜索引擎友好的URL
+ Drupal有一个优秀的模块化结构,提供了许多模块,包括短消息、个性化书签、网站管理、Blog、日记、电子商务、电子出版、留言簿、Job、网上电影院、论坛、投票等模块。Drupal模块的下载、安装、定制非常方便
+ Drupal提供了强大的个性化环境,每个用户可以网站内容和表现形式进行个性化设置
+ Drupal提供了基于角色的权限系统,没有必要对每个用户进行授权,只需要对角色进行授权
+ Drupal提供的站内搜索系统能对站内的所有内容进行索引和搜索
+ Drupal的模板系统将内容和表现分离,可以很方便地控制网站的外观
+ Drupal提供内建的新闻聚合工具
+ 提供完善的站点管理和分析工具
+ Drupal的Caching机制能有效减少数据库查询次数,从而提高站点性能,降低服务器负荷.

= Drupal 安装 =
在安装Drupal前,你需要在服务器上先搭建一个PHP+MySQL环境。
初学者可以在windows上安装一个easyphp,然后什么都有了。专业网站一般是安装LAMP(Linux+Apache+MySQL+PHP)。
这里有一个图形化的Drupal安装指导文件:
http://www.flickr.com/photos/todays/sets/912418/
这里有一个flash的Drupal安装指导文件:
http://www.flickr.com/photos/todays/sets/912418/show/
上面两份安装指导文件写得已经非常详细了,这里只给出一个简单的安装步骤:
+ 下载Drupal
$ wget http://drupal.org/files/projects/drupal-4.6.3.tar.gz
+ 将Drupal安装到web服务器的目录内
$ tar xvzf drupal-4.6.3.tar.gz
$ su
# mv drupal-4.6.3/* drupal-4.6.3/.htaccess /var/www/localhost/htdocs/
# exit
+ 创建Drupal数据库
$ mysqladmin -u root -p create drupal
+ 创建Drupal数据库的表
$ mysql -u root -p drupal </var/www/localhost/htdocs/database/database.mysql
+ 修改设置文件
$ vi /var/www/localhost/hodocs/sites/default/settings.php
做以下设置:
$db_usr = “mysql://root:password@localhost/database”; (password需要改为root的口令)
$base_url = “http://localhost”;
然后就可以使用Drupal了。

= Drupal 中文语言包安装 =
Drupal 的设计比较科学,不仅扩展性好,安装语言包也非常方便。
+ 先下载官方中文语言包
$ wget http://drupal.org/files/projects/zh-hans-4.6.0.tar.gz
$ tar xvzf zh-hans-4.6.0.tar.gz
解压后得到一个 zh-hans.po 文件,这就是中文语言包。
+ 让Drupal加载国际化模块
administer->modules->locale 选择打勾,这样管理界面才会出现语言包管理界面
+ 导入中文语言包
administer->localization,选择import导入其他语言包,选择刚刚解压的zh-hans.po文件,然后选择import to:chinese simplified。
+ 选择中文为默认语言
装完语言包后,就会发现现在系统有两个语言包,一个是默认的英文,一个就是刚刚我们导入的中文。
我们只要启动中文语言包,并设置成默认就行,系统的页面马上就会变成中文。

= Drupal 的模块 =
模块化是drupal的一个特色,极大的方便了drupal的扩展和灵活定制的能力。Drupal模块的安装使用也很方便,只要将相应文件复制到modules目录下,就可以在‘管理-设置’里面方便地开启使用了。
Drupal的模块分为基本功能模块和功能增强模块。基本功能模块是 Drupal安装包里自带的功能模块,扩展功能模块则需要到 [http://drupal.org/project/Modules] 下载。基本功能模块又分为固定启用的基本功能模块和可选用的基本功能模块,固定启用的模块在drupal安装后即自动启用。
== 固定启用的模块 ==
– block
用于支持区块的实现
– filter
用于处理内容过滤以便于显示。
– system
用于处理管理员对站点的设置。
– user
用户管理及注册系统。
– watchdog
生成并管理系统日志。

== 基本功能模块 ==
- aggregator:
将drupal变成一个在线的rss订阅器。支持RSS和RDF格式。开启后可定时扫描新闻源自动更新内容(需要crontab支持)。
– archive
支持存档内容的管理与浏览,实现blog常见的日历查询功能,可通过区块显示。
– blog
这个模块让会员发表个人blog,使Drupal变成一个多人blog系统。
– blogapi
支持XML-RPC blog接口,允许用户通过第三方应用程序发表blog。
– book
允许多位会员一起合写一本书。
– comment
开启blog或文章的评论回复功能,并且可以定制评论的权限以及每一篇文章是否允许评论。
– contact
允许注册用户间通过填写‘联络表’发email联系。
– drupal
让用户使用一个 Drupal ID 跨站登录。
– forum
论坛
– help
在线帮助。很多标准模块和功能的帮助都可以在‘管理-帮助’里找到。
– legacy
为升级版本提供向下兼容的接口。
– locale
开启多语言支持,汉化drupal必须开启的模块。
– menu
允许管理员定制,添加新的导航菜单。
– node
所有blog或文章都必须通过node模块来提交和呈现给读者。
– page
用于发布静态页面。
– path
支持URL别名,便于管理记忆。
– ping
在发表新文章的时候通知其他网站。
– poll
开启投票功能。
– profile
开启此模块后,管理员将可以自定义用户注册时的表单项目和格式。
– queue
允许管理员监管文章,所有新提交的文章将先进入监管队列,经过监管员(moderator)考察后决定是否发表。
– search
该模块支持站内搜索。能够很好的支持中文搜索,而且速度很快。
– statistics
记录访问统计信息。
– story
不想把这类文章包括在你的日志里时,就可以通过这个模块实现。
– taxonomy
开启目录分类支持
– throttle
站点节流控制机制。当站点流量过大网络阻塞时可以通过节流设定自动关闭相应模块功能以保证访问响应。
– tracker
跟踪用户的最新发布。
– upload
支持上传文件。

== 功能增强模块 ==
Drupal的功能增强模块太多了,并且每天都在不断增加,这里只列出其中一些主要的功能增强模块:
– acidfree
一个功能完整的多媒体(例如图片、视频)管理系统。
– adsense
显示Google Adsense广告。可以方便的定制显示方式,支持从banner到link等6种显示格式。此外还可以选则对特定用户群关闭广告显示。
– album
影集模块。
– audio
登录用户可以上传、播放和下载音乐。能很好地识别mp3的ID3信息(例如歌名、艺术家等)
– atom
提供atom种子
– attachement
支持上传附件,可以用来替代Drupal自带的upload模块。不同节点的附件将分开放置,避免了文件重名的问题。
– automember
自动用户权限管理。管理员可以设定不同的标准,自动分配给用户不同的权限。例如只开放有限权限给新注册用户,发表一定数目文章后将自动成为资深用户并得到高级权限
– banner
自动轮换显示广告条。管理员可以方便的查看点击统计,并预设/开启/关闭/批准特定广告,用户则可以查看/修改/上载自己的广告条。
– bbcode
提供bbcode输入格式的支持。
– blog theme
允许用户选择自己blog的外观主题,当其它用户按作者浏览其blog时,看到的将是该blog作者自己选定的外观主题。
– bookmarks
用户可以编辑自己的书签,并通过区块显示。
– buddylist
用户可以编辑自己的好友名单,同时显示‘好友的blog’区块。
– captcha
图灵测试/字符校验模块,防止机器人自动注册
– chatbox
聊天室模块。
– codefilter
方便代码输入,能处理<code></code>和<?php ?>。
– contact directory
使用户可以添加自己的好友联络名单。
– database administration
提供数据库管理功能。管理员可以通过此模块在drupal界面进行数据库查询/修改/删除等功能。
– devel
为开发者和网管提供了许多好的工具。
– e-commerce
一整套电子商务工具。
– event
跟踪事件并通知用户。
– excerpt
摘要模块。Drupal发布内容时只能用正文的开头作摘要,然后根据设定自动截取摘要。
– ezmlm
用户将可以通过该模块订阅相关Ezmlm邮件列表。Ezmlm是一个基于qmail的群发邮件订阅系统。
– feedbak
反馈模块,可用于生成反馈表格收集用户意见或问题。
– flexiblock
让Drupal能随心所欲的摆放区块。
– flexinode
可以用此模块根据需要生成新的自定义节点(node)类型。在此基础上可以有很多灵活多变而非常实际的应用,可以说是drupal扩展模块里功能非常重要的一个。
– front page
用于方便的定制站点首页,可以完全脱离站点外观主题的限制生成个性化的首页。可以显示不同的首页给不同权限的用户,并可插入PHP代码完成更强大的动态显示。
– gallery
用于在线相册管理和展示。
– guestbook
留言簿
– hall of fame
名人堂模块。是对drupal自带的统计(statistic)模块的补充,可以统计站点共几篇文章,多少注册用户,建站时间,流行内容等,还可以显示发文最多用户,评论最多用户等。
– htmlarea
一种所见即所得的输入方式。
– image
像册。支持图片上传,并自动生成缩略图(thumbnail)。图片可以插入到页面中或组合成像册显示。
– img_assist
和Image模块共同使用,通过图形界面窗口更便捷地在节点中插入图片。
– internationalization
自动检测浏览器的编码设定,为匿名用户提供全方位的本地话翻译,包括节点内容界面的翻译。包括一个显示区块方便用户切换语种。
– job search
招聘与求职模块
– jsdomenu
生成多层弹出式菜单
– mail
向特定用户群发送email
– mailhandler
允许注册用户通过email创建/编辑内容或添加评论。
– media
这个模块将已废弃,分别被audio和video等模块取代。
– movie review
网上电影院
– node vote
对文章进行投票
– notification
自动发送邮件通知订阅者内容已更新。
– organic groups
允许用户自行组成小组,每个小组将有自己的主页显示小组成员发布的内容。
– pdfview
生成PDF文件
– photo album
相册模块。
– privatemsg
允许用户间发送私人信息。
– project
项目管理模块。项目组成员可以由此跟踪项目的进展,可以通过email发送项目更新通知。
– quote
用户在添加评论时可以方便的点选引用原文。引用部分用特殊格式显示以作区分。
– quotes
可以用于收集显示名人名言。通过区块随机显示。
– recipe
用于分享菜谱。
– rsvp
可以发送email邀请用户参加特定的事件(event),并可跟踪用户是否查看或接受了邀请。
– site map
显示站点导航图。
– sitemenu
按文章分类显示站点导航。
– smiley
使用表情符,自带了一些基本的表情符,用户可以自己添加。
– SMS gateway
发短信
– spam
防垃圾模块,防止你的blog成为一个实实在在的垃圾堆。
– spam_surbl
对spam模块进行功能增强,使之支持SURBL(Spam URI Realtime BlockList)。
– sql search
此搜索模块不使用drupal自带的搜索索引(search index),而是提供数据库搜寻功能,支持SQL和正则表示式(regular expressions),并提供高级搜寻过滤功能。
– statistics_filter
过滤网站管理员和搜索引擎的访问统计信息。
– stock
显示股票行情。用户可以自定制所显示的股票。
– subscriptions
允许用户订阅任一节点内容,通过email通知该节点的更新以及是否有新的评论。
– survey
可以创建调查问卷,调查结果可以下载为excel格式。
– taxonomy menu
分类系统导航菜单,其格式将和drupal系统导航菜单一致。
– theme editor
直接通过浏览编辑修改外观主题。
– tinyMCE WYSIWYG Editor
一个非常好用的所见即所得文本编辑器,用于编辑输入文章内容。
– trackback
开启trackback支持。
– video
在线影院
– VIM Color
支持VIM代码高亮(highlight),支持PHP, Perl, C, HTML, JAVA等多种语言。
– voting
投票/评级
– webform
创建‘网络表单’节点类型,可以用于提交调查问卷,投票,注册等。
– wiki
实现wiki功能。
– workspace
我的工作空间模块,提供一个用户专有的工作区,可以集中察看管理自己的文章。

 

 

 

 

 

 

 

Drupal宝典之定制篇                                        

在对Drupal做定制前,需要了解一些Drupal的基本术语:

+ Block(区块)

区块一般位于网页两边的侧栏中,用于导航或显示一些附加内容。区块是一种把数据定位到页面的方法之一。各主题风格可以通过block($subject, $content, $region = “main”)函数来控制区块的显示风格。

+ Box(盒子)

盒子是Drupal页面内容的容器。每一个盒子有一个标题和一些内容。各主题风格可以通过box($subject, $content, $region = “main”)函数来控制盒子的显示风格。

+ Engine(引擎)

引擎是一类特殊的主题,它通过模板来输出HTML内容。

+ Filter(过滤器)

过滤器是做内容过滤的框架。

+ Module(模块)

模块是为Drupal提供扩展功能的代码片段。有些模块是Drupal核心系统的一部分(例如taxonomy和blog模块),扩展模块(例如weblinks和image模块)则不属于Drupal的核心系统。核心模块已包含在Drupal的下载包中,扩展模块则需要单独下载。

+ Node(节点)

节点是Drupal中最简单又最难理解的一个概念。几乎Drupal中所有的内容都被存储为一个节点。一个节点就是Drupal的一块内容,它可以是投票、报道、书的一页、或一张图片。

+ Permissions(权限)

权限用于控制内容的创建、修改和站点管理等访问。管理员可以将权限赋给角色,将角色赋给用户。一个用户可以属于一个或多个角色。Drupal缺省提供了两种角色:游客和注册用户

+ Style(样式)

样式是主题或引擎提供的CSS文件,用于替换缺省的CSS。

+ Taxonomy(分类)

Drupal通过分类来描述目录系统,用于对网站的内容进行组织和分类。

+ Template(模板)

模板是基于某一模板引擎的,普通人可读懂的HTML文件,这些文件有一些特殊的代码,用于产生动态信息。

+ Theme(主题)

主题是包含一些函数的PHP文件,用于提供不同的布局风格。

= Drupal 模块安装 =

Drupal 已经自带了许多基本功能模块,在完成 Drupal 的安装后,开启这些模块就可以了。

如果你需要功能扩展模块,则需要到 http://drupal.org/project/Modules 下载并安装这些模块。

步骤非常简单:

+ 下载模块包

+ 解压缩

+ 把模块文件上传到 Drupal 的 modules 目录中

+ 有些模块可能需要运行 mysql 文件创建表

+ 在“管理->模块”中开启这个模块

= Drupal的邮件发送设置 =

用户在网站进行注册时,口令将发送到用户的邮箱里。这需要你的网站能进行邮件发送。

网站发送邮件的办法有许多种,这里推荐一种使用ssmtp发送邮件的方法。

假设你有一个gmail帐户,并打算用该帐户发送邮件:

+ 设置ssmtp

# vi /etc/ssmtp/ssmtp.conf

对该文件做如下设置:

root=xxxx@gmail.com (注:xxxx为用户名)

mailhub=smtp.gmail.com:465

rewriteDomail=gmail.com

hostname=gmail.com

+ 设置php.ini

# vi /etc/php/apache2-php4/php.ini

对该文件做如下设置:

sendmail_path = /usr/sbin/ssmtp -t -auxxxx@gmail.com -apxxxx (注:前一个xxxx是用户名,后一个xxxx是口令)

+ 在Drupal的”管理->设置->通用设置->E-mail地址”中

将E-mail地址设置为xxxx@gmail.com

= forum:论坛 =

Drupal的forum模块提供论坛功能。

在使用论坛模块时,应同时开启comment模块和taxonomy模块。comment模块为Drupal的节点提供讨论板功能,对论坛主题的回复就要用到该功能。taxonomy是智能分类模块,用于组织网站的内容,能自动对内容进行归类。

comment和taxonomy是论坛正常运行所必需的两个模块。

还可以配合其它模块来增强论坛的功能:

+ “管理->用户->配置”可以开启头像(图片)功能

+ 通过开启profile模块增强用户个人信息,可在”管理->设置->个人信息”中增加自定义内容

+ 通过使用privatemsg模块,用户间可以互相发短消息

privatemsg是一个站内消息系统,可在这里下载:

http://drupal.org/project/privatemsg

privatemsg的中文包在这里下载:

http://drupal.org/files/issues/priva…s-4.6.0.tar.gz

+ 通过subscriptions模块或notify模块让用户接收E-mail通知

+ 通过bbcode模块提供BBCode支持。

bbcode模块将提供一个工具条,能很方便地在帖子中插入bbcode。

= 定制自己的首页 =

在”管理->设置->通用设置->默认首页”里可以设置自己的首页,默认值是”node”。它仅仅显示一些被设置为“推荐到首页”的文章。

+ 假设你创建了一个新的节点,包含有非常多的链接和非常复杂的内容,想把这个节点设置为首页。首先找到这个节点的id,假设节点id是83,你只需要将默认首页设置为”node/83″就行了。

+ 假设你想将用户blog设置为首页,则须将默认首页设置为”blog”。

+ 假设你想把论坛设置为首页,则须将默认首页设置为”forum”。

= Drupal 界面定制 =

当 Drupal 站点安装好后,有许多方法对站点界面进行个性化的设置和定制:

+ 安装主题风格

主题风格控制了站点的外观和感受,你可以在网上下载Drupal的主题风格,并在”管理->主题”中启用这些风格。

+ 创建你自己的主题风格

如果你不想用别人预先做好的主题风格,而想为自己的站点打造一个完全不一样的外观,你可以通过开发自己的主题风格来达到这个目的。主题风格的开发人员应具备HTML/CSS知识,如果要开发复杂的主题,则需要懂得PHP。

+ 定制导航菜单

页面顶部和底部的菜单可以在”管理->主题->配置->菜单设置”中进行定制,主链接和备用链接中可以直接编写HTML代码。如果主链接为空,Drupal将根据你安装的模块自动建立导航菜单。每个主题风格可以定义不同的导航菜单。

如果是基于PHPTemplate引擎的主题风格,导航菜单的定义方式是为每个菜单进行定义。

+ 定制文字串

可以通过”管理->本地化->管理字符串”来定制本地语言的文本字符串,Drupal中几乎所有的文本字符串都可以修改。

= Drupal 的主题风格 =

== 模板引擎 ==

Drupal支持三种模板引擎:xTemplate、PHPTemplate、wgSmarty。xTemplate是Drupal自带的模板引擎,但支持该引擎的主题风格数量不多。其他两个模板引擎需要到 http://drupal.org/project/Theme%20engines 下载。其中基于 PHPTemplate 的主题风格非常多。

推荐使用 PHPTemplage,这个引擎大大加快Drupal的速度,非常有利于自己自定义模板,一些大型的Drupal站点都是用的这个引擎。

PHPTemplage 的安装方法:

+ 下载 PHPTemplate

+ 将解压后的phptemplate目录拷贝到Drupal的themes/engines目录

== 主题风格 ==

“主题”是Drupal站点的基本外貌和感觉。有时一个特定的站点会安装不止一个的主题。如果站点管理员提供了多个主题,你可以为你的帐号选择你喜欢的默认主题。

Drupal的官方站点提供了许多主题风格,具体见:

http://drupal.org/project/Themes

其中,Spreadfirefox是我最喜欢的主题风格,著名的 spreadfirefox.com 使用的就是这款主题。

除Drupal的官方站点外,还有许多其他机构或个人提供Drupal的主题风格,通过Google可以搜索到这些风格。

== Drupal 主题风格安装 ==

Drupal 主题风格的安装非常简单:

+ 在 http://drupal.org/project/Themes 下载新的主题风格

+ 阅读主题风格包中的 README 和 INSTALL 文件,看该主题风格包的安装是否需要一些特殊的步骤

+ 检查一下主题风格需要的模板引擎是否已安装

+ 将主题风格上载到Drupal的themes目录中

+ 通过”管理->主题”启用该主题风格,并将其设置为默认风格

== 主题风格中CSS的定制 ==

Drupal的主题定制非常灵活,可以定制每个区块定制的风格。如果懂PHP的话,几乎可以做出可以想得到风格来。

实际上,在大多时候我们主要是通过图片+CSS来定制,这是一种最简单的定制,也不需要懂得太多的PHP知识。

在themes目录下的每个主题目录中,有一个style.css文件。定制CSS的关键是搞清楚CSS元素控制的对象。但许多人搞不清楚CSS元素控制的对象,在这方面花了不少时间。其实只要选对工具,这实际上是非常容易做的。

这个强大的工具就是Firefox。大多数人只知道Firefox是一个浏览器,实际上Firefox提供了大量网页开发的工具。例如:

+ 选定一部分网页内容,通过右键菜单的View Selection Source功能,可以查看选定部分网页的源码。这是一个杀手级的功能,再也不必为在庞大的HTML源码中找不到相应的目标内容而头痛了。

+ 菜单 Tools->Page Info 可以看到非常详细的网页内容,包括表单、链接、多媒体等信息

+ 菜单 Tools->DOM Inspector 可以对网页的HTML、JavaScript、CSS等内容进行很方便的分级浏览

Firefox的功能太多,一时半刻说不完,我们还是回到CSS定制上面来。这需要用到一个Firefox的插件,插件名称是Web Developer,可以在Firefox的网站上下载到这个插件。

安装好Web Developer插件后,就可以用其提供的功能来定位对象的CSS控制元素:

+ 插件的CSS菜单下有一个View Style Information功能非常好用,当你的鼠标点击到网页的某项内容,就能看到该项内容所使用的相关CSS内容。

+ 在Information菜单下有一个Display ID & Class Details功能,能在网页上显示所有的ID和Class信息。

Web Developer插件是专门为网页开发人员提供的一把宝刀,功能太丰富了,你们就慢慢去体会吧。

= 提供搜索引擎友好的URL地址 =

Drupal提供了一个path模块,该模块能定义URL地址的别名。这些别名能大大提高地址的可读性,能帮助搜索引擎更有效地对站内内容进行索引。每个页面可以创建多个别名。

例如(左边是URL地址,右边是为其创建的别名):

user/login => login

image/tid/16 => store

taxonomy/term/7+19+20+21 => store/products/whirlygigs

node/3 => contact

node/10 => products/merchandise/cups

node/10 => cups

node/11 => products/merchandise/coffeemakers

== 批量别名设置 ==

Drupal里允许批量为URL设置别名。通过这个功能,可以提供完全不一样的URL地址,甚至可以为不同的语言提供完全本地化的地址。

批量修改别名的方法是在sites/default/settings.php中添加一个conf_url_rewrite函数(4.6.x),如果是Drupal 4.7.x,则函数名是custom_url_rewrite。

以下例子将所有的”node/$node_id”类型的URL修改为”display/$node_id”:

<?php

// 用于 Drupal 4.6.x 的例子

function conf_url_rewrite($path, $mode = ‘incoming’) {

if ($mode == ‘incoming’) { // 从客户端来的URL

return preg_replace(’!^display/(\d+)$!’, ‘node/\1′, $path);

} elseif ($mode == ‘outgoing’) { // 到客户端去的URL

return preg_replace(’!^node/(\d+)$!’, ‘display/\1′, $path);

}

}

?>

<?php

// 用于 Drupal 4.7.x 及更高版本的例子:

function custom_url_rewrite($type, $path, $original) {

// 如果已经为该地址设置了别名,则不作进一步处理

if ($path != $original) {

return $path;

}

if ($type == ’source’) { // 从客户端来的URL

return preg_replace(’!^display/(\d+)$!’, ‘node/\1′, $path);

} elseif ($type == ‘alias’) { // 到客户端去的URL

return preg_replace(’!^node/(\d+)$!’, ‘display/\1′, $path);

}

}

?>

 

 

 

 

 

Drupal模块功能一览    (返回)

Drupal 的模块化设计使得整个系统的功能扩展更灵活更规范,安装使用也很方便,只要将相应文件复制到modules目录下,就可以在‘管理-设置’里面方便地开启 使用了。除了drupal自带的标准模块外,还有很多用户使用过程中根据自己需要开发的扩展模块,这些模块的基本信息都可以在这里找到。但是对于新用户来 说,随之出现的一个问题就是,drupal.org只是提供了按字母顺序的列表,缺乏对这些模块的概括分类,经常把模块清单过了好几遍还找不到自己想要的 信息。另外这些扩展模块的功能介绍通常比较简单,而且大多数没有截屏或demo站点,如果不是很熟悉作者的语境,经常会让人摸不着头脑,搞不清楚每个模块 到底能实现什么功能。对不熟悉英文的新手更是麻烦,经常不得不下载后在本地试装才发现根本不是自己想要的。

基于以上原因,本文试图将drupal模块按不同功能分成几大类,希望能够帮助大家对功能近似的模块有一个总体概念,并快速地检索到自己需要的模块。需要 说明的是本文的目的不是详细介绍各个模块的设置和使用方法,所以没有原样照翻模块的文档说明,而是按自己的理解尽量简洁准确的概括出该模块的功能。俗话说 ‘百闻不如一见’,有的模块作者也给出了截屏图片或实例链接,作为补充手段,本文在保留这些链接的同时,将尽量在本站给出图片或例子,以避免国内用户不能 访问的问题。

本文还在不断地润色修改补充中,但由于时间以及个人水平所限,很多说明只是根据原文加上自己理解翻译而来,可能还不太通顺或者根本是错误的,还希望高手不吝赐教。关于具体模块的补充说明,请加评论在相关页面。对本文的一般性建议以及问题讨论可到论坛提出。谢谢!

关于区块

开始介绍之前,先要说明一下drupal里区块(block)的概念,不要和模块混淆。区块就是站点左右边栏用于导航或显示辅助信息的区间板块,用户可以 自己增删定制区块的显示,常见的左右导航条,最近文章/评论,广告链接等大多是通过区块来显示的。很多模块功能开启后,往往还需要开启相应的区块来显示传 达信息,比如评论(comment)模块允许用户添加评论,这时还可以通过开启相应区块来显示‘最新评论’。 所以在本文介绍模块功能时,如果可能都将在页面的右边栏显示相应区块,对于一些系统管理设置功能,由于权限问题,不可能实例显示,也将通过图片来给大家一 个直观的概念。
模块分类

Drupal 的模块化设计使得整个系统的功能扩展更灵活更规范,安装使用也很方便,只要将相应文件复制到modules目录下,就可以在‘管理-设置’里面方便地开启 使用了。除了drupal自带的标准模块外,还有很多用户使用过程中根据自己需要开发的扩展模块,这些模块的基本信息都可以在这里找到。但是对于新用户来 说,随之出现的一个问题就是,drupal.org只是提供了按字母顺序的列表,缺乏对这些模块的概括分类,经常把模块清单过了好几遍还找不到自己想要的 信息。另外这些扩展模块的功能介绍通常比较简单,而且大多数没有截屏或demo站点,如果不是很熟悉作者的语境,经常会让人摸不着头脑,搞不清楚每个模块 到底能实现什么功能。对不熟悉英文的新手更是麻烦,经常不得不下载后在本地试装才发现根本不是自己想要的。

标准模块

标准模块大家相对比较熟悉,如果你没有安装drupal,也可以到opensource.com去试用体会一下drupal的管理功能界面。 Opensource.com很方便的一处就是预装了常用的CMS/blog工具,如XOOPS,Mambo, WordPress,Drupal等,并开放admin权限,使大家可以亲身体会一下各个不同工具的管理界面功能。你可以试用绝大部分admin的管理功 能,比如开启模块,选用区块等,并马上看到效果。这些工具都是每两个小时就重装一次,恢复到初始状态,所以你可以尽管放心试用:)Drupal的试用页面 在这里,使用用户名:admin 密码:demo登录就可以了。本文在下面介绍标准模块时将不再另行附图或实例。

Drupal4.6.0共有自带的标准模块32个,其中固定启用的模块有5个,可选标准模块有27个。

固定标准模块

固定标准模块用于实现一些drupal最基本的功能。固定标准模块在drupal安装后即自动启用,管理员也无法选择关闭它们。从用户的角度来说,不理会这些模块的功能没有什么影响,可能只有drupal内核或模块开发者才需要关心它们的具体功能。这些模块包括:

* block: 用于支持区块的实现。
* filter: 用于处理内容过滤以便于显示。
* system: 用于处理管理员对站点的一般设置。
* user: 用户管理及注册系统。
* watchdog: 生成并管理系统日志。

可选标准模块

这些模块为drupal安装时自带的,包括了drupal最常用最基本的一些功能,如果你需要什么新的功能,可以先从这些模块中寻找合适的候选。

* aggregator:
用于实现聚合内容的管理,支持RSS和RDF格式。开启后可定时扫描新闻源自动更新内容(需要crontab支持),聚合内容可以分类按时间先后显示,更多信息可以在‘管理-帮助-聚合器’里找到。例子可参见BLOG家园的集锦栏目。
* archive:
支持存档内容的管理与浏览,实现blog常见的日历查询功能,可通过区块显示。例子见本站右上角的存档及右栏的“Browse Archives”日历区块。
* blog:
不用多说了吧,每个用户可以有自己的blog并按时间倒序排列。
* blogapi:
支持XML-RPC blog接口,允许用户通过第三方应用程序发表blog。
* book:
支持多个用户共同发布文献书籍,本文就是用文书(book)格式书写发布的。每名作者可以独立完成自己的部分,然后方便的插入到文书的相应的章节。读者可 以按目录章节浏览,另有导航区块(见左边栏)帮助浏览。开启book模块后,每个新加节点(图片/blog/page等)在‘编辑’之外都有一个‘提纲 (outline)’的选项,用以将相关节点按树状目录组织成书。
* comment:
支持添加评论。可以按时间或按对话显示,可以显示全文或只显示标题。另外不同用户根据不同权限可以访问,添加或监管评论。还可以开启评分功能,通过设置特 定的标准(如5票赞成以上),根据用户评分(不同权限的用户打分有不同权重)来自动决定文章/评论的命运(拒绝/发表/提升到首页等等)这一功能对于多用 户参与的社区型站点很有用处,可以让每名用户都参与到站点内容的管理中来,起到去芜存菁的作用。类似的功能有NodeModeration模块扩展到对每 个节点打分。
* contact:
允许注册用户间通过填写‘联络表’发email联系。一般来讲用户的email是不公开的,添加此模块后,查看用户资料时将出现‘联络(contact)’表单,可用于用户间发email联系。用户也可以自己设置不接受这种联络的email。
* drupal:
可以通过XML-RPC将自己的站点登记在中心服务器,所有公用中心服务器的站点用户可以互相登录而不用重新注册,缺省中心服务器为drupal.org,开启此模块后,你的站点也可以列在这里。此功能需要通过cron运行。
* forum:
就是论坛了:)Drupal的论坛功能还比较简陋,不知道到下一个版本会不会有所改进。
* help:
在线帮助。很多标准模块和功能的帮助都可以在‘管理-帮助’里找到。
* legacy:
为升级版本提供向下兼容的接口。
* locale:
本地化模块,安装此模块后将可以导入汉化文件。管理员还可以设置允许用户选择自己的语言界面。
* menu:
允许管理员定制,添加新的导航菜单。
* node:
Drupal 的核心概念之一就是采用节点管理内容发布,每一篇blog,每一张图都是一个节点,不同的节点有不同的特性,常用的节点类型有书籍(book), 网志(blog),故事(story)和静态页面(page)等,用户还可以自定义新的节点的类型。一般来说此模块是必选的。
* page:
用于发布静态页面。页面(page)也是以节点(node)的方式发布,当不包括在blog里。可以单独设置页面的属性,比如不显示‘由某某发布’和发布时间等,比较适合一般的站点说明/通告等。本站的‘关于’就是用page编写的。
* path:
允许使用路径别名,比如本站的关于本来是在’node/12’,通过别名指向(about/),更便于管理记忆。Path模块还允许一个节点对应多个别名路径。更多信息参见‘帮助-路径’。
* ping:
通过ping-o-matic自动发送更新通知给Weblogs,Technorati等服务。需要通过cron运行。
* poll:
一个简单的投票模块,可以在正文显示也可以通过区块显示,还可以设置投票自动关闭的时间。例子见这里以及右边栏。
* profile:
开启此模块后,管理员将可以自定义用户注册时的表单项目和格式。
* queue:
允许管理员监管文章,所有新提交的文章将先进入监管队列,经过监管员(moderator)考察后决定是否发表。
* search:
支持站内搜索。站点内容需要通过cron索引后才可搜索。此外对于中文搜索最好将‘最小搜索字长’由缺省的3改为2。
* statistics:
提供管理日志统计站点最新点击,文章阅览计数,外部链接等信息,还包括一个‘流行内容区块(popular content block)’,如右栏所示。此模块也需要运行cron来自动清除过期日志。
* story:
感觉基本上和blog/page节点类型没什么区别,我还没有搞懂这个节点类型原意是怎么用,大概是为了发布一些非日志类型的文章/新闻用的?但一般来说大家都用blog发布就好了,除非你不想把这类文章包括在你的日志里。例子见这里。
* taxonomy:
支持drupal分类系统,可以采用简单的一层分类,也可以设定复杂的树状多层分类。每一个根类叫一个词汇表(vocabulary),下面可以添加多层 子类,drupal里叫作词条(term)。同一词条可以在多个词汇表中出现,每一篇文章也可以被同时归入预先设定好的不同的词条。用户可以点击每篇文章 右上角的分类标签来查看所有同类文章,也可以通过‘taxonomy/term/’来查看不同分类的并集(term/1,2)或交集(term/1+2) 文章。此外论坛话题/图片等也可以有自己的分类。最后每个词条还有自己单独的rss feed方便读者订阅。对于一般blog使用单层平行分类应该就足够了,更方便灵活的分类可以通过tag来实现。taxonomy是drupal分类系统 的核心概念,更多介绍可以参见drupal.org的说明。
* throttle:
站点节流控制机制。当站点流量过大网络阻塞时可以通过节流设定自动关闭相应模块功能以保证访问响应。
* tracker:
跟踪用户的最新发布。每名用户信息栏将由‘track(跟踪)’选项列出该用户所有最新发布的栏目和时间。
* upload:
支持文件上传,用户发表文章时将可以上传附件。管理员可以限制附件大小及图片精度。

扩展模块

在drupal.org的模块下载页面提供了很多由drupal用户自己开发的模块,截止到统计之日(2005年6月1日)4.6.0版本的扩展模块共有 128个!功能更是多种多样,不一胜数,但这些模块只是按字母顺序罗列在那里,要从128个模块中找到自己想要的功能,实在是不太容易。所以本文在介绍这 些扩展模块时,打乱了字母顺序,将其按功能大致分成几大类,希望对检索比较类似功能的模块能有所帮助。

如果没有特别列出,下面的模块都是4.6.0版本,此外有些实用的老版本模块如果可以在4.6.0中使用,也会加以介绍,比如bbcode模块。由于时间有限,模块众多且不断更新,难免有一些错误和疏漏,还请补充指正。

注:
SQL表示该模块需要导入相应的sql文件生成新的表单才能使用;
例表示该模块有图片或实例帮助说明。

扩展模块根据功能共分成了以下几类:

1. 站点安全(Security)
包括一些增强站点安全设置的模块。
2. 基本管理功能(Admin Tools)
包括一些站点基本管理功能的增强,如用户权限分配,数据库管理,搜索功能等。
3. 输入格式(Input Formats)
包括各种输入法过滤器,及所见即所得的文本编辑器。
4. 文件图片管理(Files and Pictures Management)
所有涉及文件上传,图片显示与管理等功能的模块。
5. 节点功能增强(Single Node Function Enhancement)
包括对单个节点内容特性及管理功能的增强,如excerpt模块允许用户添加摘要。
6. 内容组织与站点导航(Multi-node Content Display and Navigation)
这些模块用于按一定规则(如主体类别)组织展示多个节点内容,如Article模块将站点所有节点内容按类别集中展示,常可用于站点导航页面,导航菜单等。
7. 新的节点类型(New Node Types)
此类模块一般都定义了新的节点类型,方便某些特定内容的发布。如Recipe模块可方便发布菜谱等。
8. 个性化设置与私人信息(Customization and Personal Tools)
这些模块允许用户进行个性化定制或保存私有信息,如书签好友名单等。
9. 社区交流(Communication)
这些模块用于支持用户与管理员以及用户之间的信息交流(聊天,反馈等)。
10. 新闻聚合与回引等(Syndicate/Trackback)
11. 会员广告员电子商务(Ads and E-Commerce)
12. 底层模块(APIs)
这些模块一般本身不具备实用功能,只是用于支持其它模块,为其它模块提供编程接口等。一般除非其它模块要求,不用单独安装。
13. 杂项(Other Modules not Listed at Drupal.org)
其它各种功能模块,暂时不易分入以上各类的。

# 1. 站点安全

以下模块可用于身份验证,垃圾过滤等有关站点安全的功能增强。

* Captcha:例
图灵测试/字符校验模块,防止机器人自动注册。安装后可以选择在以下三处开启图灵测试:用户注册,匿名用户发表评论,注册用户发表评论。要注意在‘访问权 限 (Access Control)’里给与相应用户图灵(captcha)的权利,否则图形显示不出来。本站用户注册处就使用了这个模块,可以到注册处看一下。
* Challege-Response Authentication: (4.5.0)
查问/应答校验模块。帮助防范relay attacks,提高系统安全。
* LDAP integration:
支持LDAP(Lightweight Directory Access Protocol)。作者说当前版本有很大问题非常不稳定,正在重写中。
* Legal:例SQL
在用户注册时加入“我同意。。。条款”的过程。模块本身不带有具体条款,需要管理员自行加入。本站用户注册处也使用了这个模块,注册时就可以看到。
* securesite:
为你的站点整个加上密码使搜索引擎搜索不到。此外还可以生成加密码的RSS feed。
* Spam:SQL
垃圾信息过滤,使用贝叶斯过滤器自动统计识别垃圾信息。用户也可以自己设置和添加过滤标准。如果你开启了trackback最好安装此模块,否则很快你的站点就会被垃圾信息淹没了。
* SXIP:
支持Sxip Networks身份校验。
* Troll:
提供 troll 用户管理工具。可以按 ip 地址跟踪管理屏蔽特定用户。

# 2. 基本管理功能

以下模块涉及到基本的站点管理功能,如用户权限设置,数据库管理搜索等。

* Admin block:例
adminblock截屏
用于帮助管理员方便的监管评论和文章。如果你的站点设置成发文需要审批,那么管理员每次都要进入内容管理查看审批队列。而此模块将通过区块显示所有等待审批的评论和文章队列,一目了然,可以方便快速地完成审批。见右图。

* Automember: (4.5.0)
自动用户权限管理。管理员可以设定不同的标准,自动分配给用户不同的权限。例如只开放有限权限给新注册用户,发表一定数目文章后将自动成为资深用户并得到高级权限。
* Comment closer:
可以自动关闭对老文章的评论,设置时间后通过cron来自动执行。
* CustomError:
自定义错误显示页面(404-页面未找到,403-访问拒绝)。这两个页面由于不是有效节点,所以不会在搜索中出现,不属于任何分类,也不会出现在‘流行 内容’中。作者声称这一模块比drupal4.6.0自带的错误页面重定向功能更灵活,并且方便扩展到支持其它错误类型。
* Database Administration:
提供数据库管理功能。管理员可以通过此模块在drupal界面进行数据库查询/修改/删除等功能。
* FOAF:
可以自动在drupal站点间同步用户信息。支持FOAFnet格式。需要启用drupal模块。
* Front Page:
用于方便的定制站点首页,可以完全脱离站点外观主题的限制生成个性化的首页。可以显示不同的首页给不同权限的用户,并可插入PHP代码完成更强大的动态显 示。可以在管理功能里方便的管理切换首页的显示,一个非常实际的应用就是可以事先生成一个“站点维护”的首页,在维护时切换过去。
* Hall of Fame:
名人堂模块。是对drupal自带的统计(statistic)模块的补充,可以统计站点共几篇文章,多少注册用户,建站时间,流行内容等,还可以显示发文最多用户,评论最多用户等。这些统计信息都是公开显示的,当然管理员可以选择关闭某些统计。
* Help Edit:例
允许管理员编写帮助信息,并显示在指定的页面或节点。这里有一个例子。
* Members:
可以作为drupal自带的profile模块的替代,用于定制用户资料的格式。侧重于按权限显示和列表显示。
* Taxonomy Multi Editor:
在‘内容管理’里快速管理大量节点的分类。
* Poormanscron:
通过用户的浏览来调用cron任务,使不能设置crontab的站点也能简单地解决cron运行的问题。
* SQL Search (Trip Search):
此搜索模块不使用drupal自带的搜索索引(search index),而是提供数据库搜寻功能,支持SQL和正则表示式(regular expressions),并提供高级搜寻过滤功能。
* Statistics filtering:
统计信息过滤。可以统计不同用户群及搜索引擎爬虫的点击信息。
* Swish-e Indexer:
基于开源搜索引擎swish-e开发搜索功能,可以搜索站点内上传文件的内容,现在支持的文件格式有:MS Word, MS Excel, PDF, RTF 和TXT。
* Taxonomy Access Control:
管理用户对不同类别文章的访问权限。
* Theme Editor:
不需ftp或SSH,通过drupal WWW浏览编辑修改外观主题。

# 3. 输入格式

各种输入法过滤器,所见即所得的文本编辑器模块。这些模块一般都需要加入“输入方式(Input Method)”才可以起作用。

* Attached node: (4.5.0)例
开启该模块并将attached node加入输入法过滤器后,将可以在发表文章时使用 [node: node-id] 的格式来引用另一节点的内容。显示出来的引用类似于一般论坛里常见的回复引用的样式。管理员还可以选择开启一些参数控制,使用户可以修改引用的题目,显示 样式等。虽然4.6.0的模块列表里没有,但在4.6.x里使用似乎没有问题,这里有一个例子。
* Bbcode: (4.5.0)
支持BBCode输入格式。
* Codefilter:
简单的输入过滤模块,方便代码输入。
* Contextlinks:例
用户在输入链接时,可以赋予链接以不同的类型,此链接将按照预先设定的方式显示,比如问题类链接加一个小问号图标,文档类链接加一个文件图标等等。一个截屏的例子可以看这里。
* FCKeditor:
支持FCKeditor输入格式。
* freelinking:
类似wiki的输入方式,可以方便站点内部内容间的链接。此模块只是定义了类似wiki的输入过滤法,并不是实现内容节点的wiki化。
* HTML corrector:
自动检测用户输入的HTML语法,是否每个标签都有对应的结束标志以及嵌套是否正确。
* Htmlarea:
支持所见即所得的HTMLArea输入方式。这里有一个例子。
* Inline:
加入了[inline:N]的输入格式,此格式将生成一个链接,指向该节点通过drupal自带的upload模块上传的第N个附件,用于方便地在文章内容中引用附件。
* interwiki:
支持wiki输入法,便于引用外部链接。如[w: drupal]将显示一个链接指向wikepedia的drupal网页。类似的也可以方便的生成指向ebay,google搜索,在线字典等常用页面。
* Markdown with SmartyPants:
支持Markdown输入格式来自动生成XHTML标记,支持SmartyPants的自动转换生成特殊Unicode符号的功能。
* Quote:
开启后用户在添加评论时可以方便的点选引用原文。引用部分用特殊格式显示以作区分。
* SmartyPants:
自动将文本字符转换成对应的特殊Unicode符号。
* Smiley:
使用表情符,自带了一些基本的表情符,用户可以自己添加。
* Textile:
支持Textile输入格式,自动转换生成XHTML标记。
* TinyMCE WYSIWYG Editor:
TinyMCE所见即所得文本编辑器,用于编辑输入文章内容。
* Urlfilter:
一个简单的输入法过滤器,自动将http, ftp, email等输入转换成链接。
* VIM Color:例
支持VIM代码高亮(highlight),支持PHP, Perl, C, HTML, JAVA等多种语言。这里有作者提供的展示。由codefilter模块修改而来,可以从codefilter升级安装。
* Wiki:
实现wiki功能。这里有一个简单的介绍。

# 4. 文件图片管理

所有涉及文件上传,图片显示与管理等功能的模块。

* Album: (4.6.0)
影集模块。需要先安装folksonomy和image模块。
* Attachement:
支持上传附件,可以用来替代Drupal自带的upload模块。不同节点的附件将分开放置,避免了文件重名的问题。需要先安装Filemanager模块。
* Filestore2:
允许用户上传/下载文件,文件存储在文件系统中而不在数据库里。(在4.4.0的老版本Filestore基础上重写,所以叫Filestore2)需要FSCache模块的支持。
* Gallery:
用于在线像册管理和展示。这里有一个简单的介绍。
* Image:
支持图片上传,并自动生成缩略图(thumbnail)。图片可以插入到页面中或组合成像册显示。
* Image filter:
一种输入法过滤器,可以方便的在节点中引用另一节点的图片。(严格的说应该归入“输入方式”里,当放在这里更方便些)
* Image_assist:
和Image模块共同使用,通过图形界面窗口更便捷地在节点中插入图片。也支持TinyMCE所见即所得输入模块,对HTMLArea的支持正在开发中。这里有一篇简要介绍。
* Photo album:
像册模块。需要安装folksonomy和image模块。

# 5. 节点功能增强

包括对单个节点内容特性及管理功能的增强,如excerpt模块允许用户添加摘要。

* Diff:
增强了drupal自带的‘修订(revision)’功能,可以方便的显示出不同版本内容见的不同。
* Event:
跟踪事件并通知用户。推荐先安装flexinode模块。可以将任意节点纳入工作流程(workflow),节点状态成为一个事件(event),其变化将自动通知用户。
* Excerpt:
摘要模块。Drupal发布内容时只能用正文的开头作摘要,然后根据设定自动截取摘要。启用摘要模块就可以不受此限制,发布内容时将单独有一个摘要栏供作者随意填写。
* Node (key)words:
可以为每个节点设定关键字,利于搜索引擎排名。
* Pathauto:
自动为节点,类别,用户等生成路径别名。
* Node Moderation:
类似drupal自带的允许用户对评论评分功能,此模块允许用户对节点内容评分,根据评分自动更改节点状态,如发布/拒绝/提升到首页等。
* Node privacy by role:
一般用户可以设定自己发布的内容是否对某些用户群隐藏。
* Node_import:
通过CSV(Comma Separated Values)文件格式导入节点。
* Scheduler:
事先规划节点内容发布或撤销的时间表,到时自动执行。需要通过cron运行。
* Side Content:
在发布节点内容时可以将部分内容选择性的显示在边栏的区块里,可以用于强调某部分内容,类似有的书籍或杂志的边栏导读。

# 6. 内容组织与站点导航

这些模块用于按一定规则(如主体类别)组织展示多个节点内容,如Article模块将站点所有节点内容按类别集中展示,常可用于站点导航页面,导航菜单等。

* Article:
将任意类型的节点根据类别(taxonomy)整理在一起集中显示,如生活类有3篇,技术类有4篇等。用户可以按照分类浏览。例子可见这里。
* Collimator: (4.5.0)
一般blog的文章都是垂直显示,此模块可以将节点按最近更新时间排序后从左到右平行分列显示,每一列为一篇文章,最上面为原文,所有评论回帖跟在每一列下面。
* Distant parent:
允许为单个词条(term)定义一个另一个词汇表里的‘远亲(distant parent)’。我不太清楚这个模块的实际作用,drupal不是允许同一词条(term)在不同的词汇表(vocabulary)吗?也许是因为导航 条的bug?作者在这里有详细论述,有兴趣的可以去看看。
* IndexPage:
为每一种节点类型显示一个索引页面,可以按字母或类别排序。
* Jsdomenu:
本模块是基于开源Jsdomenu库开发的,用于生成多层弹出式菜单(popup menu),自带一个“站点菜单(site menu)”区块用于菜单式浏览站点的分类结构。
* Live Discussion:
通过区块显示最新评论。与drupal自带的“最新评论”不同的是,显示的不是评论本身而是原文的标题,并在后面加注有多少篇评论。例子可以看右边栏的“Live Discussion”区块,也可以看这个站点。
* Menu on-the-fly:例
可以通过发布节点内容的方式来生成新的菜单。这里有作者提供的截屏。
* Node list:
节点列表。将站点所有节点标题按字母顺序列在一个页面。还可以单独列出某一分类的所有节点标题。
* Series:
通过drupal的分类系统将相关节点组成系列,可以在页面上显示系列里所有节点列表。
* Site map:
显示站点导航图。
* SiteMenu:
按文章分类显示站点导航,包括一个区块显示的导航菜单。
* Summary:
显示站点内容总结,除一般的“最新日志”外还有更多的选择。需要node_image模块和taxonomy_context模块。
* Taxonomy Block:
通过区块按类别显示最新文章列表。
* Taxonomy Browser:
生成一个页面显示所有站点分类词条(term),用户通过checkbox点选一个或多个词条来分类浏览文章。
* Taxonomy Context:
通过页面或区块显示分类词条(term)的名称,说明以及该词条在词汇表(vocabulary)中的位置(包括所有上级目录及下面的细分词条)。
* Taxonomy dhtml:
显示每个词汇表的分类目录结构,列出相应的节点文章及点击数。包括一个区块显示并可导出到syndication(聚合内容)模块。
* Taxonomy import/export via XML:
支持站点分类结构的导入和导出。
* Taxonomy Menu:
分类系统导航菜单,其格式将和drupal系统导航菜单一致。
* Weekly node listing:
将往日文章按周存档。这里有一个例子,左边栏的Weekly Archives区块就是。

# 7. 新的节点类型

此类模块一般都定义了新的节点类型,方便特定内容的发布。如Recipe模块可方便发布菜谱等。

* Book Review:
定义了特殊的书评节点,方便发布图书评论。
* Daily:
此模块定义了两种新的节点类型:daily和daily container。可用于发布每日新闻/每日一笑类型的内容,此模块自带日历显示可用于查询往日内容。
* Flexinode:
可以用此模块根据需要生成新的自定义节点(node)类型。在此基础上可以有很多灵活多变而非常实际的应用,可以说是drupal扩展模块里功能非常重要的一个。
* Recipe:
用于分享菜谱。

# 8. 个性化设置与私人信息

这些模块允许用户进行个性化定制或保存私有信息,如书签好友名单等。

* Blog Theme:
允许用户选择自己blog的外观主题,当其它用户按作者浏览其blog时,看到的将是该blog作者自己选定的外观主题。
* Bookmarks:
用户可以编辑自己的bookmark清单,并通过区块显示。
* Buddylist:
用户可以编辑自己的好友名单,同时显示‘好友的blog’区块。
* Contact directory:
使用户可以添加自己的好友联络名单。
* Font size:
通过区块链接改变字体大小,通过Javascript/CSS完成。
* Internationalization:
自动检测浏览器的编码设定,为匿名用户提供全方位的本地话翻译,包括节点内容界面的翻译。包括一个显示区块方便用户切换语种。需要开启‘本地话(locale)模块。作者的网站上有一个西班牙语的例子。作者强调说这是一个“高级模块”,建议有经验的管理员试用。
* Subscriptions:
允许用户订阅任一节点内容,通过email通知该节点的更新以及是否有新的评论。
* Workspace:
提供一个用户专有的工作区,可以集中察看管理自己的文章。

# 9. 社区交流

这些模块用于支持用户与管理员以及用户之间的信息交流(聊天,反馈等)。

* Chatbox:
简单的聊天框模块。
* Ezmlm:
用户将可以通过区块或页面表格订阅相关Ezmlm邮件列表。Ezmlm是一个简易的基于qmail的群发邮件订阅系统。
* Feedbak:
反馈(feedback)模块,可用于生成反馈表格收集用户意见或问题,用户填表后将通过email发送给指定地址。
* Form_mail:
用于提取表单内容,通过email将其发送给一个或多个接收人。可用于“联系我们”之类的应用。该模块不生成表单本身,只处理将内容转发到email的过程。
* Mail:
向特定用户群发送email,所发信息以节点方式存放在数据库中。4.6.0版本支持将任意类型的节点内容通过email发送给特定用户群,并且可以自动发送upload模块上传的附件。
* Mailalias:
注册用户可以添加额外的个人邮件地址,主要用于支持Mailhandler模块的身份校验功能。
* Mailhandler:
允许注册用户通过email创建/编辑内容或添加评论。
* Notification:
自动发送邮件通知订阅者内容已更新。
* Organic groups:
允许用户自行组成小组,每个小组将有自己的主页显示小组成员发布的内容。
* Privatemsg:
允许用户间发送私人信息。
* Project:
一个简易的项目管理模块。项目组成员可以由此跟踪项目的进展,可以通过email发送项目更新通知。
* RSVP:
可以发送email邀请用户参加特定的事件(event),并可跟踪用户是否查看或接受了邀请。需要安装event模块,所有事件(event)都由event模块生成。
* Survey:
可以创建调查问卷,调查结果可以下载为excel格式。
* Volunteer:
可以围绕不同事件(event)组织协调志愿者的工作。需要event模块和contact_manager模块支持。此模块最初为Music for America组织志愿活动所开发,在2004年已经实际应用于3000名志愿者的组织工作。
* Webform:
创建‘网络表单(webform)’节点类型,可以用于提交调查问卷,投票,注册等。不清楚是一个支持模块还是直接可以用来前台应用。

# 10. 新闻聚合与回引

* Atom: (4.5.0)
提供Atom feed.
* Blogroll: (4.5.0)
提供Blogroll功能,每个用户的blog可以有自己的blogroll。
* Syndication:
集中显示所有站内RSS feeds。
* TrackBack:
支持trackback(回引)。

# 11. 会员广告与电子商务

* Adsense:
显示Google Adsense广告。可以方便的定制显示方式,支持从banner到link等6种显示格式。此外还可以选则对特定用户群关闭广告显示。
* Amazon associate tools:
Amazon 广告工具。定义了两种新的节点类型:1)“amazon”节点:用于发布书评介绍等。2)“amazon-node”节点:包含相关的amazon产品信 息/书号/价格/图片等,可以手选或自动配给相关的书评或链接。管理员并可以使用模块自带的搜索功能通过搜索amazon的相关产品批量生成amazon -node节点。(每种产品只能对应一个amazon-node)。
* Amazon search:
应该是与Amazon associate tools模块中的搜索功能一样的,是同一个作者。可以用于搜索amazon产品并返回相应图片说明等信息。(需要php支持domxml和curl)
* Banner:
自动轮换显示广告条。管理员可以方便的查看点击统计,并预设/开启/关闭/批准特定广告,用户则可以查看/修改/上载自己的广告条。
* E-Commerce:
一整套电子商务工具。此外还包括拍卖/订阅/捐款等功能。Drupal.org列出了以下采用这套工具的几个网站:
1. Council of Writing Program Administrators
2. Snowboard Magzine
3. Poolitics
4. Drumbeat Insight
5. Stuart Davis
* PayPal Subscription:
为通过PayPal付款的用户根据其付款状态分配不同的角色。需要开启PayPal framework模块。

# 12. 底层模块

这些模块一般本身不具备实用功能,只是用于支持其它模块,为其它模块提供编程接口等。一般除非其它模块要求,不用单独安装。

* Filemanager:
此模块为其它模块提供文件管理接口,其本身并无实际功用。Attachment模块就是建立在Filemanager模块基础上的。
* Folksonomy:
为其它模块提供类似Flickr和del.icio.us的大众分类(folksonomy)功能接口。其本身并无实际功用,当其它模块需要时再安装。
* Forms:
为其它模块提供编程接口,用以添加用户可定制的表单。本身并无实际功用。
* FSCache:
文件系统缓存模块。用于支持Filestore2模块。
* HTML To Text:
用于支持其它模块,可以将HTML转换成简单文本text。
* Mass Mailer:
为其它群发邮件模块提供前台界面。
* PayPal framework:
记录paypal IPN(Instant Payment Notification)数据,为其它paypal相关模块提供基本的数据库框架。

# 13. 杂项

其它各种功能模块,暂时不易分入以上各类的。

* Currency Exchange:
提供一个简单的货币换算,汇率数据来自Yahoo Finance。
* Download Counter:
由spreadfirefox.com而来,用于显示FireFox的下载次数。它实际上是显示的firefox download RSS内容,可以通过修改RSS地址用于显示别的RSS信息。
* location (API, module):
用于显示地址地图搜索。
* Quotes:
可以用于收集显示名人名言。通过区块随机显示。
* Simpletest:
“A framework for running unit tests in Drupal.”没看懂,需要装上试用一下。
* Stock:
显示股票行情。用户可以自定制所显示的股票。股价数据来自Yahoo Fianance。
* Variable:
一个简单的模块,可以读取HTTP POST数据并存入变量表。(不太懂有什么具体应用)
* Weblink:
没看懂,需要试用一下:)

其他模块

这些模块或者还没有提交到drupal.org,不在模块列表中,或者还处于CVS状态没有正式发布。

* Contact_manager:
为volunteer模块所开发的支持模块,可以在这里下载。
* awTags:
由autowitch开发的非常有用的支持节电标签(Tag)的模块。不知是不是还在beta测试的原因没有提交到drupal.org,但在4.6.0下已经工作的很好了。最新版本是beta4.2.2,详细资料可以在这里找到。

后记

最初的计划本来是对每个模块的文档做一个具体的翻译说明,但发现工作量太大,而且很多模块应用面比较窄,大家有一个大概的了解就够了。对于比较大众化的模 块,由于水平所限,应该由更有经验更熟悉这些模块的高手来作详细的说明比较才比较实用。所以我就取了个巧,针对模块众多不易查询的问题,把模块大致分成几 类作了这个索引。说是索引,其实基本还是个分类列表,采用书册(book)的方式发布。这样的效果是不是好,就要看大家的反馈了。(也许用wiki大家合 作是一个好办法?)

对于本文的内容,一看就知道是赶着拼凑起来的,一个是因为个人时间水平有限,更重要的是我认为没有必要等到完善了再发布。我希望先把框架搭起来,或者说先 抛砖引玉开个头,相信大家都有各自的心得体会,如果您有时间,不妨针对熟悉的模块写一点介绍。众人拾柴火焰高,相信很快drupal中文资料就会比较完善 了。

具体到这篇文章,我也将抽时间不断地润色加工完善,如果您也有兴趣加入,可以先添加到评论里,适当的时候我将为您开放编辑此文的权限。您有什么更好的建议也可以一起讨论,还希望高手不吝赐教。

工作计划

在这里列出今后努力的方向,由于时间所限可能进展会比较缓慢,还是那句话,大家合作才是更好的办法。

1. 核对润色说明文字,补充更多的模块实例和图片。有一些作者的模块说明看完了还是一头雾水,需要下载之后试用一下。
2. 细分模块的功能分类,使之更合理。不知道有什么更好的快速索引的办法,可能有一个单独的检索页面,可以按字母或功能列表比较好。如果您有什么好的建议,请告诉我。
3. 随着中文资料的增加,在每个模块介绍后面加上‘更多资料’的外部链接。
4. 常用模块的详尽安装使用介绍,相近模块的使用心得与比较,整理模块安装使用的常见问题(FAQ)。这些已经超出了本文的范围,可能要另辟战场了:)
5. 常用模块的汉化,这个也需要大家一起来动手了。

 

 

 

Drupal之Page.tpl.php内的变量$XXX 以及层 <div>

<?php print $head_title ?>: 输出已经设置的标题

<?php print $styles ?>: 启用的模块所带有的样式单也被加载了进来,输出Css的文件

$content 包含了对node.tpl.php 输出的调用

$sidebar_left 包含了对 block.tpl.php 输出的调用

 

 

Drupal之block.tpl.php内的变量$XXX 以及层 <div>

block.tpl.php是负责控制输出区块

 

 

 

 

 

 

Drupal之node.tpl.php内的变量$XXX 以及层 <div>

node.tpl.php节点模板负责控制一个页面内部的一片单独的内容的展示。而不是影响整个页面,节点模板仅影响 page.tpl.php 中的变量$content。他们负责节点以 teaser 视图的方式展示(当多个节点在同一个页面列出时),或者以 body 视图的方式(当节点填充 page.tpl.php 中的整个变量$content 并单独出现在他自己的页面)。节点文件中的变量$page,当为 body视图方式时,它为真,当为 teaser 视图方式时,它为假.

 

node.tpl.php 是一个处理所有节点视图的一般模板.

 

在节点模板中,你可以使用下面的变量:

$content: 节点的主体部分,如果是一个分页显示的结果时,它为 teaser。

$date:节点被创建的格式化日期。

$links: 与节点相关的链接,比如“read more” 或者“add comment.”模块通过实现hook_link()来添加额外的链接。

$name:创建该页面的用户名,连接到他的个人主页。

$node:整个节点对象和它的所有属性。

  • 有趣話題提供最新的網路話題,內容豐富多元包含娛樂,趣味,科技,動漫,遊戲,汽車,美食,健康,寵物,旅遊,時尚,家居,文化,歷史,親子等最新最流行的話題,讓心情快樂一整天。

  • hi!,I like your writing so so much! proportion we communicate extra about your article on AOL?
    I require an expert in this house to solve my problem.
    May be that’s you! Having a look ahead to see you.

评论

(required. But it will not be published)