原文: drupal宝典之基础篇

随着PHP技术的飞速发展,搭建一个专业网站已经变得越来越容易。特别是各种优秀CMS(内容管理系统)的出现,使得网站的开发不需要编程,你所做的主要工作就是下载一些已有模块,下载一些主题风格,定制一些模块,定制一些主题风格,一个专业的网站就建好了。

优秀的CMS系统包括:Drupal、Typo3、XOOPS、TikiWiki、Mambo、PHP-Nuke等,具体见:
http://www.opensourcecms.com/

目前国内比较流行的CMS包括Mambo和XOOPS,他们的国内社区见:
http://www.mambochina.net/
http://xoops.org.cn/

Drupal是一个新的CMS系统,它虽然没有Manbo流行,也没有XOOPS强大,但却是一个非常易用的内容管理系统,可做为个人或大型网站发布、管理、组织不同内容的平台,包含了广为人知的weblog、论坛、投票、新闻聚合、站内搜索、电子商务等功能。

Drupal应该翻译成什么呢?呵呵,觉得还是翻译为“水滴”比较好。Drupal这个词其实是荷兰语Druppel的英语发音,而Druppel在荷兰语里面是Drop也就是水滴的意思。Drupal的编写者最初选择这个词实在是意外,他本来想注册一个名为“Dorp”的域名,Dorp在荷兰语里是“小村庄”的意思,英语里其实也有这个名词,但是他一不小心犯了个错误,于是就注册成了Drop,于是也就有了后来的 Drupal。呵呵,所以汉语翻译成“水滴”还是蛮贴切的,听起来也不错了。

有的人把Drupal当作是blog系统,我一开始也是 这样认为的,其实这只是Drupal的一方面的应用,Drupal是一个功能强大的content manage system(cms),在功能设计上它仿照了phpnuke,xoops等的模块化方式,界面上仿照了blog模式。这个程序以极少的代码实现了非常强大的功能。很多人用“神奇” 两个字来形容它,它是一个完全开放源代码的程序,所以吸引了众多PHP爱好者的目光,很多PHP高手参与了它的开发行列中来了,开发速度非常块,几乎两个月出一个新版本,modules和skins也越来越多。从官方站点有时上千人的在线情况就可以看出它的受欢迎程度。

在这里可以下载Drupal:
http://drupal.org/

= Drupal 的功能特点 =

从总体上看,Drupal有以下功能特点:

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

国外有许多优秀的网站采用了Drupal平台,这里列举其中三个:
http://www.spreadfirefox.com/
http://www.hermann-uwe.de/
http://www.hivemindz.com/

国内也有一些网站采用了Drupal平台,这里也列举其中三个:
http://bmc.tea.to/
http://blog.c3crm.com/
http://blog.linuxbyte.net/

= 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
一种所见即所得的输入方式。
- p_w_picpath
像册。支持图片上传,并自动生成缩略图(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的开发了。
Drupal宝典之定制篇见:
http://www.linuxsir.org/bbs/showthread.php?t=231113