标签: 〖Drupal〗


猪跑之路:重拾 Drupal

其实早在2006年就尝试过 Drupal ,结果是知难而退,在用过宏博CMS、帝国CMS和现在这个博客用的WPMU之后,还是决定重启猪跑之路,尽管它门槛较高,但超强的可定制性太有吸引力。

既然提到了以上几个CMS,顺便说下我的感受。

宏博CMS最易上手,功能也不错,适合没有奇思怪想,只想尽快建起自己的网站,并且网站内容和功能没有特别要求的站长;我觉得最适合办垃圾站(哈哈)。宏博商家服务一般,感觉想急于赚钱,对免费客户招待不是太周全。

帝国CMS个人认为是国内最好的开源CMS,易用性和可定制性平衡的不错,功能强大,如果你本身懂技术,它还可以更强大,安全性也不错。不足是不太重视网站与客户的互动功能,用户管理方面相对薄弱,适合懂得一点代码,想让自己的网站看起来比较像样、不至雷同的站长,内容方面不太适合需要与用户互动较多的网站,很不满ECMS官方和它的粉丝总强调说帝国可以无限地二次开发,话不是这样说的,真有这种水平的人就自己写系统去了。虽如此说,目前我的语文芳草地也还是用的帝国,估计一时半会,也不会有更好的CMS能替代它。

WordPress 偏向于博客风格,喜欢它的结构紧凑合理,代码简洁优美,作个人博客之用绝对是不二选择。全世界有众多的WP追随者,使得它的第三方主题(粗浅地说就是皮肤)和插件众多,也能及时得到象桌面发布系统WLW、饭否等第三方商家的功能支持,但反过来说,针对它的恶意滋扰者也众多,垃圾评论和邮件是个让人头疼的问题。另一个问题是它的谨慎,例如编辑器不提供视频插入功能等等,与国内的只要用户高兴就敢给装的作风不同。

用WP不是不能建网站,所有真正开源的系统理论上说都无所不能,只是费的改造力气不如自己去写一个系统了。目前本站5d0d.net(我的领地)就是用的WP的多博客版本(与多用户是有区别滴),即WPMU。

我为什么还要再去弄Drupal呢?因为我的新想法需要一个更SNS的风格(什么是SNS?)需要有网站的内容管理和论坛的用户互动和信息的交融聚合功能。其实康盛的CenterHome也是个选择,但是试用下来,一是它不开源,不开源可订制性就差,可能它有10000种功能,而我只需要其中10种,也必须全部安装运行其余9990种,而我最想要的一种功能,却恰恰是它目前没有的,十分尴尬;二是国内的这类系统不知为什么,系统代码都那么混乱臃肿,让我一个半瓶水都看着不爽,感觉是开发之初他们就没有个很好的构思,系统是堆砌起来的,这样的系统对于二次开发就很不利,况且即使已经开源的系统,似乎自己也没把开源真当回事,一句话,国内开源系统是已经长大成人后才被迫接受开源改造的,基本架构就不具有开源的优势。

几天弄下来,发现猪跑之路还真是不易。虽然每一处都有令人惊喜的灵活性,比如系统菜单项的定制,一般CMS就是固定指向栏目,即使是WP也是在标签和分类之间选择(自己写代码就另论了),而Drupal则可以指向任何东西,甚至是运行一段PHP代码,而我的新念头恰恰就需要这样的灵活性。但是代价也是巨大的,单单理解它的整套运作原理和一堆与众不同的概念就要了亲命了。但既已如此决定,这次就决心一路走到黑了,特开此贴以自励。

发表评论

Drupal 6.12 安装实录

【按语】 Drupal 的安装并不比其他 CMS更复杂,官方或者网上的一些安装说明过于详尽,反而可能只徒然地增加了你的心理负担。

一、预安装

1. 下载文件:在http://drupal.org/ 官方网站下载最新版本(当前为6.12),扩展的模块和主题慢慢来吧,同时在这里 http://drupal.org/project/zh-hans 下载6.x的汉化语文包。

2. 上传文件:drupal-6.12.tar.gz本地解压后将drupal-6.12目录下的目录和文件上传到网站安装目录(当然也可以上传压缩文件在服务器上解压缩),zh-hans-6.x-1.0.tar.gz解压后将zh-hans-6.x-1.0目录下的目录和文件上传到网站对应的目录下(汉化文件必须与要汉化的原文件安装在同一目录下,不过不用多虑,实际上一般的FTP上传软件都会按zh-hans-6.x-1.0文件夹下的目录结构正确上传的)。

3. 复制生成配置文件:在网站上用 “./sites/default/default.settings.php”文件复制生成新的配置文件“./sites/default/settings.php”。

4. 在网站上为 Drupal 准备好数据库。一般虚拟空间的数据库是商家创建好的,你只需要知道数据库名称、数据库用户名称和密码就好了。如果是自己管理的空间,怎样创建数据库就不用我教了。

二、正式安装

在浏览器中运行 http://www.8114.cc/install.php (8114.cc当然要换成你的域名)

clip_image002

我因为没有做预安装中的第三步,得到如下错误报告:

clip_image004

翻译出来就是:

作为安装过程的一个步骤,Drupal安装需要您创建一个配置文件。

1. 复制 “./sites/default/default.settings.php”文件到“./sites/default/settings.php”;

2. 更改“./sites/default/settings.php”文件权限让它对 Web 服务器是可写的。如果您不确定该如何改文件权限,请参考在线手册。

安装Drupal的更多细节参见INSTALL.txt 文件。

在这里我又犯了个一般人不会犯的错误,自以为是地直接将 default.settings.php 改名为 settings.php ,孰料 default.settings.php 是有用的,不是备用副本。必须保留 default.settings.php 并另外复制生成 settings.php 。

至于权限,我用的 HostMonster 空间从来不需要我设置,设置了反而出错,即有名的服务器500错误,原因详参空白页面、服务器500错误都有可能是文件属性777造成的

排除的错误之后,下一步是数据库配置,很简单,就是要你填写我让你在预安装第4步中准备好的据库名称、数据库用户名称、和用户密码。

clip_image006

那个高级选项打开是这样,一般用户用默认的就好了。

clip_image008

如果这一步出现什么状况,一般是以下几个原因,仔细挨个排查下:

l 该数据库用户是否存在?用户名正确么?用户密码正确么?

l 该数据库是否存在? 据库名称正确么?

l 所用用户名是否具有该数据库的存取权限?

再下一步,设置站点:

clip_image010

至此,安装过程就结束了:

clip_image012

点击访问您新建立的站点,这个页面可是只显示这一次哦。

clip_image014

发表评论

Drupal版本有Drupal 5.x,Drupal 6.x,Drupal 7.x,我该用哪个?

初次接触 Drupal 让我困惑的一个问题就是,为什么它同时发布两个主要版本号不同的新版本,后来弄清了,这和它的主题模板和模块有关,因为不同主版本号下开发的主题和模块只能用于该系列,比如 Drupal 5.x 的主题不能用于 Drupal 6.x,而主题和模块的开发与积累总是滞后于 Drupal 核心程序的发布,所以,在发布 Drupal 6.12 的同时还不能断然放弃对 Drupal 5 的必要维护,因此有与 Drupal 6.12 同时发布的主版本号为 5 的 Drupal 5.18 。

简言之,Drupal 6.12 是包含了更多功能和改进的、被更好地支持的最新正式发布的版本,但有些你需要的、或钟情的插件或主题未必有 Drupal 6.x 下的升级版本;而 Drupal 7.x 是正在开发中的新版本,官方不建议作为生产应用。当 Drupal 7.x 正式发布时(官方称在2009年的某个时候),Drupal 5.x 将不再支持升级。至于选用哪个版本,此时应该自己心中有数了。

各版本下载地址:http://drupal.org/project/Drupal

发表评论

实用SQL代码

SQL代码直接对数据库进行操作,在实现一些特别的功能特别是站点站点设置往往是非常简单有效的。下面SQL代码段都是Drupal用户提交的在实际应用中的代码,如果您也有一些简单有效的SQL代码,欢迎在这里和大家分享(可以在论坛提出,也可以在下面发表评论,请注明您的代码适用的Drupal版本号)。

注意:这些代码都是由用户提交,并没有经过仔细测试。在使用下面的代码前,请尽量仔细阅读代码并理解它是如何工作的;至少要先把您的站点的数据库备份,以免带来不必要的损失。

启用或关闭模块

有时候您可能需要通过数据库操作来启用或关闭模块,比如使用了有问题的模块时。

使用下面的SQL代码开启名字为"example"的模块:

UPDATE `system` SET status=1 WHERE name='example';

使用下面的SQL代码关闭名字为"example"的模块:

UPDATE `system` SET status=0 WHERE name='example';

清除Drupal缓存

在重装、转移或升级站点时,或者在站点开发测试时,往往需要清除Drupal缓存,以避免一些不必要的问题并及时看到站点的更新。清除缓存本身并不会破坏你的站点,也并不会丢失数据,最多使站点暂时变得较慢,当Drupal缓存重新建立后,你的站点速度也会恢复。下面的SQL代码可以用来清除Drupal缓存。

DELETE FROM cache;

(您也可以下载devel模块,这个模块提供了一些开发常用的工具,包括清除缓存按钮。)

重置第一个用户(超级用户)的密码

如果您忘记了超级用户的密码(uid=1),而通过emaili重置密码又不工作时,可以通过下面的数据库操作重置密码:

UPDATE `users` SET `pass` = MD5('mynewpassword') WHERE `uid` =1 LIMIT 1;

用您的新密码替换上面的mynewpassword就可以了。

发表评论

Drupal:实用PHP与Javascript代码

Drupal有很多模块来实现不同的功能扩展,但其中的很多功往往可以通过简单的PHP/Javascript代码段来实现。这部分列出一些用户提交的实用PHP及Javascript代码段,这些代码段可以应用于Drupal页面、区块或主题中,来实现特定的功能。如果您也有一些实用的代码,欢迎在这里分享。

页面右上角会有Drupal版本分类,页面中也会尽量注明适用的Drupal版本号,请注意选择适当的代码。

注意:这些代码都是由用户提出,我们并不能保证其功能与安全性,请谨慎使用。某些恶意代码可能会破坏您的站点或带来安全问题,请尽量读懂代码是如何工作的,至少先在测试站点试用并备份您的站点。

PHP区块代码

下面列出的一些用户提交的常用的区块代码,您可以直接将它们复制到区块中(记得开启PHP输入格式),就可以实现特定的功能。

注意:使用前请仔细检查代码,并在测试站点试验。恶意代码可能会破坏您的站点。

显示数据库大小

下面这段block代码,通过计算数据库表单与索引的大小来显示Drupal使用的MySQL数据库大小。由于要查询所有数据库表单,执行起来可能比较慢,最好限制在管理员页面显示。

<?php
function db_size_info($dbsize) {
$bytes = array('KB', 'KB', 'MB', 'GB', 'TB');
  if ($dbsize < 1024) $dbsize = 1;            
  for ($i = 0; $dbsize > 1024; $i++) $dbsize /= 1024;
$db_size_info['size'] = ceil($dbsize);
$db_size_info['type'] = $bytes[$i];
  return $db_size_info;
}
// Database size = table size + index size:
$rows = db_query("SHOW TABLE STATUS");
$dbssize = 0;
while ($row = mysql_fetch_array($rows)) {
$dbssize += $row['Data_length'] + $row['Index_length'];
}
print "$dbssize bytes<br />";
$dbssize = db_size_info($dbssize);
print "or<br />";
print "{$dbssize['size']} {$dbssize['type']}";
?>

PHP区块可见性代码

Drupal从4.7开始引入了区块可见性设置,可以通过简短的PHP代码来控制区块只在特定的页面显示。在页面显示时会自动检查该段代码,当代码返回TRUE时,就显示区块;当代码返回FALSE时,则不在该页面显示此区块。

基本逻辑如下:

<?php
if (condition) {
    return TRUE;  // block will be shown
}
  return FALSE;
?>

或者简化为:

<?php
return (condition);
?>

在区块管理页面可以开启使用PHP代码设定区块可见性,然后填入相关的代码就可以了。

发表评论

Drupal 常见错误

"LOCK TABLES sequences WRITE" 错误

如果在使用Drupal中出现类似下面的错误:

user error: Access denied for user: 'YOUR DATABASE USER@localhost' to database 'YOUR DATABASE'
query: LOCK TABLES sequences WRITE in /your website/database.mysql.inc on line xx

说明你的Drupal安装时对应的数据库用户没有LOCK TABLE权限,而一些Drupal功能需要这一权限,所以就会造成上面的错误。一般来说,只要你可以赋予数据库用户这一权限就可以了。但如果你使用虚拟主机,一些服务商可能不允许使用这一权限,你需要联系你的服务商看看是否能够解决这一问题。

虽然也有一些折中的解决办法,但并不推荐使用,如果你的服务商不能开放这一权限,那么他们肯定不是适合你的Drupal的选择。

Garland主题的自动配色(color picker)怎么不见了?

如果5.x下面Garland主题的自动配色功能不见了,那么可能是下面几个原因:

  • 没有开启color模块
    确定你在管理>>站点建设>>模块(admin/build/modules)下面开启了颜色模块(color module)
  • 文件下载设置问题
    5.x下的配色功能只有在Drupal的文件下载设置为公开(Public – files are availabe using HTTP directly)是才能正常工作。你可以在管理>>站点设置>>文件系统(admin/settings/file-system)下面检查你的站点设置,把文件下载模式改成公开就可以了。
    如果你想使用私有下载模式,可以先暂时将其改成公开模式,将Garland主题改成你想要的配色之后,再改回私有模式就行了。
  • 没有PHP GD图形库支持
    你可以在管理>>日志>>状态报告(admin/logs/status)下面检查服务器GD库是否工作正常。如果没有,你可能需要联系你的空间商。
  • 禁用了javascript
    如果禁用了javascript,那么你只能看到选色框而不能看到调色轮以及预览图片。

PHP memory 错误

如果你碰到类似下面的错误信息,说明 Drupal 需求的内存超过了 PHP 允许内存值。

Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)...

你可以通过下面几种办法增加 PHP 内存上限:

  • 如果你可以更改 php.ini 文件,直接修改 memory_limit = **M 这一行就行了。
  • 一般虚拟主机你不能修改 php.ini 设置,那么可以尝试在 sites/default/settings.php 里添加
    ini_set('memory_limit', '**M');
  • 或者,修改 Drupal 安装目录下的 .htaccess 文件:
    php_value memory_limit **M

尝试增加 memory_limit 的值,将 **M 改为更高(例如 20M ),直到上面的错误信息消失。官方文档显示 Drupal 6.x 的最小需求 PHP 内存值为 16M。

不小心关闭了登录区块怎么办?

如果你关闭了登录区块,还可以通过下面的路径登录:

http://www.example.com/?q=user

如何彻底卸载并重装模块

Drupal5.x开始提供了一个hook_uninstall钩子,供模块卸载使用。绝大数5.x模块都使用了这一钩子(可以在.install文件中看到),用于卸载模块时彻底删除掉该模块的信息(数据库、变量等)。

在卸载模块时,您需要先到“管理->模块->列表(admin/build/modules)”下面,关闭该模块,但这只是暂时关闭模块,并没有完全卸载,您还需要点击页面上方的“卸载” tab 进一步卸载该模块,才能彻底从数据库中清除掉该模块的信息。

在有些情况下,如果模块没有正常卸载(比如关闭模块后,您没有再卸载,而只是手动删除了相关数据库表单),下次再重新安装该模块时可能会出现问题。这是因为,在数据库system table里面有所有已安装模块的记录,如果正常卸载,Drupal会删除掉这一项,下次再安装时会先查询这一项,如果不存在就通过hook_install来新建相应数据库表单。如果没有正常卸载,system表单中这一项还存在,那么下次再安装时,Drupal会误认为此模块已存在,而造成安装不能正常进行。解决的办法,通过MySQL/PHPMyadmin把相关项删除:

DELETE FROM system WHERE name = 'modulename';
//modulename就是您要卸载的模块名称

开启了有问题的模块而无法回到管理页面去关闭它,怎么办?

当在试用或者测试一些模块时,如果模块有问题,可能会造成页面显示为一个空白页面,而使你无法回到模块管理页面去关闭它。这时候通常有两个办法可以解决:

1. 通过ftp删除这个有问题的模块;
或者
2. 直接进行下面的数据库操作:


UPDATE `system` SET `status` = '0' WHERE `name` = 'module_name' LIMIT 1;

这之后你应该可以访问模块管理页面来关闭它了。

站点设置为维护状态时如何登录管理

从4.7开始可以在 管理>>设置 里可以将你的站点设置为"维护状态",这时用户将只能看到"站点维护中"的页面,也无法登陆。作为管理员,你还是可以同过下面这个链接登陆进去修改设置:

www.example.com/?q=user

最好使用第一个用户(uid=1)作为管理员登录,其他的管理员账号可能并没有"管理站点设置"的权限,并可能造成你无法退出的情况。这时候就必须清除浏览器缓存,再访问上面的链接,然后使用有正确权限的管理员账号登录。

作为最后一招,你还可以直接更改数据库来接触站点的"维护状态":

UPDATE variable SET value = 's:1:"0";' WHERE name= 'site_offline';

发表评论

Drupal核心模块/Drupal扩展模块

Drupal核心模块

Drupal的核心模块指的是Drupal下载安装后自带的模块,有些核心模块也并非必须,管理员可以根据需要开启或关闭。

下面的页面都是关于如何管理核心模块的介绍。这里假设你已经安装并在管理>>模块里开启了这些模块,并且假设你已经在管理>>访问控制里设置了相应的权限。

Drupal还有很多用户开发的扩展模块,在手册的扩展模块介绍部分有相应介绍。

Drupal扩展模块

社区中有大量的模块,让你可以增强 Drupal 系统。

你必须在你自己的机器上独立安装和配置每个模块。 每个下载的模块都包含一些特定的安装指示,还有一些说明会出现在模块的管理页面和使用过程中。 注意使用适用于你的 Drupal 版本的模块。

这里列出的只有部分模块,更多的模块在不断的加入。 你可以从 Drupal contributed modules 页面查看最新的模块和下载使用。

你可以通过 打上 module 术语标签的节点页面 了解最近加入的模块 (或通过 RSS feed 阅读) 你还可以通过 按最近更新排序的模块 页面了解模块最新动态,不过这个页面暂时没有 RSS feed。

发表评论

Drupal 基本站点设置

Drupal的功能非常灵活,用户可以通过多种设置选择来改变站点外观,与用户互动的方式以及显示哪类信息。虽然设置选项很多,但安装后你只需进行极少的设定就可以让你的站点跑起来。随着你的站点的成长,你可能会有更多的需求,而Drupal能够使你很容易的添加新的功能,或者对你的站点来个大变脸。更棒的是,Drupal是通过GNU开源发布的,是你可以自由的几乎无限制的来改造定制成自己需要的样子。

点击导航区块中的administer » settings,就可以开始Drupal的基本设置了。你必须先登录并且拥有设置权限才能访问设置页面。在改变某个设定后,别忘了点击相应页面下的“保存”按钮。

你输入的设置选项,将被保存在数据库中用来帮助Drupal决定如何准备与展示相应的页面。请记住设置页面只包括了站点基本的设置选项,许多模块还有自己的设置页面,具体如何设置可以在模块自己的帮助页面或者在手册的模块介绍中找到。另外一些高级设置参阅定制与外观手册

在基本站点设置里,基本上所有的选项下面都有简短的说明,并且都是很容易理解的。唯一需要注意的是,站点的口号(slogan)、目标(mission)、脚标(footnote)等在某些外观主题里是显示不出来的。如果你是第一次使用Drupal,建议先把所有的信息都填上,这样你就可以直观的了解各个设置是干什么用以及如何显示的。如果你不需要或者不喜欢某些设置,再可以回过头去把它们去掉。

设置

下面这些链接提供了设置页面的详细帮助。如果你只是想先把你的Drupal站点跑起来,完全可以先略过这些介绍,以后回过头来再慢慢试验。唯一的例外是文件系统设置,你可能需要一开始就把它设置好,这样也可以避免新安装Drupal后在设置页面可能出现的一些错误信息。

基本站点设置在administer » settings

通用设置

在通用设置中您可以配置站点的一些基本信息。

  • 名称(name):设置站点的名称。
  • E-Mail地址(e-mail address):站点的合法的电子邮件地址,用于注册、重设密码和通知时的自动电邮发送。您可以设置一个真实有效的E-Mail地址,这样用户可以回复邮件;或者设置一个类似no-reply@example.com虚拟的e-Mail地址,仅用于站点的电邮发送而不接受用户的电邮回复。注意,您的站点使用的电子邮件服务器应在php.ini文件中设置而不是在Drupal中。
  • 口号(slogan):站点的口号(可以理解为站点的副标题)。若您设置了口号,某些主题将会显示它。同时站点口号也将显示在浏览器的标题栏上。
  • 任务(mission):站点的任务声明或关注内容。若要显示站点任务,可在主题设置中启用站点任务显示,当然这要求主题本身的支持。
  • 底部信息(页脚,footer):这些信息将显示在网站页面的最下方,通常用于为你的网页添加版权信息。

    提醒,任务和底部信息可以使用HTML语言格式。

  • 匿名用户(anonymous user):访问你的网站但没有登陆的用户在默认情况下被称为“Anonymous”(匿名用户)。在这里您可以改变这种默认的称呼,例如改为“神秘人”。此称呼将用于Drupal创建的内容发布信息中,例如“由 Anonymous 在 周一, 2006-05-01 23:45 提交”。

默认首页

通过对默认首页的设置,您可以控制用户访问站点首页时(即访问Drupal的所在目录),首页将显示什么样的内容。例如,您可能创建了一个大的目录列表以链接站点的各项内容板块,并且希望当用户访问站点时首先看到这个目录列表(即将它作为首页主体显示)。

这个设置告诉Drupal将用户访问重定向到哪个链将用户访问重定向到哪个链接地址(URL)。需要注意的是,这个链接地址是相对于Drupal所在的目录的。例如,用于代替

"http://www.example.com/node/83" 或 "http://www.example.com/drupal_installation_directory/node/83",

您只需输入"node/83"。就算您的站点没有使用简洁链接,您也无需在输入的链接前加上"?q="。

在缺省状态下,“默认首页”被设置为“node”,这使得首页主体仅简单地显示那些已被“推荐到首页”的文章或内容。注意,当您将“默认首页”改为其它设置时,那些已被“推荐到首页”的文章或内容将不再缺省地显示在首页上;不过,你还是可以通过相对链接“node”访问它们。

如果您设置了任何非法或无效的Drupal路径,当用户访问首页时将看到“页面无法显示”之类的错误。此外,您无法将用户转向到任何不是由您的Drupal站点创建的网页(例如其它的静态HTML页面)。

简洁链接

其实正常情况下,简洁链接是不需要单独设置apache和.htaccess,本页面是遇到问题时来查询使用的。

缺省情况下,Drupal 用内部的路径参数生成URL,这样的结果就是URL看起来象是:"http://www.example.com/?q=node/83."。这使得很多搜索引擎,比如google,在索引这些页面时被挡在门外。你可以告诉Drupal使用“简洁链接”,以去掉内部链接中的“?q=”。注意,这只能在加载了重写模块(rewrite_module)并且在配置中启用重写模式(mod_rewrite)的apache服务器上能正常工作。

有两种方法可以在Apache中启用URL的重写。如果你有Apache服务器的全部权限的话,可以在httpd.conf文件中启用简洁链接。或者参看更有效率和安全(的apache)

警告:如果你的服务器配置不正确时启用了“简洁链接”可能会导致你回不到管理页面来修复你错误的改动。如果你已经在这种状况,你可以直接键入“非简洁链接” http://www.example.com/?q=admin/settings 来回到管理页面。
启用简洁链接需要下面三步:

  1. 启用Apache的重写模式。请咨询主机服务商或查询Apache 文件以了解有关重写模式和如何操作。最少,要确认你的Apache安装中启动了重写模式。它应该被编译进(apache)或被做成可加载的模块。一句话,你可通过在apache的配置文件中引用下面的代码来告诉Apache加载重写模块。

    LoadModule rewrite_module modules/mod_rewrite.so
    AddModule mod_rewrite.c

    注意,并不是所有的*nix系统都是这样设置。请查询你的分发版文档中关于apache的部分。我们也建议要禁止Apache 的multiviews功能,因为将会与简洁链接发生冲突。

  2. 编辑站点的Apache配置文件:有关Apache的配置信息一般存放在httpd.conf文件中,一般来说位于 /etc/httpd/conf/httpd.conf ;如果你使用虚拟主机,那么可能会在其它位置,或者你没有权限修改httpd.conf文件时,也可以尝试修改你的drupal安装目录下的.htaccess文件。最主要的配置就是设置重写基点 RewriteBase 。举例来说,如果你的Apache的文件根路径是 /var/www/ (即, /var/www/index.html 是当你浏览http://www.example.com/ 时显示的页面),而你的Drupal安装在子目录 /var/www/mysite/ 下, 那么重写基点就要被设为/mysite 。 在某些情况下,需要在配置文件中设置为
    RewriteBase /
    以使得重写模式可以工作。

    如果你不使用Drupal自带的 .htaccess文件,你就要添加重写规则到你的Apache目录定向(directory directive)中。样例请参考 .htaccess file in Drupal.
    <Directory /var/www/example.com>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
    </Directory>
    你也要设置Allow Override 以使.htaccess的命令能够在你的站点上运行,如果你改变了drupal自带的 .htaccess,你应该把它设置为
    AllowOverride All
    以保证重写可以启用。参阅
    "Behind the scenes with Apache’s .htacces" 以总观了解 。.htaccess。 这里有个示例

  3. 设置路径模块。你必须保证Drupal站点上的路径模块(path module)被启用而且正确的配置了权限。你可以在管理>>模块中启用路径模块,把权限设置为管理URL别名和创建URL别名在管理>>设置中启用简洁链接。首先,看看你是不是能用简洁链接访问到设置页面,键入下面的链接:http://www.example.com/admin/settings ( 用你的主机名替换掉 www.example.com )。 如果没有发生错误,并且这个页面和你点击“管理”然后点击“设置”时的页面相同,那么你就该知道重写规则的设置是成功的,你可以点击“简洁链接”处的 确认选项。如果有问题,你可以查阅卸载简洁链接。如果你还有关于简洁链接的问题 你可以在Drupal的settings.php中设置$conf['clean_url']=1;。

注意:在标准的Drupal安装中, .htaccess文件已经支持简洁链接了。不过很容易在拷贝时漏掉它,因为前面有个“点”

注意 关于MultiViews: Apache web服务器支持的MultiViews,是一种允许你访问页面时不需要文件的扩展名。比如,你有一个叫"evaluation.txt"的文件,在启用MultiViews的站点,你可以用"example.com/evaluation"来访问到这个文件。就已经知道的情况来说,MultiViews这种方便的功能,会在Drupal启用简洁链接时产生问题。除非你确实知道你在做什么,否则你应该在你计划启用简洁链接的drupal站点上禁止MultiViews。幸运的时,MultiViews在Apache的缺省安装时已经被禁止了。查阅Apache文档进一步了解MultiViews的信息。

待补充页面
* Apache 2 configuration of clean URLs on Debian
* Clean URL Support in Abyss
* Clean URL support in XAMPP
* Clean URLs with different webservers
* Example Clean URL configuration of httpd.conf for performance
* Existing URLs for server overwrite Drupal paths
* IIS CleanURLs using some of the available ISAPI filters.
* Using Clean URLs with IIS

原文链接http://drupal.org/node/15365

设置403和404错误页面

Drupal的页面错误信息是简明扼要的。您可能希望这些信息对于用户显得更友好些,通过一下步骤,您可以自定义它们:

  1. 创建两个节点,分别用于403和404错误页面。
  2. 记下这两个节点的id号。
  3. 现在在“管理”>>“设置”>>“错误设置”中,将403错误和404错误两处设置分别输入相应的路径。例如,为403错误创建的节点的id号为129,则在“默认禁止访问(403错误)页面”文本框中输入“node/129”。

配置站点的错误报告

错误报告,记录Drupal、PHP和SQL错误记录的地方。在一个正式服务器上,建议只将错误写入日志;而在一个正在测试的服务器上,建议选择将错误同时输出到屏幕(当然错误仍将写入日志),这对于您及时发现错误、调试错误会很有帮助。

您可以设定日志的保持时间,当超过这个时间后Drupal会自动将旧日志删除。注意,这需要已被正确设置的crontab(yoursite.com/cron.php)。

缓存支持

繁忙的Drupal站点可能需要缓存站点的页面,这样可以减轻服务器的压力同时提高页面载入速度。

通常,每次用户访问一个页面,Drupal会向数据库发送一系列查询请求,获得数据用来产生HTML页面,并最终呈现在用户的浏览器中。对于一个安装运行了大量模块的网站或存在大量内容的页面,每个页面的数据库查询请求可能有上百个。一般情况下,您不会注意到这些,这是因为现在的计算机系统运行速度很快还有Drupal十分拥有很高的效率。但如果是一个每分钟页面访问量达到成百上千的非常忙碌的站点,大量的数据库查询请求可能使得服务器的速度大大降低。

而通过开启Drupal的缓存功能,繁忙的站点可以大幅度减少这些数据库查询请求数量。

缓存功能开启时,Drupal会将匿名用户访问的任何页面的所有HTML代码直接存入数据库中。当同样的页面被再次请求,Drupal会直接从数据库中读取之前产生的HTML代码,而不是重新生成这些HTML代码。结果,近百条的数据库请求被一条请求代替,从而大大减轻了服务器的负荷。

主链接和二级链接

一般信息
在4.6及之前版本中,主链接和二级链接是在外观主题中进行管理的。
而4.7版本,主链接和二级链接被整合到菜单系统中。通过创建菜单项,您的主题将在相应位置显示设定好的主链接或二级链接。全新安装的Drupal4.7将默认创建一个名为“主链接(Primary Links)”的菜单,用于显示主链接或二级链接。

设置您的主链接和二级链接
这里有两个相关的设置区:

  • 在“管理”>>“设置”>>“菜单”中,您可以选择哪个菜单用于主链接、哪个菜单用于二级链接。如果您已向默认的“主链接(Primary Links)”菜单中添加了菜单项,但它们却没有显示出来,请查看此处设置并确保没有设置为“没有主链接(No Primary Links)”。
  • 在“管理”>>“菜单”中,您将找到默认的“主链接(Primary Links)”菜单,您应该添加您的链接至其中,即向里面添加菜单项。当然,您也可以常见一个新的菜单用于二级链接,或者另外新建一个菜单用于主链接。请记得将“管理”>>“设置”>>“菜单”设置成相应的菜单。

自定义显示您的主链接和二级链接
通过一下两种方式在页面上显示主链接和二级链接:

  1. 您可以添加一个菜单区块,就像其它的菜单一样。
  2. 您可以在页面中希望显示菜单的地方添加如下代码:

    <?php if (isset($primary_links)) { ?><div id="primary"><?php print theme('links', $primary_links) ?></div><?php } ?>
    <?php if (isset($secondary_links)) { ?><div id="secondary"><?php print theme('links', $secondary_links) ?></div><?php } ?>

之后您可以使用CSS定义菜单的显示。

设置主页上的文章数目和摘要长度

在“管理”>>“设置”>>“文章”中,您可以设置在类似主页的总览页面上显示的文章数目和文章摘要的长度。您也可以设定是否强制用户发表前进行预览。

注意:摘要长度设置只影响新建立的或更新的内容。

文件系统设置

通过设置文件系统,您可以控制用户和管理员是否可以上传下载文件及怎样上传下载。

没有设置或设置不当,在“设置”页面上可能将显示一条或更多的错误信息,以提示“文件系统路径”或“临时目录”不存在或权限设置有问题。

其实,您只需简单的创建这些目录并赋予它们正确的权限(通常是完全的权限),这样Drupal就可以读写这些目录了。

如果您不确定在什么地方或怎样创建这些目录,或怎样改变目录的权限,请联系您的网站空间服务商以获得进一步的协助。

日期时间设置

Drupal允许您设置日期和时间的格式及如何显示。当您设置日期和时间的格式时,应考虑到网站受众和用户的文化习惯。
以下是对于如何设定“默认时区”及“配置时区”可选项的一些建议。

  • 若网站的大多数用户生活在一个相对小的地理区域:
    设置“默认时区”为此地理区域的时区,将“配置时区”可选项设为“禁用”。
  • 若网站的大多数用户生活在跨越连续几个时区的地理区域(例如,中国或美国):
    设置“默认时区”为此地理区域的标准时间所在的时区,将“配置时区”可选项设为“禁用”。例如,在中国,您应将“默认时区”设置为北京时间所在的时区,即GMT+0800。
  • 若网站的用户生活在全球各地:
    设置“默认时区”为格林尼治标准时间(GMT+0000),将“配置时区”可选项设为“启用”。

界面定制

当发布一个新的drupal站点时,你可以从以下一些方面来对你的站点设计与结构进行个性化的定制。

  • 选择外观主题(theme)
    你的Drupal站点的外观基本上是有你所选用的主题决定的。一个站点甚至可以同时采用多个主题。第一步最好是先到“管理-〉外观主题”那里设定一个缺省的主题。在drupal.org你可以找到更多的主题下载,下载之后你需要进行
    主题的安装才能使用。
  • 创建自己的主题
    如果你想让你的站点拥有一个除了这些预设主题之外的独一无二的外观,那就需要
    开发自己的主题。你需要懂得HTML/CSS知识,对一些复杂的主题,还要懂得一些基本的PHP知识。
  • 定制导航菜单
    页面上部及底部的菜单条可以在“管理-〉外观主题”里面设置。在“设置”面板里找到“菜单设置”部分就可以了。你同样可以在这里直接使用HTML来定义主链接及二级链接。如果你没有定义主链接,那么系统将根据你所安装的
    模块自动生成导航条。

    每个已安装的主题都有自己独立的设置页面(列在全局设置页面的上面)。Drupal 4.6及以前版本中,如果使用PHPTemplate主题引擎,你不得不到每个主题的设置页面里去单独设置导航条。

    从4.7开始,PHPTemplate被集成到Drupal内核,主链接及二级链接现在变成了菜单系统的一部分。更多4.6及4.7的不同可以在这里找到。

  • 定制文本字串
    你可以通过本地化来改变Drupal页面显示的文字语言,你既可以使用预先翻译好的语言包(参见
    本地化手册部分),也可以使用自己的翻译来取代指定的字串。

定制登陆界面

在Drupal缺省设置下,用户未登陆时总是显示登陆区块的。但有时候你可能需要隐藏登陆区块。比如一个站点只有极少数用户被允许登陆后发布或编辑文章,而绝大多数用户只是浏览者(比如一个个人blog就是典型的例子),这时候你可能会希望隐藏登陆区块,因为占用了很大一部分页面但是对大多数用户并没什么用,反而会引起用户的困惑。

要关闭/隐藏登陆区块,你需要:

  1. 进入区块设置(“管理-〉区块”)
  2. 清楚“用户登陆”的复选框

登陆区块隐藏后,需要编辑的用户以及管理员可以通过下面的链接进入登陆页面:
http://www.example.com/?q=user
(将上面的example.com替换为你的drupal站点地址)

你还可以更进一步定制自己的登陆区块

你可以在 “管理-〉访问控制->账户规则” 里定义自己的用户名称与email规则。如果一个用户帐号或email地址符合你所定义的拒绝规则,同时并不符合任何允许规则时,那么这个新账户将是非法的,用户将不能注册此账户。常见的用途是,你不希望用户名中有任何不恰当的字眼,比如“管理员”或者“xxxx"之类的。

检查输入格式过滤器

Drupal的输入格式过滤是一项重要的功能,但是很多新手往往对此不太了解。输入格式控制可以让管理员更好的控制站点上内容的发布格式,例如是通过HTML还是bbcode的格式发布等等。Drupal社区有很多扩展模块提供了各种各样的输入格式过滤功能。

在“管理->输入格式”下面可以进行相关的设置。

用户注册的设置

管理员可以对用户注册进行控制,共有三种选择:

* 只有管理员可以创建新的用户帐号。
* 访客可以申请创建帐号,需要管理员批准后生效。
* 访客可以自行创建帐号,无需管理员的批准。

如果你允许用户注册,用户注册后将通过email收到自动发出的欢迎信,所以最好花一点时间来写好你的站点的欢迎词。

在这里你还可以设置是否支持用户头像。

如果你使用4.6,这些设置在 “管理 >> 用户 >> 设置” 下。如果你使用4.7,这些设置在 “管理 >> 设置 >> 用户” 下。

如果你需要创建用户名规则来限制特定用户名的使用,或者禁止特定的email地址用户注册,那么可以到 “管理 >> 访问控制” (?q=admin/acess/rules)下建立相应的账户访问规则。

访问规则可以用来限制特定用户名或注册email的使用。如果一个用户名或email地址符合任意一条拒绝规则,同时并不符合任意一条允许规则,那么这个这个新账户的注册将被拒绝。

在创建规则时可以使用通配符:
% 百分号,匹配任意长(包括0个)字符。
_ 下划线,匹配恰好1个字符。

例如:
%- 将包括任何以 ‘-’ 结尾的用户名
w_r 将包括第一个字母为w,第三个字母为r的所有用户名(如wor, war等)

在账户规则设置页面同时提供了一个检查工具,来帮助你检查你要创立的规则是否正确工作。

创建菜单结构

Drupal自带的菜单模块允许你建立无限嵌套的菜单结构。在 “管理 >> 模块” 下启动菜单模块后,就可以进入 “管理 >> 菜单” 进行菜单设置了。

Lullabot提供有一份配有英文解说的视频,演示如何建造基本的站点导航菜单系统。

创建菜单

  1. 添加菜单,只需到 “管理 >> 菜单” 下点选 “添加菜单” 并提供菜单名称即可。
  2. 建立了菜单后,还需要到 “管理 >> 区块” 下找到你刚刚添加的菜单名称,点选其后的复选框来开启菜单。你还同时可以选择菜单显示的位置与顺序(权重)。关于区块的介绍与使用,请参考手册中的区块介绍
  3. 建立菜单项。回到 “管理 >> 菜单” 页面,点击 “建立菜单项”。在这里你可以定义具体菜单项,如标题、说明、路径等。(关于路径及url别名,请参见pathmodule模块的相关介绍。然后,你还为这个菜单项选择一个上级菜单项,也就是说这个菜单项将作为哪个导航菜单项下的子菜单来显示。当上级菜单项就是第一步中定义的菜单时,那么此菜单项就成为这个菜单中的顶级菜单项。接下来选择权重,权重用来定义菜单项的显示顺序,权重数字越小,菜单项就越“轻”,也就是说越显示在上方。

    你还可以为同一个节点生成多个菜单项,但是最好只有在必须的时候再这样做,因为用户将可以通过不同的菜单访问到同一个节点内容,有可能会引起用户的困惑。

简化流程
在Drupal 4.6 版本中,新建页面后你还必须要进入到菜单管理页面,才能把这个页面加入到菜单中。Drupal 4.7 大大简化了这一流程,在发布内容时,用户将可以直接通过发布页面下的“菜单设置”来将此页面加入到指定菜单中。当然,管理员可以规定哪些用户才有权限来使用这一功能。

搜索引擎和robots.txt帮助

Drupal本身就是相当搜索引擎友好(Search engine friendly)的,例如常常会有基于Drupal的站点的Google ranking在5甚至更高(小于10),而放置同样内容的其它CMS则要低的多。

不过,你还可以通过更改一些默认参数让Drupal更加搜索引擎友好。有很多Drupal的设置你都可以调节来使Drupal更加搜索引擎友好。

  1. 首先你需要启用简洁链接(Clean URL)
  2. 然后,如果你使用的版本是4.5.x,确认你去掉了链接(URL)里的会话(session)ID,这可以通过设置.htaccess文件来改变。在4.6中,链接里的会话ID是默认禁止的。
  3. 可选的,对某些或所有节点使用URL别名(URL aliasing)。你可以使用自动路径(pathauto)模块来为新节点自动创建别名。

在php.ini里增加内存

虽然Drupal核心的运行只需要你的服务器分配8MB的内存,但是根据你站点上使用的模块数量,你可能需要增加些内存分配。当你访问?q=admin/moudles时会加载你站点上的所有模块,不管你是否启用。如果你出现了白屏,你只有两个选择:增加分配给PHP的内存,或者删除不使用的模块。

根据你的主机的不同,有几个地方都可以完成这个配置,一般是php.ini,或者htaccess,具体要看你的主机状态。
比如:

  • 在你的php.ini文件里设置memory_limit = 12M(推荐使用,如果你拥有这个权限的话)
  • 在你的sites/default/settings.php文件里设置ini_set('memory_limit','12M');
  • 在你的Drupal根目录下的.htaccess文件中设置php_value memory_limit 12M

你需要做点试验来确定最适合你的值。

设置默认内容选项—禁止自动提升到首页

配置默认的内容工作流(workflow)以适合你的站点。默认的情况下,Drupal模块被设置为提升到首页(Promote to the front page),一些时候这个功能很有用,不过你不会总是想要这样。

4.7中管理菜单发生了变化,因此这个配置页面也移动到了其它位置。

在4.6或更早版本中:
访问管理 >> 内容
选择配置(Config)标签,然后选择内容类型(Content types)子标签。

在4.7中:
访问管理 > 设置 > 内容类型

点击有需要的节点类型的配置(Config)链接,根据你的站点的需要更改默认的工作流选项。

如果你增加或者启用了包含额外内容类型的模块,你需要重新访问这些设置。

在帖子里显示或隐藏“提交人信息”

4.7及以前版本
你可以通过下面的链接为你的站点设置适当的帖子显示信息。
?q=admin/themes/settings

在管理 >> 主题菜单下,选择配置(Configure)标签之中的全局设定(Global settings),然后在显示文章信息(Display post information)面板中为你的站点选择适当的选项。可用的选项是根据你安装的模块自动检测的,其它选项可以在单个主题配置页面设置。

5.0
在管理 >> 站点建设 >> 外观主题(admin >> site building >> themes)下面选择设置(configure)标签之中的全局设定(Global settings)。然后选择适当的文章显示选项就可以了

区块

区块是显示在Drupal站点的边栏或特定区域上的框状结构。你可以看到大多数的区块(比如,最新论坛主题)都是各个Drupal模块动态生成的,当然你也可以创建你自己的区块。

区块在在页面上显示的位置和在哪些页面显示,既取决于使用的主题,也和区块的设置有关。区块设置由区块管理页控制,你可以通过点击管理 » 区块来访问。在这个页面你可以控制每个区块的启用、在页面上的显示位置、以及在哪些页面会显示。

区块配置

区块是否在某个页面上显示取决于以下几个因素。

  • 首先,区块必须被[i]启用[/i],这可以通过勾选区块管理页的“启动”复选框来完成;
  • 其次,区块的[i]用户定义可见性[/i]设置必须让用户允许区块显示。你可以配置区块为[i]用户不能控制是否显示此区块[/i];[i]默认显示此区块,但用户可以自行隐藏[/i];或者[i]默认隐藏此区块,但用户可以选择显示[/i]。每个用户可以在“我的帐户”页面里选择或禁止显示可配置的区块。
  • 然后,管理员可以通过设置区块的“页面自定义可见性”,来决定区块是否在站点的某个页面上显示。你可以配置区块只在某些页面显示,或者只在某些页面之外的页面显示,或者根据php代码返回值来决定是否显示。
  • 最后,如果启用了[i]低负荷模块[/i],并在区块管理页面选中区块的低负荷复选框,那么只有当站点的负荷低于指定阀制的时候,区块才会显示。

当你配置好区块,使其按需要显示在指定页面的正确边栏时,你可能希望调节区块的权重来指定区块在边栏中的垂直位置。区块的权重通过区块管理页面的下拉选择框来选择,更重的区块(具有更大的正值权重)会“下沉”到边栏的底部,同时更轻的区块将向顶部“上浮”。

更多信息可以在手册的模块部分有关区块介绍里找到。

限制特定页面上的区块显示

在区块配置的“页面定义可见性设置”选项组下面有一个大文本框,其中每一行你可以输入路径指定区块在哪些页面将会显示或者不显示,这取决于你上面选择的选项。

下面是一些有注释的例子,它们都假定你选择了第二个选项(只在指定页面显示),如果你选择了第一个选项(在除了下列页面外的所有页面上显示),区块将会在除了你下面列出的页面之外的所有页面显示。你可以在列表中加入任意多个页面,每个占一行。(注意你不能同时指定会显示区块的页面和不会显示区块的页面,两者只能选一)

<front> 指定区块将在首页上显示
node/42 指定区块会在节点ID为42的文章里显示
aggregator 指定区块仅在聚合页面显示。
blog/* 指定区块区块会在所有地址(URLs)以blog/打头的页面上显示。注意,如果你希望在blog主页面上也能显示区块,则只要再加入一个路径blog(不需要后面的反斜线)就可以了。

另一个例子,如果你有在管理界面不需要显示的HTML,Javascript或PHP区块,你可以选择“在除了下列页面外的所有页面上显示”选择,然后使用下面的通配路径:

admin/*

除此以外,你还可以选择第三个选项(看下列的 PHP 代码是否返回 TRUE)来进一步定制区块的显示,这时需要在下面的文本框中输入PHP代码,并使用<?php ?>标记,PHP代码的返回值决定了区块的可见性。

自定义区块

自定义区块包含的内容由你来提供(与模块生成的区块相反),自定义的内容可以是静态的(如HTML)或者动态的(PHP生成内容)。事实上Drupal提供的所有功能都可以在PHP内容区块中访问到,这种区块的弹性提供了极其强大的途径来定制你的Drupal网站。

你可以通过区块管理页(点击管理 » 菜单),选择添加区块标签,并完成表单来创建自定义区块。

每个自定义区块由标题、描述和正文组成,正文中的内容可以为任意长度。

注意:在Drupal4.6中,区块的标题被用来作为数据库的标识符,因此你只能定义一个没有标题的区块(这个问题已经为更新的Drupal版本作了修正)

这个问题的一个解决办法是把标题改为:<!–title of custom block–>,这样既能满足Drupal对区块标题的要求,同时注释标记(<!–…–>)也防止了标题在区块中的显示。

数据库表名前缀(以及进程间共享表)

有些网络主机限制了客户只能拥有一个数据库,因此需要不能重复的表名。即使在这种情况下,管理员仍可以使用Drupal,甚至可以安多个Drupal,因为Drupal提供了表名前缀(table prefix)功能。

为了使用这项功能,你必须首先编辑脚本database/database.x,以创建带有你的前缀字串的数据库表。如果你要安装附加模块,你也需要修改数据库脚本里的INSERT和REPLACE语句来加上前缀(译注:Drupal 4.7模块自带的Install文件无需修改)。例如,改变以下格式的所有语句从:
CREATE TABLE access
INSERT INTO system VALUES
(’modules/filter.module’,'filter’,'module’,”,1,0,0);
变成
CREATE TABLE dr1_access
INSERT INTO dr1_system VALUES
(’modules/filter.module’,'filter’,'module’,”,1,0,0);

然后使用dr1_(举例)作为$db_prefix的值,写入到
sites/example.com/settings.php文件中。

你也可以使用脚本来自动完成这项工作,你可以同时更新多个站点,使用(bash shell)的命令行:

for F in '' prefix1 prefix2; do \
   for S in 'find ./modules --name \*mysql'; do \
      scripts/dbprefix.sh $F < $S | grep -v DROP |\
          mysql -h DBHOST -u DBUSER -pPASSWD DATABASE; \
      done;
   done

注意:不是所有数据库脚本都是以mysql结尾的,这里只是一个例子; ” 表示前缀为空的情况。

这里还有一个PHP脚本,用于为/drupal/sites/*下的所有站点创建所有数据库表,可以在DRUPAL-4-6下工作,访问数据库表创建脚本问题以获取更多信息。

如果你想在多个站点间共享用户,你需要按照下面的格式设置$db_prefix变量:

<?php
$db_prefix
= array(
'default' => 'thissite_',   
'authmap' => 'shared_',
'profile_fields' => 'shared_',
'profile_values' => 'shared_',
'role' => 'shared_',
'sequences' => 'shared_',
'sessions' => 'shared_',
'users' => 'shared_',
'users_roles' => 'shared_',
'users_uid_seq' => 'shared_', // 用于pgsql
);
?>

请访问共享表以及数据库间共享表一节获取更多信息。

多个数据库间共享公共表

多个数据库间共享公共表
[仅在mysql上测试过]把多个Drupal安装在不同的数据库中,但是仍然共享共用的表,这是可以做到的,只需要指定数据库名作为前缀的一部分,例如

$db_prefix = array(
    "default" => "slave1.", // slave1安装的默认数据库
    "users" => "master.",
    "sessions" => "master.",
    "authmap" => "master.",
    "sequences" => "master."
    "profile_fields" => "master.",
    "profile_values" => "master.",
);

上面的例子中,slave1以及master为数据库名。
如果你共享的是users表,你应该还需要共享一系列的表(虽然我不太清楚)。如果你不是想共享用户表,只想共享翻译,那么共享locale表就足够了。

进程间共享表

表名前缀可以选择性的只应用到某些表上,这样多个Drupal安装就可以共享共用的表。一个有趣的应用是共享分类表(vocabularies, term_date),另一个有趣的用法是在多个Drupal安装间共享users表。

为了使用这项功能,先安装两个Drupal到同一数据库中,并使用不同的数据库前缀。在这个例子中,一个前缀为“master_”,另一个为"slave1_"。然后编辑"slave1_"安装的conf.php文件,让一些表指向"master_",实现用户共享,如下:

$db_prefix = array(
    "default" => "slave1_", // slave1_安装的默认表前缀
    "users" => "master_",
    "sessions" => "master_",
    "authmap" => "master_",
    "sequences" => "master_"
    "profile_fields" => "master_",
    "profile_values" => "master_",
);

注意:下面的表含有的数据属于每个站点特有,因此不能被共享:

  • cache
  • variable

在PostgreSQL中使用模式作为前缀

本页讨论了使用PostgreSQL的模式(Schema)作为前缀的用法。“普通”前缀可以和MySQL一样的用法,所以这里不再讨论。

PostgreSQL有种叫“模式”的机制(http://www.postgresql.org/docs/current/static/ddl-schemas.html)。有时非常方便,但如果你不知道那是什么,你可能实际上不需要它们并可以不用读下去了。

模式在Drupal中可以被用作前缀,也就是说,在多站点安装中,每个站点可以存在于自己的模式中,并且共享的表可以存在于一个“共享”模式中(或者甚至可以是公共模式)。

这儿有个问题:Drupal的升级会失败。很不幸,但是没办法,因为“普通”前缀和模式前缀是不兼容的。如果你对详细情况感兴趣,请访问http://drupal.org/node/40034。

不过也不用担心,可以通过小小的修改更新脚本(update.php和updates.inc)来简单的修正这个问题。问题来自CREATE [UNIQUE] INDEXALTER TABLE .... DROP/ADD CONSTRAINT语句,当使用模式作前缀时,会执行下面的查询:

CREATE INDEX prefix.search_total_word_idx ON prefix.search_total(word)
ALTER TABLE prefix.boxes DROP CONSTRAINT prefix.boxes_title_key
ALTER TABLE test.contact ADD CONSTRAINT test.contact_category_key UNIQUE (category)

必须从索引名和约束名前面移除前缀,也就是它们必须改为:

CREATE INDEX search_total_word_idx ON prefix.search_total(word)
ALTER TABLE prefix.boxes DROP CONSTRAINT boxes_title_key
ALTER TABLE test.contact ADD CONSTRAINT contact_category_key UNIQUE (category)

你只需要搜索CREATE  INDEX,CREATE UNIQUE  INDEXADD/DROP CONSTRAINT语句并移除索引/约束名外面的{}就可以了。

最好的方式是运行升级测试,你可以看到错误查询的列表,然后你就可以很简单的修改它们了。

其它注释:你不能使用prefix.sh来为表加上前缀,这会产生错误的CREATE [UNIQUE] INDEX 查询。这点同样可以简单的被修正,只需要修改:

s/^CREATE INDEX \(.*\) ON /CREATE INDEX $PREFIX\\1 ON $PREFIX/;
s/^CREATE UNIQUE INDEX \(.*\) ON /CREATE UNIQUE INDEX $PREFIX\\1 ON
$PREFIX/;

为:

s/^CREATE INDEX \(.*\) ON /CREATE INDEX \\1 ON $PREFIX/;
s/^CREATE UNIQUE INDEX \(.*\) ON /CREATE UNIQUE INDEX \\1 ON $PREFIX/;

一种可选方法
如果你打算用这种方法来解决,下面是你需要做的:

1.添加下面的语句到database.pgsql文件的顶部:

CREATE SCHEMA schemaname;
SET search_path TO schemaname;

2.编辑drupal/includes/database.pgsql.inc,替换函数db_connect()为:

<?php
function db_connect($url) {
$url = parse_url($url);
$db_and_schema = explode(".",substr($url['path'], 1));
$conn_string = ' user='. $url['user'] .' dbname='.
$db_and_schema['0']  .'  password='.  $url['pass']  .  '  host='  .
strtr($url['host'],'+','/');
$conn_string .= isset($url['port']) ? ' port=' . $url['port'] : '';
$connection = pg_connect($conn_string) or die(pg_last_error());
  if(!empty($db_and_schema['1'])) pg_query('SET search_path TO
'
.$db_and_schema['1']);
  return $connection;
}
?>

3.最后,在你的seeting.php文件里使用类似的db_url:
$db_url = 'pgsql://user:password@+tmp/dbname.schemaname';

  • 没有进行彻底的测试,但是我的可以工作(在4.6.3上)。
  • 这也解决了无法指定一个Unix socket作为主机的问题——在pg_connect()里/tmp被替换成了+tmp

。[=red]
[/]

Define shared variables for all sites

When you create a multi-site installation, an important table to duplicate is the variable table. However, by duplicating this table, you will also duplicate some variables that you might prefer not to. To force a set value for these variables, for all of your websites, you can do the following.

First, you will probably have a settings.php file for each site in your installation, like sites/example.com/settings.php. Edit each file and add the following to the end.

include_once ('./sites/default/shared_variables.php');

Now, in the default directory, add a file called sites/default/shared_variables.php containing the following.

<?php
/**
* These variables are fixed for all sites that have this line of
* code in their settings.php file:
*
*      include_once ('./sites/default/shared_variables.php');
*/
$conf = array(
  'site_name' => 'All these sites are belong to us.',
  'theme_default' => 'pushbutton',
  'anonymous' => 'Visitor'
);

The element names (eg. ’site_name’) correspond to a variable in the variable table. So no matter how many copies of the variable table that you need, each site in your multi-site installation will defer to the variables that you define in the $conf array in your shared_variables.php file.

The disadvantage is that these variables cannot be edited via the Drupal admin pages.

发表评论

Drupal汉化

安装Drupal后,您最先遇到的问题就是如何将其中文化,办法很简单:

  1. 下载汉化包:
    由于带宽与方便维护、升级的原因,我们的汉化包同其它众多
    翻译项目一样,都统一放在drupal.org的zh-hans(简体中文的语言代码)项目下,请选择您对应的Drupal版本下载:
  2. 导入汉化包:
    6.x 对多语种支持有改进,请参见
    如何使用6.x中文安装包
    5.x 及以前版本,请参考下面步骤:
    • 到 admin->site building->modules [admin/build/modules] 启用 Locale 模块。
    • 到 admin->site configuration->localization [admin/settings/locale]
      1. 点 Add Language 连接,选择 Chinese, Simplified(简体中文)
      2. 点 import 连接,选择你的 po 文件,Import into 要选择 Chinese, Simplified 那一项,点 import
      3. 启用 Chinese, Simplified 语言即可。

扩展模块中文化
待续

发表评论

Drupal使用经验谈(3)

使用的模块列表

除了安装了Drupal V5.0以外,我还安装和使用了以下模块:

  • CCK
  • CCK Field Permissions
  • Content Templates (Contemplate)
  • Link Field for CCK
  • Node (key)words
  • Views
  • Front Page
  • Panels
  • User Points
  • Subscriptions
  • taxonomy breadcrumb
  • Captcha
  • textimage

    由于网站将正式运行,所以我一直等到以上模块与Drupal V5.0匹配的正式版全部推出、并测试没有明显bug后才正式开始建站。因此,以上模块都已经具备5.0的正式版,而且测试基本没问题。

    以上每个模块的功能和使用方法,将结合本站的建立逐个加以说明。

  • Drupal V5.0的安装

    Drupal V5.0的安装非常简单,只要填写三个Mysql数据库的链接参数(是我接触到的CMS安装中最简洁的,真是从先前最繁琐的极端走到另一个极端),因此无须多写,是个地球人应该就会安装。

    值得一提的是,在以上三个选项下面,点击会展开“高级选项”,一般不需要填写,保持默认即可。我由于沿袭以前使用其它CMS时候的习惯,给数据库加了一个前缀“drupal_”,结果运行某些模块以及模块升级时候出了问题。至于这些问题的根本原因俺难以知道,反正取消这个前缀以后就再也没有那些问题了。因此,个人强烈建议不要给数据库加前缀

     

    合理利用帐号与用户角色

    下面是一些合理使用用户帐号与角色的建议:

    1. 不要使用超级用户帐号(也就是第一个用户帐号uid=1)进行日常活动。这个账户应该主要用于站点设置、升级等管理性操作。
    2. 根据你的站点的需要为你的站点建立适当的用户角色,例如“站点管理员”、“论坛版主”、“手册编辑”等,这样能够帮助你更好的细分管理用户权限。注意“管理用户”这一权限,拥有这一权限的用户将可以给自己添加其它任何权限。
    3. 新模块经常会带来新的权限设定。记住添加新模块后检查一下用户权限页面,有没有需要添加或更改的地方。

     

    使用 /sites 目录使你的Drupal安装井井有条

    Drupal的多站点(multi-site)功能对只有一个账号或Drupal安装,而需要支持多个Drupal站点的用户是个大好消息。其实对于只有一个站点的用户,巧妙地运用这一功能也能帮助你更方便地管理维护你的Drupal站点。
    在Drupal的安装目录下,/site/default 这个目录存放的是一些重要设置(比如settings.php),用户设定数据库帐号密码等信息。如果你需要用同一套代码支持多个站点,你可以为每一个站点建立一个相应的目录,用于存放该站点特定的模块、主题以及其它文件。(多站点设置的具体介绍请参看
    相关手册部分。)即便你只有一个站点,合理使用 site/ 目录也能够帮助你集中存放并更方便地管理站点自定义的模块、主题等文件。

    4.7及更老版本

    首先,在 sites/ 目录下建立一个与你的站点域名相同的目录,例如:/sites/www.mysite.com 。把 /sites/default 目录下的 settings.php 文件复制到这里。然后在此目录下你可以新建 /modules 和 /themes 和 /files 目录来存放此站点特定的模块、主题及上载文件等。在这些目录下的模块和主题,都可以被Drupal正确地找到并加载,就像把它们放在Drupal自带的 /modules 和 /themes 目录下一样。但这样做的好处就是你自行安装的模块、主题都集中在这个新目录下,而不是和Drupal自带的模块、主题混在一起,方便以后更新升级。你的目录结构应该像这样:

    drupal
    |-sites
      |-default
        |-settings.php
      |-www.mysite.com
        |-settings.php
        |-modules
        |-themes
        |-files

    如果你是重头开始建立一个新站,那么如上面所讲的建立了 /files 目录后,你还需要到Drupal的站点设置里面,把“文件系统目录”这个设置(缺省的是指向Drupal下的 files 目录)改为你的新路径:sites/www.mysite.com/files 。对于已经使用缺省 files 路径的站点,虽然你也可以这样改动,但这一移动可能会带来一些问题,特别是原有的一些URL路径可能就会出现错误。

    5.x的新改进

    Drupal5.x版本提供了一个更简单的选择即使用 sites/all ,你可以把所有非Drual自带的模块、主题以及上载文件目录都放到 sites/all 这个目录下。对于一般的单站点安装,你仍旧可以把 settings.php 像原来一样放在 sites/default 目录下。这样的安排使得Drupal核心下载与用户自定义的部分分开放置,可以简化站点迁移的过程,也可以帮助你更方便地复制某一特定的安装。
    对多站点安装,每个站点都可以使用在 sites/all 目录下的模块与主题。sites/all 这一目录在你下载Drupal后就已经自动生成,所以你只需在下面直接建立 /modules 和 /themes 等目录就行了。整个目录结构应该像这样:

    drupal
    |-sites
      |-default
        |-settings.php
      |-all
        |-modules
        |-themes
        |-files

    当你完成了以上设置后,就相当于为你的后台站点文件提供了一个更有条理的管理。Drupal目录包含所有标准的核心文件,而所有你自行安装或定制的模块、主题、设置等都另行存放在 /sites/www.mysite.com 或 /sites/all 目录下。你只需备份数据库以及特定站点目录下的文件就可以很方便地复制你的安装了。此外,任何时候你想要添加站点时(比如在同一个安装上再建立一个单独的测试站点),只需建立相应的站点目录就可以了。

    目录结构

    drupal
    |-sites
      |-default
      | |-settings.php
      |-all
        |-modules
        |-themes
        |-files

    这样会不会好看些?

    嗯!我都没注意ilter

    嗯!我都没注意[code]filter没起作用,空格都没显示出来,现在就去改过来。
    偷了个懒,还是用code filter直接显示了:)

    扩展的扩展一般怎么办?

    我想知道,模块的扩展应该放哪边?我直接放module下有效,直接放/module/xxx/include有效,放在module/xxx 的目录也有效,新建一个目录/module/xxx/module 或者是module/xxxmodule也有效,好像最后这个比较方便升级啊?

    关于模块存放的一个建议

    看了《Pro Drupal Development》第二版的第二章,其中就提到如何合理的存放module,意思应该是这样的
    非核心模块 都放在 /sites/all/module/文件夹下 (module要自己建立,有两种情况)
    1.如果是是网上下载下来的第三方模块,就直接放在/sites/all/modules文件夹里。
    2.如果是用户自己开发的模块可以这样放,在/sites/all/modules/文件夹下面建立custom文件夹,将模块放在/sites/all/custom/下,以便于区分第三方模块和自己开发的模块

    发表评论

    Drupal 5.x 安装视频

    http://www.flickr.com/photos/drupalchina/sets/72157594417813106/show/

    发表评论

    最终用户指南

    欢迎!

    这篇指南用于怎么在基于drupal的网站开始。指南包含基本的topic,比如注册账号,登录,修改账号设置,创建内容等。

    Drupal是一个内容管理系统。其目标是帮助用户组织和发表网站的内容,如articles,图片,或者其他形式的内容。Drupal是一个“动态”的系统-而不是强迫用户去使用一个修改的,预定义范围的内容。Drupal考虑到信息安排和发表的细节,使用户集中精力于真正要表达的内容上

    在用drupal构建的站点的大多数内容-比如本页的文本,举例来说,被保存在数据库中。文本和图片按照指定的格式被提交到浏览器。而访问者浏览页面时间,drupal把有关这些内容的部分从数据库中调出并按照页面的模板组织好。这使得较快的增加或修改内容更容易,不需要那些提供内容的人拥有HTML的知识或者其他的网站技术。

    通过配置drupal站点和你在该站点上的用户角色,你可以被允许发布和编辑内容。幸运的是,drupal就是设计用来让这一点变得相当容易的。只需要非常少的一点技术知识。虽然不同的站点有不同的细节,但是基本的过程有以下几步:
    * 注册
    * 登录
    * 创建内容(比如文章,故事)

    本篇指南将解释这些步骤,让你熟悉成功使用drupal所需要的基本信息。

    这些内容也可以用在创建指导定制特殊要求的站点

    编辑和删除内容

    要编辑或删除内容,需要先登录,并找到你想编辑的页面。在这个页面上寻找“编辑”选项。根据你的权限,你可以在所有的页面上或者只在某些页面(比如那些你自己提交的)看到这个选项。

    点击编辑按钮将打开一个新的页面,在这里你可以通过表单修改文本,同时你也可以修改有关文章发布的设置。一旦你将文本和格式修改合适,就点击在表单底部的“提交”按钮。注意某些站点可能被设置成在提交你的修改前需要你“预览”页面。

    如果你希望删除这个页面(并且你有需要的权限),点击表单底部边上的“删除”按钮。你将还有一次机会确认你希望删除这个页面――还是改变你的主意。

    注意:由于Drupal是可以非常灵活的配置的,可能还有别的其他方法来编辑和管理内容。请检查你的安装文本,或询问Drupal管理员,或向其他的用户咨询细节。

    注册成为用户

    注册成为用户

    如果打算在一个Drupal 站点上添加或编辑页面内容,通常你必须首先注册成为用户。(有时站点管理员设置允许“匿名用户”可以发布一些如评论这样的内容,这种情况下你可以不注册为用户就能发布)

    有些时候,由站点管理员把你添加为用户。如果是这种情形,他们会把用户名和密码发送给你用来登录站点。

    另外的方式就是,在你想注册的站点主页上找到一个叫做“用户登录”表单(通常在页面的左边或右边),然后点击下面的“创建新帐号”链接。

    接着出现的下一个页面里一般会提供一些要注册的站点的规章政策信息。读过这些信息后,要继续注册的话,就在相应位置输入你的用户名和电子信箱地址,然后点击“提交”按钮。检查你的电子信箱。几分钟内,你应该会收到一封自动生成的电子邮件,来确认你的注册过程,并且给你一个初始密码。用这个初始密码,你就可以登录Drupal站点了。

    用户登录

    用户登录

    通常来说,你需要登录后才能添加或编辑网页的内容。如果你还没有注册为用户,请参看上面的步骤(或者,如果可以的话,请网站管理员为你注册一个用户)。然后点击你打算使用的网站的主页,找到一个"用户登录”表单。一般这个表单会在页面的左侧栏位或右侧栏位(这在Drupal中称为“区块”)。输入你的用户名和密码后点击“提交”按钮。

    一切顺利的话,会载入一个包含新的区块的新页面,你的用户名会显示在顶部。这新区快是个菜单,通过这个菜单,你就可以开始并编辑、生成页面内容了。

    更改你的帐号设置

    一旦你在一个Drupal站点注册成功,你就可以通过更改设置来控制你自己的相关信息,并且可以改变你使用这个Drupal站点的方式和体验。要看看你对自己的帐号能做些什么改变,就登录进去,点击导航区块(以你的名字命名的那个)的“我的帐号”。然后点击“编辑(edit)”。

    帐号设置。你实际看到的选项可能与下面提到的有些不同,这取决于站点激活了哪些功能选项。

    密码

    在密码字段输入2次密码来设定一个新密码。Drupal最初会发送给你一个初始密码,但非常难记,因此建议你改一个你自己容易记忆的密码。

    区块设置

    网站管理员可能设置一些可选的区块(通常显示在页面左边和/或 右边的内容块)。你可以通过“选中“(checking)或“取消选中”(unchecking)来控制是否显示或隐藏这些区块。

    签名档

    如果开放了评论功能,你就可以设定一个缺省的签名档。这个签名档会被自动的复制添加到你的评论中,同时还可以进行编辑。

    时区

    你的站点管理员可能会允许用户设定自己的时区。这样站点上所有的有日期的内容都可以根据拟设定的时区差以本地时间显示出来。

    主题

    一个“主题“(theme)就是一个Drupal站点基本的外观和风格。有些站点安装了不止一个主题。如果管理员提供了不止一种主题可用,你就可以选一个喜欢的主题作为你的帐号的默认主题。

    如前所述,不同的站点有不同的设置,这就可能在你的用户帐号页面显示不同的区块字段。要使用那些附加的选项,就要参看那些单独模块的文档说明。

    附加信息。除了帐号设置标签,你也许会看到一些以它们包含的内容命名的额外的标签。例如“个人信息“,“工作区”等等。这些标签都由“profile模块“控制,这个模块允许你输入更多关于你自己的信息。请通过查看profile模块来获得更多有关信息。

    建立新的内容

    一旦登录,你就可以开始发布内容了。

    在你个人菜单的顶部,可以找到一个称为“创建内容”的链接。点击之后你讲看见一个你能够创建的内容的列表,这个列表反应了你的账号或者是你账号所属的群组的权限。

    在这个框架下,有一些扩展模块可以帮助你创建更复杂的内容,比如拼写检查、嵌入图片亦或文件上传。

    一步一步的实例

    假设你选择了“故事”作为创建的内容形式。

    你要找到有一个表头上写着“提交故事”的空栏,在这里填入内容并提交。

    管理选项
    在表栏的上部,你可以看到一下管理选项。举例来说,有个标识为用户评论的box,Drupal支持在发布的时候讨论/评论,但是这些评论不一定是合适的。如果评论对你的文章有用的话,保持默认选项“可读/写”,如果不是,选择“禁止”

    标题
    标题应该直观,用描述和易记的语言。
    Topic:可能不被看到,如果你没有指定目录的话。
    接下来是“topic”菜单。着个区域,你的文章将继续-用DRUPAL的技术语言来说,这是“taxonomy categories”。这个列表列出了所有可看到的sections,以及他们的结果。为你的故事选择正确的“section”,继续下 以支持文本的body
    Body
    Body 是你输入主要内容的地方。如果你已经在word处理工具或HTML编辑器输入过了,只需要拷贝并粘贴到这里就可以了。或者你也可以直接在这里输入。大多数基本的页面,只需要在每段的后面留个空行(敲两下回车)就可以了。

    你可以用友好的html来输入,但是如果你是个新手的话,也不用担心-这不象听起来那么难。下面是个快速教程

    如果你想对某些部分使用黑体,只需要把这些部分用<b>或者<strong>标签包含住。如下

    <b>这段文字是黑体</b>
    <strong>这段文字是黑体</strong>

    注意,应该有一个开始表示(没有斜线的)和一个结束标识(在标识名称前面有斜线的,表示到此结束)

    斜体,使用<i> 或<em>

    <i>这是斜体</i>
    <em>这是强调</em>

    对<b>、<i>标签和<strong>、<em>标签语义上哪个更自然还有想当多的争议。

    如果想把段落弄的好看点,用<p>标签

    <p>这是一个段落</p>

    建立一个列表,首先要用<ul>标签(表明是个非计数列表),然后在每行使用<li>标识(表示每行的内容)。不用忘记在最后使用</ul>来关闭列表。下面是一个示例。

    <ul>
    <li>第一条</li>
    <li>第二条</li>
    </ul>

    结果如下:

    • 第一条
    • 第二条

    这不是很痛苦,对吧。

    你还需要决定的就是文章节选(teaser)到哪里截止,这里说的文章节选是指你点击文章标题连接近来之前看到的那部分正文内容。如果你不做任何处理,Drupal会自动替你选择一个断点-比如节选到文章的第一段截止。当然最好还是你自己来决定,以保证断点恰到好处。你可以在希望截止的地方敲入代码 <!–break–> 表示到这里截断。

    现在,你可以点击“预览”按钮来预览你准备好的页面(系统推荐,但有的时候是必须的),或者你可以勇敢且不在乎的点击“提交”按钮。

    Controlling Teaser Length

    Last modified: December 14, 2007 – 21:27

    In Drupal, you can cause the teaser to end at the point of your choosing by adding the following to your content body:
    <!–break–>

    Everything above this tag will appear in the teaser (unless you place it beyond the point at which Drupal automatically breaks the content).

    Notes

    • Make sure there are no spaces in the tag or it will be ignored.
    • You can place the tag in the middle of a paragraph. The full text will not notice the tag so the paragraph will look normal, but the paragraph will be cut short in the teaser

    内容的类型

    内容的类型

    使用Drupal时你可以提交很多种类型的内容。许多内容被组织到称为“节点”的东西。基本上,你可以把节点认为是内容的页面。比如说,有可能是一篇文章。内容可以通过web页面的表单(forms)来进行添加或者更新。所以如果要增加一篇文章你要打开一个表单,在里面键入文本,(比如题目和文章的内容),然后点击一个可以提交表单的按钮。

    标题,分类与术语

    Drupal网站上的内容通常使用目录的方式来组织,这种目录系统被称为分类系统(taxonomy)。一个分类里可以有不同的术语(term)被用来对文章分类。当你添加一篇文章的时候,你可以找到一个下拉列表的标题(topic)。通过选择其中之一,你就选择了你的文章将分配在网站的哪个分类。如果还是很难以理解,你可以把标题想成你硬盘上的文件夹-它们有助于组织内容,以便于你能在一个地方找到类似的东西。

    权限

    你能创建或编辑什么类型的内容取决于你所处于的角色或用户组。通常,你可以按下面的方法找出你能做什么

    • 在用户菜单(用你的用户名做开头的一堆链接的组合),寻找“建立内容”的链接,点击后得到一个你有权限张贴的内容的列表
    • 在一个特殊的页面,寻找文章下面的链接,比如那些有“12个评论”(如果有对这篇文章的评论的话),或者“阅读更多”(如果你正在看文章的短版本)。如果这些链接说“管理”或其他的如“编辑这篇文章”,你就拥有编辑这种类型内容的权限。

    审核与提交队列

    某些Drupal站点被设置成当你所提交的内容将首先进入“提交队列”。提交队列里的内容在发布之前,将由其他的有审核权限的用户阅读审批,如果可以接受,他们才会发布你的内容。

    创建评论

    评论允许用户对站点上的内容进行交流,对某一篇文章提出他们的建议,或者另外提出一篇评论

    留下评论
    当你打开阅读一篇文章时,寻找评论相关的链接。如果你没有登录,可能就是“登录或注册以发表评论”。当你登录后,你将看到如“添加新的评论”。点击这个链接,你就可以评论了。

    礼仪
    评论是一个不错的提高社区站点人气的方法――但是它也可能导致不友好的甚至是恼人的交流。对任何社区,最重要的是尽力保证你的评论是负责任的和建设性的。

    按对话排列(threaded)的评论
    Drupal的web站点的评论是按对话排列的。意味这你可以直接对某篇文章评论――或者你也可以回复任何一篇存在的评论。如果你回复了,你的评论将被缩进显示以表明这是该讨论的一部分。

    其它输入内容的方法

    Drupal内置的通过表单提交内容的方法适用于绝大多数情况。但是如果你有很多文本要创建,或者你希望转换已经存在的内容,或者你使用特殊的类型的内容比如说blog,使用别的方法来提交内容到你的Drupal站点中可以更方便。

    离线准备你的内容中建议了一些方法,在提交到Drupal之前,在你的计算机上使用类似的软件来创建和编辑内容

    根据你的网站许可情况,你可以输入新的文章而不用登录到站点上。

    Drupal包含了“bloging”的功能――创建“blogs”或基于web的日历。如果你的站点允许了这个功能,你就可以通过众多桌面“blog”软件包中的一种来输入或编辑内容。这就使你能简单的键入内容,然后点击“发布” (post) 按钮,把你的内容自动的加载到你的站点上。

    事实上,bloging软件不只用于blog――它也可以使你更容易和快捷的发布网站内容任何部分。下面的用w.bloggar发布和编辑内容描述了类似这样的程序中的一个。
    .
    在试用blogging软件前,你应该检查你站点的所有者,以确保其允许blog发布。最关键的要问的是:“是否允许blogger api?”如果答案是yes,你就可以准备开始了。如果不行,你可以申请开启这项功能以方便更新。

    搜索

    下面的介绍是用于Drupal4.6

    查找功能可以由站点管理员打开或关闭。如果是打开的,你可以看到一个标有“查找”的,用于输入你的搜索关键词的box。一般在页面的顶端,或者在两边众板块中的一个。

    象大多数的搜索功能一样,输入一个或几个你象查找的关键词并点击按钮。

    Wild card 将执行通常的搜索功能,“任何由。。。开始的”

    多词条将A或者B的方式来搜索,将返回有一个或多个词的页面。没有只是A并且B的页面的搜索方式。

    搜索引擎会把更高权重的词用headings或higligted。它靠给词指定权重分值并插入到指定的HTML标记来做到这些。
    Header h1 => 21
    Header h2 => 18
    Header h3 => 15
    Header h4 => 12
    inside a link => 10
    Header h5 => 9
    Header h6 => 6
    underlined, bold, italics => 5

    你可以只搜索单独的词,而不是一段引用的文字。不按时间或其他参数来排序。

    当搜索一些数字时,如日期,IP地址,或者版本号,它将把一组数据的特征用标点符号区分成单独的部分。这也就意味着,搜索’20/03/1984′时也会返回’20-03-1984′的结果。

    点号、下划线、破折号将简单的被忽略,这就允许使用简称和URL的搜索行为有了意义

    除开上面的规则外,搜索引擎把所有的标点,标记,空格等等都考虑成为词和词的分界。

    你也可以考虑使用google,用"site:example.com"来做你请求的开头,你需要输入
    site:example.com + 我的搜索关键词
    或者使用google工具条上的“搜索本站”(不太熟悉google工具条,翻的没错吧?)的按钮。

    进阶

    Drupal被设计成支持很多种不同网站的类型,许多针对Drupal站点的功能,外观,交互模式的改变通过Drupal的配置和扩展是很容易做到的。

    • Drupal是高度可配置的。站点管理员可以允许不同的配置,并且改变许多可以影响站点外观和功能的设置。
    • Drupal有一个权限系统,这可以使得创建不同的用户角色,如成员,员工,合作伙伴。站点内每种类型的用户能看见并且做不同的事情。
    • Drupal被设计为很容易通过模块来扩展。模块是一个奇妙的term为额外的软件你可以激活或者“插入”到你的web来提供额外的特征和功能。举例来说,你可以激活投票模块一使用户容易的创建基于web的投票。一些模块,被称为“核心”模块,来自每个Drupal的安装的预打包的软件。而第三方模块,被成为“contributed”模块,能单独从Drupal的网站下载和安装到你的服务器上。
    • Drupal的外观能够通过不同的“themes”来改变。这些模块有核心theme也有contributed themes

    一个典型的Drupal站点的外观或者你在上面能做的事情依赖于这个站点的管理员选择来的分数。如果你需要更多的深入的关于修改表示方法的信息或者可能被配置显得是什么样的,请在http://drupal.org/handbook 和Drupal的论坛上参看管理员指南。

    发表评论

    Drupal 6.x 安装

    下载Drupal 6.x

    我们可以从http://drupal.org/获得Drupal的最新版本。文件是 .tar.gz格式并且可以使用最压缩工具解压缩。对一个典型的Unix命令行,请使用:wget http://drupal.org/files/projects/drupal-x.x.tar.gz

    tar -zxvf drupal-x.x.tar.gz

    这样会建立一个新的drupal-x.x/目录包括所有的Drupal文件和目录。把这个目录包括的这些文件移动到网站服务器文件的根目录下面或者是你的公开的HTML目录下面:

    笔记

    在Windows系统上,您可以使用一些压缩程序。例如一个是 7-Zip (http://www.7-zip.org/). 解压缩到一个drupal – x.x.tar文件,然后再解压。

    把这个目录包括的这些文件移动到网站服务器文件的根目录下面或者是你的公开的HTML目录下面:

    mv drupal-x.x/* drupal-x.x/.htaccess var/www/html

    如果你想把默认的英语接口翻译到不同的语言,我们这里有好消息。你可以在刚开始用其他的语言安装和使用Drupal.打开这个页面http://drupal.org/project/translations and download the package,选取一个被释放的你需要的语言包,看是否可以使用在这个Drupal版本上 .内容解压缩到与drupal相同的解压目录下。

    [评论] 我已经装上用了,感觉很多地方都比5的版本要好,有一些很炫的效果,不过就是汉化比较麻烦,需要一个模块一个模块地导入。

    创建数据库

    drupal需要进入一个数据库,以便进行安装。您的数据库用户将需要足够的特权来运行drupal 。如需有关特权,并指示建立一个数据库,使用命令行可在安装。

    要创建一个数据库使用phpmyadmin或基于Web的控制面板谘询文件,或要求您的网页主机服务提供商。
    注意该用户名,密码,数据库名称和主机当您建立数据库。你将进入这些项目在安装脚本。

    用MySQL创建数据库
    这一步是不仅是必要的如果你不已经有一个数据库的设立(如您的主机) 。在下面的例子, ‘用户名’就是一个例子MySQL用户,其中有创造和给予特权。使用适当的使用者名称为您的系统。
    首先,您必须创建一个新数据库,为您的drupal网站在这里, ‘ databasename ‘的名称是新的数据库) :
    mysqladmin -u username -p create databasename
    MySQL中会提示为’ UserName ‘的资料库密码,然后创建初始数据库文件。接下来,您必须登录,并设置Access数据库的权利:
    mysql -u username -p

    再次,您会被要求为’ UserName ‘的数据库密码。在MySQL的提示符下,输入以下命令:
    GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON databasename.* TO ‘username’@’localhost’ IDENTIFIED BY ‘password’;
    where
    ‘ databasename ‘的名称是您的database’username @localhost’的使用者名称是你的MySQL account’password ‘是需要密码为用户名
    笔记:
    除非您的数据库用户的所有特权,在上面列出,您将无法运行drupal 。
    如果成功的话,将MySQL的答复:

    Query OK, 0 rows affected
    以启用新的权限,输入以下命令:
    FLUSH PRIVILEGES;
    该数据库应建立与UTF-8( Unicode的)编码。
    用PostgreSQL创建数据库
    数据库必须建立与-8 ( Unicode的)编码。
    1 。创建数据库用户

    这一步是不仅是必要的如果你不已经有一个用户设置(例如,通过您的主机)或您要创建新用户使用drupal只。下面的命令

    createuser –pwprompt –encrypted –no-adduser
    –no-createdb username
    如果一切运作正常,您会看到一个
    “CREATE USER” 的通知。
    2 。创建drupal数据库
    这一步是不仅是必要的如果你不已经有一个数据库安装程序(如您的主机)或您要创建新数据库使用drupal只。下面的命令创建一个新的数据库名为“ databasename ” ,这是国有由以前创建的“用户名” :

    createdb –encoding=UNICODE –owner=username databasename
    如果一切运作正常,您会看到一个“CREATE DATABASE” 的通知。

    在配置文件中设定写入权限

    在sites/default目录下drupal具有default.settings.php文件。安装程序将在相同的目录下创建一个此文件的复制文件,并且包括你在安装过程中提供的细节内容。 用命令通过sites/default 目录给Web服务器写入特权(从安装目录) :

    chmod o+w sites/default

    注意:

    对Windows系统,这样将改变权限,并确定该文件是否设定为只读。

    安装Drupal 6.x

    drupal拥有自动安装脚本会自动填充数据库表,并列出了正确的设定settings.php文件。

    尽管我们认识到,有一些图形工具也可以做这些事情,可是我们没有帐户不可能看到整个文件。基于这样的情况,这本手册包括基本方法。一些操作,如下载和移动您的档案复制到您的主机目录和具体的鼠标点击设立您的数据库,通过图形界面更好地涵盖与您的主机或工具文档。

    我们知道,很多人跳过前几章,跳过这一节,如果您遇到困难关于术语或者规则的混淆,你就会考虑到返回去重新看前面的章节是最好的做法。

    文件系统

    在该文件的目录中创建初始安装是默认的文件系统路径用来存放所有上传的文件,以及一些临时文件所造成的drupal 。安装完成后,设置为文件系统路径可能会对其进行修改存储上传
    这是没有必要修改此路径,但您可能希望改变它,如果:
    1.您的网站运行多个drupal装置从一个单一的CODEBASE (修改文件系统路径的每一个安装到不同的目录,以便上传不重叠之间的装置) ;或,
    2.您的网站运行了一些Web服务器前端的背后负载平衡器或反向代理(修改文件系统路径在每台服务器上,以指向一个共享文件存放处) 。
    修改文件系统路径:
    1.确保新位置的路径存在或创建它,如果必要的。创建一个新的目录名为上载,例如,使用下面的命令从一个壳或系统提示(而在安装目录) :
    mkdir uploads
    2.确保新位置的路径是写在Web服务器进程。给予写权限的目录名为上传,您可能需要使用下面的命令从一个壳或系统提示(而在安装目录) :
    chmod o+w uploads
    3.访问文件系统路径设置在drupal选择这些菜单项从导航菜单:
    Administer > Site configuration > File system
    4.输入的路径到新的位置(如:上传)在文件系统路径提示。
    改变文件系统路径后的文件已上载可能会导致意想不到的问题就现有的网站。如果您修改文件系统路径对现有的网站,请记得先复制所有文件从原来的位置到新的位置。
    一些管理者建议,使文档文件,特别是changelog.txt ,非可读,以便确切版本drupal您正在运行的略多,很难确定。如果你想执行这项任择保安措施,请使用下列命令从一个壳或系统提示(而在安装目录) :
    chmod a-r CHANGELOG.txt
    注意的例子,不仅影响changelog.txt 。完全隐藏所有的文档文件从公众视野中,重复此命令的每一项drupal文档文件在安装目录,而代以的名称,每个文件changelog.txt在例子。

    多站点设置

    Create Drupal Site Configurations
    创建drupal站点的配置
    We need to create Drupal configurations for each site by copying the default configuration to the Drupal site subdirectory.
    我们需要为每个站点创建drupal配置,在drupal的 site 文件夹下复制默认的配置文件

    # cd /etc/drupal/6/sites/
    # cp -a default [site1.com]
    # cp -a default [site2.com]
    :
    :

    …and edit the configurations to use the right database, MySQL user name, and password…
    然后 编辑配置文件 使用相对应的数据库,mysql的用户名,密码

    # vi site1.com/dbconfig.php
    # vi site2.com/dbconfig.php
    :
    :

    Notes:

    * Modify the above items that are in [square brackets].
    修改在 方括号中 的内容。

    Run Drupal and Configure Your Sites
    Browse to your sites, running install.php (e.g.
    http://www.example.com/install.php) to configure them.
    安装drupal和配置
    在浏览器访问 install.php 配置

    Manual
    手册
    Get to location where Drupal core will be located:
    到站点的主文件夹

    [/]# cd /var/www

    Upload Drupal core:
    上传代码
    "x.x" should be replaced with the version of Drupal you’re installing, e.g. "5.2"
    "x.x"代表drupal的版本号,用具体的值代替。

    [/var/www]# wget http://ftp.osuosl.org/pub/drupal/files/projects/drupal-x.x.tar.gz

    Unpack Drupal core:
    解压

    [/var/www]# tar -zxvf drupal-5.2.tar.gz

    Move contents of Drupal core (including .htaccess) to html:
    移动drupal源文件(包括.htaccess)到html文件夹下

    [/var/www]# mv drupal-x.x/* drupal-x.x/.htaccess /var/www/html

    Clean-up:
    删除

    [/var/www]# rm drupal-x.x.tar.gz
    [/var/www]# rm drupal-5.2

    Create the files directory per Drupal instructions and change permissions (will change permission again after install):
    创建文件夹,更修权限

    [/var/www]# cd html
    [/var/www/html]# mkdir files
    [/var/www/html]# chmod 777 files

    Make directories that will hold custom and contributes modules and themes:
    为模块和主题,创建自定义和发布的文件夹

    [/var/www/html]# cd sites/all
    [/var/www/html/sites/all]# mkdir modules
    [/var/www/html/sites/all]# mkdir themes
    [/var/www/html/sites/all]# cd modules
    [/var/www/html/sites/all/modules]# mkdir custom
    [/var/www/html/sites/all/modules]# mkdir contrib
    [/var/www/html/sites/all/modules]# cd ../
    [/var/www/html/sites/all]# cd themes
    [/var/www/html/sites/all/themes]# mkdir custom
    [/var/www/html/sites/all/themes]# mkdir contrib

    Create directory "www.mydomain.tld":
    创建 站点文件夹

    [/var/www/html/sites/all/themes]# cd ../
    [/var/www/html/sites/all]# cd ../
    [/var/www/html/sites]# mkdir
    www.mydomain.com

    Change permission of "settings.php" per Drupal instructions and copy "settings.php" in default to www.mydomain.tld:
    每一个drupal的安装,都 要 更改 settings.php的权限,复制默认的settings.php

    [/var/www/html/sites]# cd default
    [/var/www/html/sites/default]# chmod 777 settings.php
    [/var/www/html/sites/default]# cd ../
    [/var/www/html/sites]# cp -a default
    www.mydomain.tld

    Create database and user with permissions:
    为每个站点创建数据库

    [/var/www/html/sites]# mysql
    mysql> CREATE DATABASE wwwmydomaintld_drupal;
    mysql> GRANT ALL PRIVILEGES ON wwwmydomaintld_drupal.* TO ‘wwwmydomaintld_myusername’@'localhost’ IDENTIFIED BY ‘mypassword’;
    mysql> \q

    Go back to PuTTY to chmod on settings.php in www.mydomain.tld:
    回到putty并改回settings.php的权限

    [/var/www/html/sites]# cd www.mydomain.tld
    [/var/www/html/sites/www.mydomain.tld]# chmod 755 settings.php
    [/var/www/html/sites/www.mydomain.tld]# logout

    Create Site Databases

    The easiest way to create databases for your sites is to use dpkg-reconfigure and answer the questions.

    # dpkg-reconfigure drupal6

    * Re-install database for drupal6? [YES]
    * Database type to be used by drupal6: [mysql]
    * Connection method for MySQL database of drupal6: [unix socket]
    * Name of your database’s administrative user: [root]
    * Password of your database’s administrative user: [enter mysql root password]
    * username for drupal6: [ENTER YOUR DB SITE *USERNAME* HERE (e.g. mysite)]
    * database name for drupal6: [ENTER YOUR DB *SITE* NAME HERE (e.g. mysite)]

    创建站点数据库
    为你的站点创建数据库,最简单的方法是用 dpkg-reconfigure命令并回答以下问题.

    省略中……

    Notes:

    1. Repeat the above for each site you want to support.
    2. I used the same name for the database and the site. KISS.
    3. Don’t use periods (e.g. mysite.com is a bad choice). If you want to spell out the whole name, use underscores instead of periods (e.g. mysite_com).
    4. The above method ends up using the same site database password for all the sites you create. Advice: use mysql-admin (or mysql) to use different passwords for each site.

    注意:
    1 重复上面(指 创建站点数据库)为你想要的每一个站点。
    2 站点和数据库名称一致
    3 不要使用periods(比如 mysite.com是一个坏选择)。如果你真想用全名,用下划线代替periods(比如 mysite_com). //这里可能指数据库名。
    4 以上方法都失效,如果你所有的网站数据库都用相同的密码。建议:用mysql-admin 为每个站点使用不同的密码。

    Configure Apache2 for Sites
    Apache2 needs to be configured to support vhost access to your new sites.
    Create vhost site configuration files in /etc/apache2/sites-available/
    配置apache2
    apache2 需要配置来支持虚拟主机 连接你的新站点。
    将创建虚拟主机的配置文件 放在/etc/apache2/sites-available/

    #
    # Virtual hosting configuration for Drupal
    #
    <VirtualHost *:80>
    ServerAdmin [your email address]
    DocumentRoot /usr/share/drupal6/
    ServerName [your vhost#1 name]
    ServerAlias [if you want to support
    www.example.com and example.com]
    RewriteEngine On
    RewriteOptions inherit
    </VirtualHost>
    <VirtualHost *:80>
    ServerAdmin [your email address]
    DocumentRoot /usr/share/drupal6/
    ServerName [your vhost#2 name]
    ServerAlias [if you want to support
    www.example1.com and example1.com]
    RewriteEngine On
    RewriteOptions inherit
    </VirtualHost>
    [...repeat for all your vhosts]

    Notes:

    * Modify the above items that are in [square brackets].
    * You likely will want to support port 443 (https) as well. See Apache documentation for detailed instructions.
    * I’ve chosen to put all the vhosts in one file named drupal. You may want to use one file per vhost.
    注意:
    1 修改在 方括号[ ] 中 的内容
    2 如果要支持443端口(https),参考apache的文档。
    3 我把所有的虚拟主机放在一个文件中,名为drupal.你也可以为不同的虚拟主机创建不同的文件

    Sym-link the drupal file in the sites-enabled directory to enable it in your site:

    # cd /etc/apache2/sites-enabled
    # ln -s ../sites-available/drupal .

    …and reload Apache2 to pick up your configuration changes…

    # /etc/init.d/apache2 reload

    为文件 drupal 创建符号链接 到sites-enabled文件夹,使你的站点可用。重启apache2

    Instructions on multi-site configuration (also known as "multisite" and "single code base" installations) can be found within the installation instructions.

    Here are some useful links:

    多站点的配置(包括“多站点”和“基于单一代码”)操作指南可以在安装指南中找到。以下一些有帮助的链接:
    * Search results
    * 4.6 Multi-Site from single code base
    * Multi-Site .htaccess configuration
    * multi-site, single installation, shared db, single sign on. is this possible?
    * Automatic Multi-site registration
    * Using Multi-Site
    * Multihosting Off Single Codebase
    * Multisite and symlinks doesn’t work
    * Sharing tables between installations

    10 Minute Multisite Install & Configuration
    10分钟多站点的安装和配置

    Multisite 10 minute Install:

    * Server: LAMP
    * SSH (telnet) Client: ssh (PuTTY if you are using Windows to access your LAMP host)
    * Must have root access to your server.

    10分钟安装多站点:
    1 服务器环境:LAMP
    2 SSH(远程连接)客户端:ssh(windows 用 PUTTY 连接)
    3 有root权限

    If website in question is an addon domain, i.e., addon.mydomain.tld, then substitute "addon" for "www" in steps below.

    For list of Linux commands visit: http://www.oreillynet.com/linux/cmd/ or http://www.ss64.com/bash/

    如果站点是 附加域,即 addom.mydomain.tld 形式,那么子站点域名附加在"www"后。
    LINUX的命行参看http://www.oreillynet.com/linux/cmd/ 或
    http://www.ss64.com/bash/

    Here we go:
    开始:
    [login via ssh / PuTTY]
    用ssh/putty远程登录

    LINUX系统为:Debian (Ubuntu)
    Installation
    Assumption: apache2 and mysql are already installed. If not, use apt-get install to install and configure them.
    安装
    假设:apache2,mysql已经安装。(如果没有,上网搜吧)

    # apt-get install drupal6

    该命令是安装drupal6
    Answer the questions. This will install everything necessary to run drupal and do the basic configuration, including creating an empty database for drupal.
    回答以下问题。以下将安装运行drupal所有必要的文件,进行基本的配置 ,并创建一个空数据库。

    * Configure database for drupal6 with dbconfig-common? [YES] 是否配置drupal6的数据库
    * Database type to be used by drupal6: [mysql] 选择数据库
    * Password of your database’s administrative user: [enter mysql root password] MYSQL数据库密码
    * MySQL application password for drupal6: [create a password for your drupal6 db] 为DRUPAL数据库设密码
    * (enter the password again for verification) 确认密码

    You now have a basic unconfigured Drupal6 installation using the database drupal6 and accessible at http://www.example.com/drupal6. Do not use it. This is the "prototype" installation that we will use to create the sites we really want to use.
    你现在有一个基本的未配置的drupal6安装程序,使用数据库drupal6,可用http://www.example.com/drupal6进行安装。但先不使用。这是一个安装原型,我们要用它来创建我们要用的站点。

    What next?:

    * Make changes to "settings.php" in www.mydomain.tld? I’ve read that it’s not necessary to make changes to setting.php.
    * Make changes to "httpd.conf" in /usr/local/apache/conf?

    I’ve been using WHM to create accounts, putting Drupal in public_html and having no problems. But when it comes to parting from the WHM abstraction and getting multisite set-up correctly this is the end of the proverbial road for me.

    接下来干什么?
    1 需要改www.mydomain.tld的"settings.php"?我所知道的没有必要改setting.php.
    2 需要改httpd.conf?

    我用WHM来创建账号,把drupal放在public_html,没有问题。(后面不清楚,可能指出问题)

    安装新模块

    安装Drupal之后,你可以选择安装额外的扩展模块来改变或者扩展Drupal的原有功能。

    简单来说,安装新模块的过程无非就是下载,解压,上载到相应的Drupal模块目录,需要时运行MySQL脚本,最后在“管理/模块”中开启新模块。

    1. 下载新模块。确定你下载的模块版本与你的Drupal版本相符。请注意CVS版本的模块一般都是开发中的不稳定版本,安装使用时要特别注意。通常CVS版本的模块只能在CVS版本的Drupal下运行,它们可能还处在草稿阶段并可能有频繁的改动。
    2. 解压缩。刚下载来的文件一般都是压缩格式,比如tar.gz。在Windows下,可以使用WinZip等解压缩软件解压。在Mac下,可以使用Stuffit Expander解压。如果在Unix下,需要使用下面的命令行解压:
      tar -zxvf modulename-4.5.tar.gz
      完成后你将看到很多文件被解压到一个目录下。
    3. 上载。文件解压之后,可以通过FTP上载到你的服务器,将整个模块文件目录放到Drupal安装目录下的 modules 文件夹下。
    4. 阅读说明文件。一般说明文件叫做INSTALL.txt或README.txt或类似的名字,用Notepad或其它编辑器打开后仔细阅读,看看有什么特别需要注意的地方。
    5. 数据库操作。有些模块需要更新数据库。一般这种模块都会包含有.mysql或.pgsql后缀的文件。如果您需要更新数据库,参见第6步,否则请直接看第7步。
    6. 更新数据库。如果该模块必须更新数据库,你将需要你的Drupal数据库中添加对应的表单。下面以MySQL为例说明如何添加:
      1. 使用phpMyAdmin(这部分直接翻译自英文,可能没有什么价值,哪位比较熟悉的可以写一个中文版phpMyAdmin的介绍,放到这里)
        • 如果你有phpMyAdmin,登入并选择你的drupal数据库。如果你有phpMyAdmin但不知如何使用,请联系你的服务器供应商。
        • 点击SQL栏
        • 你应该看到一个标有’Run SQL query/queries on database’字样的文本框。在它下面会有‘Or Location of the textfiel’的字样,点击‘浏览(browse),找到你要安装的模块的.mysql文件。点击’开始(go)’。除非模块说明文件中有特别说明,一般来说这样就可以了。
      2. 使用Unix命令行:
        • 运行如下命令:mysql -u username -ppassword database_name < modulename.mysql
        • 上面的username是你的MySQL用户名,password是你的MySQL密码(注意保留前面的-p),database_name是你的Drupal使用的数据库名,modulename.mysql是你要新安装的模块自带的SQL文件。上面的信息一般来说都可以在你的Drupal的sites/default或sites/sitedomain.com文件夹下settings.php文件中找到。
    7. 启用模块。对大多数模块来说,只要开启它们就可以了。要开启模块,需要到管理/模块(administer/modules)里面,勾选你想要开启的模块,并保存就可以了。
    8. 设置权限。有些模块要求你正确的设置权限或其它设定才能正常工作。相关的权限设定信息应该可以在模块说明文件中找到。如果没有,可以试试下面的方法:
      1. 点击 管理/访问控制(administer/accesscontrol)。看看新安装的模块是不是列在其中,如果是,把该模块的权限赋予适当的角色即可。
      2. 点击 管理/设置(administer/settings)。看看新安装的模块是不是列在其中,如果是,点击该模块名字就可以进行相关设定。
    9. 报告问题。如果还是有问题,到相关论坛搜索一下或发帖询问一下。

    注意:为了及时得到特定模块的最新信息,你可以到drupal.org注册一个账号,并订阅相关的模块消息

    注意:在一个Drupal安装中,相同名字的模块只能有一个。

    安装新主题

    在安装Drupal并开始使用之后,你多半会开始计划更改站点的外观到你想要的样子。

    在Drupal总站的下载页面,可以找到一些现成的外观主题。

    安装新主题的过程很简单:

    1. 下载新的主题。请注意您所下载的外观主题版本必须与你安装的drupal版本号相符,否则将不能正常工作。比如4.4版本的主题不能用于drupal4.5,反过来也不行。
    2. 阅读主题附带的README或INSTALL文件,看看有没有什么特别需要的步骤。
    3. 检查一下你是否安装了对应的主题引擎(theme engine)。主题引擎文件可以在 themes/engines 文件夹中找到。(译注:drupal4.6缺省使用xTemplate引擎,而4.7开始缺省使用phpTemplate引擎。)
    4. 上载新的主题文件到themes目录下的一个新文件夹,比如 themes/box_grey。
    5. 点击 管理>>主题(administer >> themes),并开启新安装的主题。(主题文件上载后,Drupal会自动检测到该主题。)
    6. 编辑您的用户设置,选用新安装的主题。如果您想使这个新主题成为所有用户的默认主题,可以在主题管理页面选中“缺省(default)”选项。

    注意:您可以在这里预览不同主题的效果。那里展示的主题,有些可以从drupal.org直接下载,有些只是个范例而不能下在。

    发表评论

    Drupal的版本号说明

    我该使用哪个版本的Drupal?
    一般建议您使用最新的稳定版本,DrupalChina都会在首页醒目位置标志这些稳定版本的链接。您也可以
    直接到drupal.org查看。在某些特定情况下,比如某些您必需的模块还没有升级的时候,或者您的站点工作正常而您又没有足够的时间与资源来升级的话,继续使用旧版本也是个不错的选择。但是新版本推出时,常会弥补一些安全漏洞,您至少应该把这些安全补丁更新。

    现在Drupal的最新的正式版本是5.1,下一个主要升级版本6.0正在开发中,并不适合作为正式站点使用。Drupal4.7.6是4.7系列中的最新版,4.7系列也还在维护中,但大多数新功能都不会再加入4.7版,如果您现在开始计划新的站点,应该直接考虑使用5.1正式版。

    如何查看我的站点是哪个版本?
    有以下几个办法:

    • 查看drupal安装目录下的CHANGELOG.txt 。不过这个方法有时候不一定可靠。
    • 查看drupal/modules目录下的system.module,最上面有一行:

      <?php
        define(’VERSION’, ‘4.7.4′);
      ?>

      这个就是版本号

    • Drupal5.x之后版本可以在admin/logs/status 下面察看版本号

    如何解读Drupal版本号?
    在4.7.x系列之前,4.7.x中的的前两个数字4.7代表Drupal的版本号,最后一个数字x代表这个版本下的第几次补丁发布,主要用于修正 bug。这样带来的一个问题就是经常使大家误以为4.7只是4.6的一个小升级版本,其实4.7与4.6有非常大的不同;另一个常见的问题是4.7之后该是4.8还是5.0呢,经常给大家带来混淆。

    所以从5.x开始,Drupal采用了新的版本号,其中“5”代表主要的版本升级,后面的.x代表这个版本下的第x次补丁更新。也就是说 5.0,5.1,5.2等等都是基于同样的5.0结构,所有5.x的模块都是兼容的。而下一个主要版本将是6.x,6.x的模块将不能在5.x系统中使用,反过来也一样。

    扩展模块的版本号又该如何解释?
    2006年11月1日之后,drupal.org启用了新的项目管理模块,其中一个主要的变化就是扩展模块与主题的版本号采用了下面的新格式:

    Drupal主要版本-模块主要版本.补丁更新号[-其它说明]

    1)Drupal主要版本:这是必须的,比如4.7.3或者5.x等,表示该模块适用的Drupal主要版本号。4.7.x表示该模块适用于Drupal4.7系列,5.x表示该模块适用于5.x系列。
    2)模块主要版本:用于标示该模块的主要版本分支,例如1.0,2.1等
    3)不定更新号:用于标示这是该模块版本分支的第几次bug更新,第一次模块主要版本发布是0,下一次补丁更新就是1,以此类推。如果这个数字是x,则表示这是正在开发中的版本(参见下面第4条说明)
    4)其它说明:这是一个可选项,用来一些特殊标示,比如-dev表示这是开发中的版本,一般是由drupal.org每天自动发布的最新CVS版本,不建议用于证实站点。

    例如:
    * 4.7.x-1.0 表示这是适用于Drupal4.7.*的模块,这是该模块主要版本号1的首次发布(1.0)
    * 4.7.x-2.1 表示这是适用于Drupal4.7.*的模块,这是该模块主要版本号2下面的第一次不定更新(2.1)
    * 5.x-1.0-dev 表示这是适用于Drupal5.*的模块,这是该模块主要版本号1.0的最新开发中版本(-dev),

    什么是beta与RC版?
    在一个Drupal新版本(比如5.0)发布之前,通常会先发布一系列beta(测试版)与RC(release candidate的缩写,可以叫做试发版)。一般来说这些版本还不够稳定,不宜用在正式站点上,只是用来提供给更多用户测试使用,以帮助正式版的发布。

    • Beta releases (测试版)
      一般会先发布测试版(beta),也是最不稳定的版本。测试版发布期间,除了易用性改进之外不会再加入新的功能,翻译字符串也还没有最后确定,甚至API或者数据库结构也还可能改变。
    • Release candidate (试发版)
      只有在beta版中没有关键性的bug报告后才会发布RC版。RC版一般来说都比较稳定,RC版发布之后,不会再有任何新功能加入(包括易用性),而只会进行bug修正,同时翻译字符串也已经固定,不能再做改变以方便翻译者开始进行翻译。

    通常在beta版发布几个月之前,Drupal代码就会进入功能特性冻结(feature freeze);比如计划中的6.0冻结将在2007年6月1日,在此之后,6.0的基本功能改进都已确定,其它任何新的功能改进都将只能等到7.0才能加入。

    发表评论

    Drupal 宝典(较全但较旧)

    = Drupal 的功能特点 =

    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有以下功能特点:

    + 搜索引擎友好的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
    影集模块。
    - amazon associate tools
    Amazon广告工具。
    - 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界面进行数据库查询/修改/删除等功能。
    - 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创建/编辑内容或添加评论。
    - 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支持。
    - VIM Color
    支持VIM代码高亮(highlight),支持PHP, Perl, C, HTML, JAVA等多种语言。
    - voting
    投票/评级
    - webform
    创建‘网络表单’节点类型,可以用于提交调查问卷,投票,注册等。
    - wiki
    实现wiki功能。
    - workspace
    我的工作空间模块,提供一个用户专有的工作区,可以集中察看管理自己的文章。

    = Drupal 模块安装 =

    Drupal 已经自带了许多基本功能模块,在完成 Drupal 的安装后,开启这些模块就可以了。
    如果你需要功能扩展模块,则需要到
    http://drupal.org/project/Modules 下载并安装这些模块。
    步骤非常简单:
    + 下载模块包
    + 解压缩
    + 把模块文件上传到 Drupal 的 modules 目录中
    + 有些模块可能需要运行 mysql 文件创建表
    + 在“管理->模块"中开启这个模块

    = 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目录中
    + 通过"管理->主题"启用该主题风格,并将其设置为默认风格

    = Drupal 界面定制 =

    当 Drupal 站点安装好后,有许多方法对站点界面进行个性化的设置和定制:
    + 安装主题风格
    主题风格控制了站点的外观和感受,你可以在网上下载Drupal的主题风格,并在"管理->主题"中启用这些风格。
    + 创建你自己的主题风格
    如果你不想用别人预先做好的主题风格,而想为自己的站点打造一个完全不一样的外观,你可以通过开发自己的主题风格来达到这个目的。主题风格的开发人员应具备HTML/CSS知识,如果要开发复杂的主题,则需要懂得PHP。
    + 定制导航菜单
    页面顶部和底部的菜单可以在"管理->主题->配置->菜单设置"中进行定制,主链接和备用链接中可以直接编写HTML代码。如果主链接为空,Drupal将根据你安装的模块自动建立导航菜单。每个主题风格可以定义不同的导航菜单。
    如果是基于PHPTemplate引擎的主题风格,导航菜单的定义方式是为每个菜单进行定义。
    + 定制文字串
    可以通过"管理->本地化->管理字符串"来定制本地语言的文本字符串,Drupal中几乎所有的文本字符串都可以修改。

    = 主题风格中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插件是专门为网页开发人员提供的一把宝刀,功能太丰富了,你们就慢慢去体会吧。

    = 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文件,用于提供不同的布局风格。

    = 定制自己的首页 =

    在"管理->设置->通用设置->默认首页"里可以设置自己的首页,默认值是"node"。它仅仅显示一些被设置为“推荐到首页”的文章。
    + 假设你创建了一个新的节点,包含有非常多的链接和非常复杂的内容,想把这个节点设置为首页。首先找到这个节点的id,假设节点id是83,你只需要将默认首页设置为"node/83"就行了。
    + 假设你想将用户blog设置为首页,则须将默认首页设置为"blog"。
    + 假设你想把论坛设置为首页,则须将默认首页设置为"forum"。
    + ……

    == 创建一个新的PHPTemplate主题风格 ==

    + 在Drupal的themes目录下创建一个主题目录,例如mytheme。
    + 在自己的主题目录下创建一个 page.tpl.php 文件
    这是唯一的一个必需创建的文件,它重载了theme(’page’)函数,并输出整个页面的内容,包括额外的装饰、页头、页签、内容小块、侧栏、页脚等你所想在页面上显示的所有东西。
    + 你还可以创建其他文件重载其他函数
    - block.tpl.php:重载theme(’block’)函数:控制区块的风格
    - box.tpl.php:重载theme(’box’)函数:控制页面主区域的容器(盒子)的风格
    - comment.tpl.php:重载theme(’comment’)函数:控制评论的风格
    - node.tpl.php:重载theme(’node’)函数,控制节点的风格
    - PHPTemplate包含有这些模板文件的例子,可以将这些例子拷贝到theme/mytheme目录中进行修改

    == 为不同的节点类型定制不同的模板 ==

    假设你希望不同类型的节点具有不同的显示风格,只需要将"node.tpl.php"文件拷贝为"node-节点类型.tpl.php"文件,并对该文件进行定制。例如:
    + node-story.tpl.php:稿件风格
    + node-blog.tpl.php:Blog风格
    + node-forum.tpl.php:论坛风格
    + node-page.tpl.php:静态页面风格
    + node-weblink.tpl.php:网页导航的风格
    + node-image.tpl.php:像集的风格
    + ……

    = 开发者模块 =

    Drupal 提供了一个特殊的模块:Devel 模块。
    这个模块是为开发者和网站系统管理员提供的。该模块能在每个页面的末尾输出页面执行的所有数据库查询,并且提供每个数据库查询用掉的时间。该模块还提供了许多其它的好工具。
    这个模块可以从以下地址下载:
    http://drupal.org/project/devel

    = 编写自己的区块 =

    区块是显示在网页侧栏的小块内容。Drupal的许多模块都提供了模块内置的区块。可以通过“管理->板块”启用这些区块。
    通过“管理->板块->添加区块”还可以增加自己的区块。
    区块的编写有3种不同的方法:Filtered HTML、PHP code、Full HTML。
    其中HTML的区块比较容易写,就没有必要多说了。
    这里写一个PHP区块的例子:
    <?php
    global $user;
    if ($user->uid) {
    ?>
    <li><a href="?q=logout" title="">注销</a></li>
    <?php
    } else {
    ?>
    <li><a href="?q=user/login" title="">登录</a></li>
    <?php
    }
    ?>
    以上是一个PHP区块的例子,根据用户是否登录,显示注销/登录链接。需要注意的是,PHP代码要写在<?php和?>之间。

    = 论坛 =

    Drupal的forum模块提供论坛功能。
    在使用论坛模块时,应同时开启comment模块和taxonomy模块。comment模块为Drupal的节点提供讨论板功能,对论坛主题的回复就要用到该功能。taxonomy是智能分类模块,用于组织网站的内容,能自动对内容进行归类。
    comment和taxonomy是论坛正常运行所必需的两个模块。
    还可以配合其它模块来增强论坛的功能:
    + "管理->用户->配置"可以开启头像(图片)功能
    + 通过开启profile模块增强用户个人信息,可在"管理->设置->个人信息"中增加自定义内容
    + 通过使用privatemsg模块,用户间可以互相发短消息
    privatemsg是一个站内消息系统,可在这里下载:
    http://drupal.org/project/privatemsg
    privatemsg的中文包在这里下载:
    http://drupal.org/files/issues/privatemsg-zh-hans-4.6.0.tar.gz
    + 通过subscriptions模块或notify模块让用户接收E-mail通知
    + 通过bbcode模块提供BBCode支持。
    bbcode模块将提供一个工具条,能很方便地在帖子中插入bbcode。

    = 提供搜索引擎友好的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提供了search模块,用于对站内内容进行搜索。
    搜索引擎会自动为站内内容建立索引。在"管理->设置->搜索"能看到搜索状态。搜索引擎在建立索引时需要用到cron功能。

    == cron设置 ==

    cron用于定期执行一些工作,例如清除日志、建立索引等。
    Drupal已经把要定期执行的工作写在cron.php中了,并且在scripts目录下提供了一个cron-lynx.sh脚本,只需将其配置到crontab中就行了:
    # vi /etc/crontab
    在该文件中添加以下行:
    00 * * * * /var/www/localhost/htdocs/drupal/scripts/cron-lyns.sh

    == 让自己开发的模块具备搜索功能 ==

    如果要让自己开发的模块支持Drupal的搜索引擎,只需要实现search钩子就行了:
    hook_search($op=’search’,$keys=null)
    search钩子的文档见:
    http://drupaldocs.org/api/head/function/hook_search

    = 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

    = 网页布局:Page.tpl.php =

    Page.tpl.php是负责网页布局的模板,这个模板控制整个页面的主框架。
    在这个模板里,有以下变量可供使用:
    + head_title: 页面标题。
    用法举例:<head><title><?php print $head_title ?></title> …</head>
    + language: 站点所使用的语言。
    用法举例:<html lang="<?php print $language ?>" …>
    + site: 站点名称
    + head: drupal_get_html_head() 函数产生的HTML代码
    用法举例:<head><title>…</title><?php print $head ?></head>
    + onload_attribute: Onload tags to be added to the head tag, to allow for autoexecution of attached scripts.
    用法举例:<body <?php print theme("onload_attribute"); ?>>
    + directory: 主题所在的目录,例如:themes/spreadfirefox 或 themes/box_grey
    + logo: logo图片的路径。在“管理->主题->配置”中可以对这个变量的值进行设置
    用法举例:
    <?php if ($logo) : ?>
    <div id="site-name">
    <a href="<?php print
    url() ?>" title="Home"><img src="<?php print $logo
    ?>"/></a>
    </div>
    <?php endif; ?>
    + site_name: 用于header的站点名称, empty when display has been disabled.
    + site_slogan: 网站的口号, empty when display has been disabled.
    用法举例:
    <?php if ($site_slogan) : ?>
    <div
    id="site-slogan"><span><?php print($site_slogan)
    ?></span></div>
    <?php endif;?>
    + search_box: True(1) if the search box has been enabled.
    + search_url: URL the search form is submitted to.
    + search_button_text: 搜索按钮的文字
    + search_description: 搜索按钮的描述文字
    这四个变量的用法举例:
    <?php if ($search_box) { ?>
    <form action="<?php print $search_url; ?>" method="post" id="search">
    <div>
    <input
    class="form-text" type="text" size="15" value="" name="edit[keys]"
    id="keys" />
    <input
    class="form-submit" type="submit" id="submit" value="<?php print
    $search_button_text ?>" />
    </div>
    </form>
    <?php } ?>
    + title: 标题,different from head_title, as this is just the node title most of the time.
    用法举例:
    <?php if ($title != ""): ?>
    <h1 id="title"><?php print $title ?></h1>
    <?php endif; ?>
    + primary_links (array): An array containing the links as they have
    been defined in the phptemplate specific configuration block.
    + secondary_links (array): An array containing the links as they have
    been defined in the phptemplate specific configuration block.
    这两个变量的用法举例:
    <?php if ($primary_links) : ?>
    <ul id="primary">
    <?php foreach (array_reverse($primary_links) as $link): ?>
    <li><?php print $link; ?></li>
    <?php endforeach; ?>
    </ul>
    <?php elseif ($secondary_links) : ?>
    <ul id="secondary">
    <?php foreach (array_reverse($secondary_links) as $link): ?>
    <li><?php print $link; ?></li>
    <?php endforeach; ?>
    </ul>
    <?php endif; ?>
    + breadcrumb: 路径导航的HTML代码。
    用法举例:
    <?php if ($breadcrumb != ""): ?>
    <div id="breadcrumbs">
    <?php print
    $breadcrumb;?> <span class="breadcrumb">
    &raquo; <?php if ($title != ""): print ucwords($title);
    endif; ?></span>
    </div>
    <?php endif; ?>
    + tabs: 页签的HTML代码.
    用法举例:
    <?php if ($tabs != ""): ?>
    <?php print $tabs ?>
    <?php endif; ?>
    + messages: 状态或错误信息的HTML代码, 一般显示在页面的顶部.
    用法举例:
    <?php if ($messages != ""): ?>
    <div id="message"><?php print $messages ?></div>
    <?php endif; ?>
    + layout: This setting allows you to style different types of layout
    (’none’, ‘left’, ‘right’ or ‘both’) differently, depending on how many
    sidebars are enabled.
    + help: 动态帮助文本
    用法举例:
    <?php if ($help != ""): ?>
    <p id="help"><?php print $help ?></p>
    <?php endif; ?>
    + styles: Required for stylesheet switching to work. This prints out the style tags required.
    用法举例:<head>…<?php print $styles ?></head>
    + mission: 站点使命.
    + is_front: 当前显示的页面是否是网站首页
    + sidebar_left: 左侧栏的HTML代码。该HTML代码是由theme_blocks("left")产生的。
    + content: 内容的HTML代码
    + sidebar_right: 右侧栏的HTML代码。该HTML代码是由theme_blocks("right")产生的。
    这三个变量的用法举例:
    <?php if ($sidebar_left != ”) { ?>
    <div class="leftcolumn sidebar" id="sidebar-left">
    <div class="leftpadding">
    <?php print $sidebar_left; ?>
    </div>
    </div>
    <?php } ?>
    <?php if ($sidebar_right != ”) { ?>
    <div class="rightcolumn sidebar" id="sidebar-right">
    <div class="rightpadding">
    <?php print $sidebar_right; ?>
    </div>
    </div>
    <?php } ?>
    <div class="centercolumn">
    <div class="centerpadding">
    <?php print($content) ?>
    </div>
    </div>
    + footer_message: 显示在页面底部的信息,在"管理->设置->通用设置->底部信息"中可以对该变量的值进行设置。
    + closure: Needs to be displayed at the bottom of the page, for any
    dynamic javascript that needs to be called once the page has already
    been displayed.
    这两个变量的用法举例:
    <div id="footer" class="footer">
    <?php if ($footer_message) : ?>
    <p><?php print $footer_message;?></p>
    <?php endif; ?>
    <?php print $closure;?>
    </div>
    + node: 这个变量是什么意思呢?

    == page.tpl.php设计建议 ==

    目前比较好的网页设计模式是DIV+CSS模式,为了方便布局,建议采用以下方法设计模板:
    + 将整个页面的内容放入到一个id为wrapper的DIV中
    + 在wrapper中包含三个DIV,其class分别为header、columns、footer
    header和footer用于显示页面的头部信息和尾部信息,columns显示页面的内容。
    + columns中包含三个DIV,其class分别为leftcolumn、rightcolumn、centercolumn
    leftcolumn和rightcolumn是左右侧栏,分别用于显示左右侧栏的各区块。centercolumn用于显示节点的内容。
    页面的总体架构如下:
    <div id="wrapper">
    <div class="header" id="header">

    </div>
    <div class="columns">
    <div class="leftcolumn sidebar" id="sidebar-left">

    </div>
    <div class="rightcolumn sidebar" id="sidebar-right">

    </div>
    <div class="centercolunmn">

    </div>
    </div>
    <div id="footer" class="footer">

    </div>
    </div>
    CSS对布局的控制如下:
    div {margin: 0px;}
    .header {margin: 0px;}
    .columns {margin: 0px;}
    .leftcolumn {float: left; margin: 0; width: 150px;} /*其宽度应等于centercolumn的margin-left*/
    .rightcolumn {float: right; margin: 0px; width:160px;} /*其宽度应等于centercolumn的margin-right*/
    .centercolumn {margin-right: 160px; margin-left:150px;}
    .footer {margin: 0px;}

    = node.tpl.php =

    该模板用户控制node的显示。
    在该模板内可以使用以下变量:
    + $title : node的标题
    + $node_url : Link to node.
    + $terms : HTML for taxonomy terms.
    + $name : Formatted name of author.
    + $date : Formatted creation date.
    + $sticky : 该node是否在主页上置顶
    + $picture : HTML for user picture, if enabled.
    + $content : 该node的内容, teaser if it is a summary.
    + $links : 该node的相关操作或链接
    + $taxonomy (array) : array of taxonomy terms.
    + $node (object) : The node object.
    + $main : True if the node is appearing in a context, like the front page, where only the teaser should be shown.
    + $page : True if the node is being displayed by itself as a page.
    + $submitted : Translated text, if the node info display is enabled for this node type.
    布局
    + 为整个node建立一个class为"node"的DIV中,对于置顶的node,其class为"node sticky"
    <div class="node<?php print ($sticky) ? " sticky" : ""; ?>">…</div>
    + node的内容放在class为"content"的DIV中。
    <div class="content"><?php print $content ?></div>
    + node的相关链接放在一个class为"links"的DIV中
    <?php if ($links): ?><div class="links"><?php print $links ?></div><?php endif; ?>

    发表评论

    Drupal使用经验谈(2)

    看过那么多脚本和框架,接触drupal后使我眼前一亮。这个获得CMS大奖的东东,实用性相当高。Drupal可以被用来建立一个Internet门户;一个个人的,部门的,或者公司的网站;一个电子商务站点;一个资源分类站点;一个在线报纸;一个图库;一个内部网,这里仅提到了一部分。它甚至可被用来教授一个远程学习课程。一个专注于安全方面的小组,通过对威胁的反应和发行安全更新来保证Drupal的安全性。还有一个繁荣的社区组织,包括用户,站点管理员,设计者,和web开发者,非常努力的工作着,以持久的改进软件。

    此外,drupal本身实现内核的代码就用了很多不错的技术。目前对于我来说只是一个学习怎么使用的肤浅阶段,只是在建设一个扩展性很强的站点时,一位牛人给我推荐用这个,我对他的眼光是深信不疑的。我想08年不用学习别的了,就这一个drupal的使用,技巧,代码研究足够让我享用的了。还好有大仙给我发来一份又一份的文档,才能使我越来越熟悉这个系统。很多应用上的实现,没有看内核的代码,很难想象是怎么实现的,不过也不急于一时,迟早会对他了如指掌的。

    截止现在,终于从头到尾看完了那本456页(24章节)的《Drupal Development》,一个星期看下来相当艰难啊,专业术语太多,对我这种E文菜鸟是有点困难了。不过对整个drupal系统的认识确实不一样了,从各个子系统到安全、效率都有新的认识。

    看这本书的简介就相当不错:Learn how to use the content management framework to create powerful customized
    web sites!此外,又复习了一遍CVS的使用,看了jQuery的文档和YUI的文档,可谓收获颇丰啊,再也不怕Javascript相关的开发了。

    中文资料也有一份,不过翻译有好多错别字,要一边看一边修改,程序的规范以及图片的截取都好多错误,看完英文的,中文的也改完了,还顺手汉化了2个Drupal模块,过几天审核下贡献到drupal社区,咱也要为open source做贡献啊。

    明天一天的时间,先应用下jQuery写点东西,然后再仔细看看drupal的主题系统。以前经常去的drupal china站点,看到他们写的文档,真是相当垃圾,我要有时间写得肯定比他们好。台湾drupal站点的文档能稍微好点,但术语和大陆区别太大,什么模组、导向、物件,头晕ing。

    最近在疯狂翻译drupal的模块,汉化工作相当疲惫啊。工欲善其事,必先利其器。
    sudo apt-get install poedit
    windows下也有这个工具。用extractor工具先导出模块的po文件,默认名为general.pot,用poedit来编辑。翻译完后输入模块信息保存即可。

    目前已经翻译的模块有cck/fckeditor/fivestar/flag_content/panels/userpoints/views,最近这两天在审查,没问题的话打算贡献出去,和大家共享。

    接下来就是处理站点中的一个问题,添加一种新的内容类型,并且放置在手册中,其大纲位置就在当前手册之下。问题就产生了:book模块本身只能编辑时候手动选择大纲,保存后才能将这个节点数据直接insert到book表中。其parentid父节点就是当前节点nid。为了解决这个问题,我将当前节点id 保存在临时变量中,用drupal自带的varible_set方法写入,用varible_get读取出来。在nodeapi的hook中,当op为 insert的时候插入这条数据。最后在link hook加入链接,问题解决。

    虽然问题已经解决,但是这个办法更改了book的outline部分,其设计部分不可取。只是暂时解决问题。这是初次看完drupal文档做出的办法,我想过段时间,更熟悉这个框架的时候会有更好的解决方法。
    另外,恶补了几天css。能简单的修改下模板,狼组的兄弟们都应该很怕css,没办法啊,一个人兼多个角色,系统管理,模块开发,还要干美工的事情。无所谓了,有收获就是好事。

    今天在搜索一个问题的时候竟然搜到自己以前的删除的一篇博客日志,在红联Linux上。还好注明了作者是本人,不像××网站,拿狼组的文章出去,说是自己写的,逼T亮出自己的毕业设计才罢休。。。

    为了修改book模块的大纲部分代码,加入了drupalchina一个Q群,进去后提问没有得到好的答案,没办法,只能靠自己。毕竟现在群里面大都是装高手的人,没几个能解决实际问题。比起我们的wolvez差远了。。。给的全都是蜻蜓点水的答案,说跟没说一样,在群里PK一大堆人后,郁郁得退出了。

    要解决的问题如下:{
    在book模块中,有大纲(outline)管理功能,在“手册父页面”下拉框中列出了所有的手册。
    当book页面比较多的时候这个下拉框会变很长,所以我想在这里做个调整,方便使用。
    想法如下:分成两个select
    第一个列出所有的第一级book,当选择这个select框后,再在第二个select框中选择第一级下面的东西,这样就方便多了。也就是做一个联动select的东西。}

    看了两遍book模块,刚好1000行代码,差不多常用的hook函数都有了。因为本人只关心大纲部分的代码,所以看了几个主要的实现函数。book_toc和book_toc_recurse。

    book_toc 函数从数据库中读取出所有的book数据,将node表和book表内连接,将结果数组整合到一起,键为父节点ID,值为节点对象。然后对数组进行处理,递归对数组值进行层次缩进。两个好处:一次性读出所有数据组合为可处理数组,提高效率;处理空间较大。这个递归写得还不错,定制比较好,对以后的多维数组处理是个比较好的参考。大部分代码都看明白了,但是要结合整个drupal系统对book模块做修改,总是找不到合适的办法。为了满足drupal系统的要求,不能直接修改东西啊。继续看看吧。。。。

    同时,希望能结识做drupal开发的朋友,互相交流,提供点帮助。

    发表评论

    Drupal特性概述

    一般特性

    • 共同写作(Collaborative Book):Drupal独特的共同写作特性让你能够设立一个内容项目或称之为“手册(book)”以供创作,同时你也可授权其他用户共同参与写作。
    • 简洁友好的网址(Friendly URLs):基于Apache的mod_rewrite功能,Drupal允许你自定义网址,这可以令网址对于用户和搜索引擎都显得简洁友好。
    • 模块(Modules):通过各种模块,你可以轻松扩展Drupal以获得更为丰富的功能。Drupal社区已经开发了许多模块,它们能为你提供诸如分类显示、jabber认证、私密消息、书签等多种功能。
    • 在线文档帮助(Online help):就像许多开源项目,我们不能说我们的在线文档完美无缺,但我们已经建立了相对健全的在线文档帮助系统,提供精髓的帮助。
    • 开放源代码(Open source):作为开源项目,Drupal的源代码通用公共许可证(GPL)提供,是自由且公开的。不同于版权私有的Blog程序或内容管理系统,Drupal的特性设置完全可以按照你的需要扩展延伸和自由定制。
    • 个性化(Personalization):基于Drupal的核心部分可以为你提供完善的个性化环境。不论内容还是显示方式都可以通过用户自定义的参数选择实现充分的个性化。
    • 基于角色的权限系统(Role based permission system):Drupal的管理员不必辛苦的为每一个用户单独设置权限,而是给不同的角色分配所需的权限,再将用户加入到相应的角色组中。
    • 搜索(Searching):Drupal里的所有内容都可以被建立索引和搜索。

    用户管理

    • 用户认证(User authentication):用户可以在本地注册并认证,或使用外部的认证源(诸如Jabber、Blogger、LiveJournal或其它的Drupal站点)进行认证。若在企业内部网络使用,Drupal还可以与LDAP服务器整合。

    内容管理

    • 投票(Polls):使用内建的poll模块,Drupal能够让管理员或用户创建投票,并可设定在任意的页面显示。
    • 主题模板(Templating):Drupal的主题系统将内容和显示方式分离开来,这样可以更好地控制网站的外观风格。主题模板是基于标准的HTML和PHP代码构建的,这意味着你无需学习另外的专有模板语言。
    • 线性评论(Threaded comments):Drupal提供了一个强大的线性评论模块,使用户可以对内容发表评论。评论是分等级且有层次的,就像新闻组或论坛那样。
    • 版本控制(Version control):Drupal的版本控制系统能跟踪内容更新的详细情况,包括更改人、更改内容、更改日期及时间等。版本控制特性还提供了可选的评论记录功能,同时允许你将内容恢复到早期的版本。

    博客

    • 支持Blogger API(Blogger API support):Blogger API允许你使用许多不同的工具来更新你的Drupal站点。这包括非基于网页浏览器的工具软件(如Zoundry、BlogJet),它们可以提供更丰富强大的编辑环境。
    • 内容整合(Content syndication):Drupal可以将站点的内容作为RDF/RSS格式输出。这样任何人就可以在他们的桌面上舒适的使用新闻聚合软件(如FeedDemon)浏览你的站点内容。
    • 新闻聚合器(News aggregator):Drupal内建了功能强大的新闻聚合器,它可以读取并记录其它网站的新闻咨询。新闻聚合器将文章缓存在你的数据库中,而管理员可以设定这个缓存的时间。
    • 永久链接(Permalinks):在Drupal创建的所有内容都有一个永久链接,用户可以通过它直接访问而不必担心因动态链接损坏而无法访问内容。

    平台

    • 支持Apache/IIS,Unix/Linux/BSD/Solaris/Windows/Mac OS X:Drupal从设计一开始就是面向多平台的。你不仅可以在Apache或IIS上使用,还可以在Linux、BSD、Solaris、Windows、Mac OS X等多种平台上运行Drupal。
    • 数据库独立(Database independence):很多用户使用MySQL作为Drupal运行的数据库,但我们知道MySQL不是适合所有人的解决方案。Drupal建立在数据库抽象层的顶层,这意味着你可以使用MySQL或PostgreSQL。其它的SQL数据库也可以被Drupal支持,你需要编写一个包含14组功能的数据库后端并创建一个匹配的SQL数据库架构。
    • 多语言(Multi-language):Drupal设计符合全球使用者需求,提供了完整的框架用以创建多语言的网站、博客、内容管理系统和社群应用。通过导入现有的翻译资料,或通过与其它的翻译软件整合(例如GNU gettext),所有的文字都可以在一个图形用户界面被翻译。

    管理分析

    • 分析、跟踪和统计(Analysis, Tracking and Statistics):Drupal可以生成基于浏览器的报告,提供有关站点的referrals、热门内容、用户浏览方式等信息。
    • 日志和报告(Logging and Reporting):所有重要的行为和系统事件都会被捕获并记录在一个事件日志中,管理员可以在事后查看。
    • 基于浏览器管理(Web based administration):Drupal可以完全通过浏览器管理,你可以在全世界任何能够连接上互联网的地方管理你的站点,这不需要在电脑上额外安装任何软件。

    社群特性

    • 论坛(Discussion forums):Drupal内建了完整的论坛模块,可用以创建活跃的、动态的社群站点。

    性能和可伸缩性

    • 缓存(Caching):缓存机制可以减少对数据库的查询,减轻服务器的负荷,从而提高站点的运行效能。当站点负荷量大时,你还可以对缓存实时调整。开启缓存机制的站点不仅成功的通过了“slashdotting”测试,而且表现得相当出色!

    发表评论

    Drupal 术语

    Drupal 是一个基于网站的内容管理系统(CMS)。文字和关于其它类型内容的连接都存放在数据库中,通过响应浏览器发出的请求,进行动态的存取、编辑,并呈现给用户。

    Drupal 里的内容是独立的“节点”(node)。对于“新闻”(story)类型的节点,用户可以对其进行评论(评论本身并不视为节点)。根据网站设置,可以启用或禁用建立新节点和/或发表评论的功能。此外,节点或评论(comment)也可以设置为需要经由审核通过才可以公开发表。Blog 文章是另一种 Drupal 节点类型。

    Drupal 默认的布局(主题, theme)由三列组成。中间列一般是内容,通常是用来显示按发表时间排列的节点的摘要。如果你点某一节点的摘要(译注:一般是节点标题),就会在中间列显示该节点的完整内容。

    左侧和右侧的列是“边栏”(sidebar)。边栏可以显示相关信息的“区块”(block)。区块通常包含通往其它节点的链接。举例来说,会有显示最新发表的新闻的区块、或是最热门新闻的区块。对于新安装的系统来说,会有一个用户登录区块,以及一个包含了目前可执行的操作的导航菜单。根据你的操作和所拥有的权限(“角色”, role),会在导航区块里显示不同的菜单项。

    此外,根据你的操作和所拥有的权限,会显示或不显示某些区块。举例来说,如果你已经登录系统了,就不会显示用户登录区块;如果没有任何新闻类型的内容节点,就不会显示“最近新闻”区块。管理员可以在管理->区块菜单里启用/禁用不同的区块。

    节点可以按分类(category,或称taxonomy)进行组织。论坛就是一种用分类来进行组织的内容节点。分类可以是层次性的,父分类可包含多个子分类。

    Drupal的新功能通常都是通过模块(module)的方式来导入。当管理员在 modules 目录下新增了一个模块文件时,使用该模块的选项就会出现在管理->模块菜单中。如果管理员启用了该模块,该模块相应的功能就可以使用了。模块可以定义新的节点类型,导航区块里可能会出现新的选单,或是在边栏里出现新的区块。

    在手册和论坛中,许多关键词和术语有其特定的含义,了解他们,将有助于你使用 Drupal,并且当您在论坛问问题时,能够更有效地进行沟通。

    节点类型

    Drupal所有内容都以节点(node)方式存放。Drupal的基本节点类型很少,但是很灵活。

    Blog文章 (Blog Entry)

    Blog(或web log)是一种网上笔记或日志。社群的成员可以通过blog来自由记录自己的想法,而不必过分担心自己的文章是否符合站点的主题。

    手册页面 (Book Page)

    手册页面可用来组成一个协同写作的手册(比如您现在正在看的drupal手册)。在早期版本里只有专门的手册页面才可以作为手册的一部分,现在任何类型的节点都可以加入到手册中,从而使得手册的组织更灵活。

    评论 (comment)

    评论实际上不是节点,而是自己特殊的内容类型,可以允许用户针对任何节点添加评论。

    论坛 (Forum)

    论坛是多个节点及其评论的集合。这些节点及评论被组织在一起并分配给一个讨论版面,每一个版面同时就是一个分类项(taxonomy term)。多个版面又可以再组织成一个讨论区(forum container),每一个讨论区也是一个分类项,在分类结构中都属于一个叫做论坛(forums)的分类。

    页面 (Page)

    页面是一种简单的节点,通常用于静态内容的发布,并连接到(当然并非必须)导航条。

    投票 (Poll)

    一个投票通常是一个多项选择问题,用户可以参与投票回答问题并察看投票结果。

    新闻 (Story)

    新闻页面是大多数内容管理系统都有的通用的页面类型。新闻页面通常用于发布具有时效性的内容。

    除了以上列出的之外,很多扩展模块还会提供额外的内容类型供使用。

    注意:一个常见的问题就是,新闻(story)和页面(page)类型到底有什么不同?答案是,差别不大。在早期版本中差别比较明显,但现在只不过有不同的名字,完全看你怎么设置使用它们了。

    Drupal使用了特定的词条来表示特定的意义。下面是一些Drupal专用术语的介绍:

    区块 (Block)

    当你浏览drupal页面时,左右边栏通常有一些导航条或提供一些额外信息的栏目,这些就是区块。在drupal4.6里,区块的的摆放是通过外观主题(theme)来控制的;在drupal4.7里,则可以通过管理/设置(admin/settings)来更加灵活地摆放。区块本身不是节点 (node),而只是在页面中展示内容的一种方式。区块的外观显示可以在外观主体中控制,通过定义 block($subject, $content, $region="main") 来实现。更多信息可参见区块设置与管理手册页面。

    外观主题引擎 (Theme Engine)

    外观主题引擎是一套解释节本,可以把网站的动态内容输出为html,从而帮助你更方便地设计网站的外观。Drupal提供了3种主题引擎供你使用,当然你也可以不通过引擎而直接设计外观主题。4.6及之前的drupal版本,缺省使用xTemplate引擎,4.7之后缺省使用 phpTemplate引擎。可以到drupal.org的主题引擎下载页面察看并下载。

    过滤器 (Filter)

    用于内容过滤。一般用于特指输入法过滤(input filter),比如bbcode filter就是把bbcode语法输入转换为html标签,这样用户就可以通过bbcode格式来输入格式化内容。

    模块 (Module)

    模块实际上是一套代码,用于扩展drupal来满足特定的功能需要。核心模块指那些drupal下载安装后自带的模块。扩展模块,是其它那些由drupal使用者贡献的模块,可以在drupal总站的模块下载页面找到。请注意你所下载安装的模块版本,一定要与你的drupal版本相符,这样才能正常使用。

    节点 (Node)

    几乎所有的drupal内容都保存为一个节点。当大家讲一个节点时,其实也就是指drupal里的一段内容,比如一篇文章,一个投票或者一个手册页面等。

    权限 (Permissions)

    权限用于控制用户是否可以新建内容,修改内容以及管理网站。管理员(administrators)可以分配不同的权限给不同的角色 (roles),然后指定给用户不同的角色。Drupal网站的第一个用户(uid=1)将自动拥有所有的权限,不管之后该用户被分配给了什么角色。

    角色 (Roles)

    一个角色实际上就是一套特定的权限设定,以进一步分配给用户使用。用户可以同时拥有多个角色,并将拥有不同角色的所有权限。Drupal安装后会自动生成两个角色,已认证的用户(authenticated user)和匿名用户(anonymous user),管理员可以进一步更改这两个角色的权限,也可以再建立新的角色。

    样式 (Style)

    样式指的是一个或多个用于改变缺省外观显示的CSS文件。

    分类 (Taxonomy)

    Taxonomy字面上的意思是分类学。Drupal用这个词来描述其分类系统。用户可以通过分类来分门别类的管理展示站点内容。在Drupal里,taxonomy通常是指包含了多个分类的集合。更多有关分类系统的介绍,请参看这里

    模板 (Template)

    一个模板就是一个可用于生成html的文件,其中大部分为html代码,另外还包括一些特殊的代码,用于代入外观引擎(theme engine)提供的特殊数据。

    外观主题 (Theme)

    一个外观主题由一个或多个文件(包括php,theme,css,jpg,gif,png等)组成,它们共同决定了你的站点的外观。这些文件通常为 drupal的外观主题引擎(theme engine)所调用,从而把不同的参数转化为html标记。Drupal模块还定义了可定制的外观函数,可以通过在theme文件里重定义这些外观函数来方便的控制你的站点外观。另外在总站还提供更多的主题下载

     

    原文:http://blog.chinaunix.net/u1/35127/showart_407158.html

    发表评论

    Drupal使用经验谈(1)

    国外的cms用过了几个,以前用Joomla!帮客户做过几个站,感觉方便,容易上手,module也很多,不过很少去看代码,毕竟是为了完成客户的需要,现在公司里面主要是做drupal,才开始研究它的代码,有人把drupal比作是一个操作系统,而module相当于应用软件一样,你需要什么功能,都可以通过module来完成,在drupal在二次开发上,程序员不需要去改动drupal的核心代码,完全可以通过hook来完成,任何你想动态修改的地方,都有相应的hook来完成。

    比如你想修改某一个form表单的数据(找到相应函数的名称,一般为module_name_form 命名,),我们可以通过 module_name_alter和他们module_name_xx名称的函数来对表单数据修改.我们添加数据类型表,可以交给cck module来完成,对数据字段的类型定义,而在提交的时候,cck都会帮我们完成.

    对我们用户来说,更多的是关心页面的展示,drupal默认只有page,book,story,我们可以填加类型数据,但对默认页面展示出来的效果,真的是很糟糕,但有view module来帮我们重新定义样式或者是css,drupal数据层和表现层,并没有完全的分离,虽然很多地方我们都可以通过定义template来完成,但很多时候,我们也需要用到模板目录下的template.php文件来帮我们完成.

    drupal的模板,确实是个难点,很难上手,template文件很少,drupal允许我们自己定义自己熟悉的模板引擎,在数据库操作方面,也方便了很多,我们不需要写出详细的sql语句,而是告诉drupal要查询的表,和查询的条件就可以,sql语句它会帮我们做好,在我们升级drupal的时候,我们只需要升级drupal的核心文件就可以,而不需要对module做相应的升级(除非有特殊说明)优点很多,我不能一一说明,很多东西我也刚接触,也不是很了解,drupal的module很多,而且官方把这些常用的module做了整理,并加详细的说明,

    缺点:

    门槛太多,很多人用了一个月还是摸不着头脑, 默认的homepage真的是难看而且简单

    对于数据量大的站来说,node表成了一个瓶劲(至少我是这样认为,因为每加一条记录,node表里面都有相应的信息)

    原文:http://www.chinaz.com/Webbiz/Exp/0224233Z2008.html

    发表评论

    Drupal基本架构

    主题(Theme)


    主题是什么呢? 其实这个词已经被用的很泛了, 所有涉及外观定制的地方都充斥着这个词, 比如我们最常见到的windows桌面主题, QQ的界面皮肤等. 说白了主题就是外观, 可定制主题就是允许用户自定义应用的外观.
    Drupal的外观也是由其主题(Theme)来表现的, 一个CMS只有强大的业务逻辑处理和扩展能力, 而没有好的外表, 一样会流失大量的用户. 所幸Drupal的外观表现机制同样十分强大, 它允许网站开发人员为其网站重新设计开发个性化主题, 同时Drupal社区还有大量共享的主题, 下载下来后, 解压到站点对应的主题目录(sites/all/themes,或sites/指定站点/themes)下即完成安装, 在管理界面直接热插拔应用主题, 非常方便.

    主题机制(Theme System)

    为了支持这么灵活,方便又强大的可插拔主题, Drupal有一整套设计实现, 我们叫它主题机制(Theme System), 它被设计用来分离界面元素(比如HTML, CSS等)与核心业务逻辑. 通过这种分离, 有效的减少界面元素对核心代码的影响, 从而能使核心代码尽快稳定; 同时更换新的界面也不需要去动复杂的业务逻辑, 便于分配给专业的界面设计人员去开发, 从而降低用户界面这种需求易变性模块的开发复杂性和依赖性. 下面我们就到Drupal的主题机制内部去探索一番.

    Drupal的主题机制(Theme System)有由三大部分组成: 主题(Themes), 主题引擎(Theme Engines)和主题api(includes/theme.inc).

    主题(Themes)主要包含一组文件, 系统可以利用这些文件能展示对应的外观, 以获得不同的用户感受。一个主题主要由以下内容组成:模板文件, 样式表(CSS), 图像(images), Javascript文件等; 对于一个web设计者来说, 样式表什么的应该都比较熟悉, 但模板文件是什么呢? 模板就是一个HTML片断模子, 我们可以用它来生成有具体含义的HTML片断. 举个例子, 就好像一张空的贺卡, 你填上"xx生日快乐"就成了生日贺卡, 你写上"情人节一起happy吧"那就成了节日祝福贺卡. 因为一般人都比较聪明, 所以空的贺卡大家也知道哪该写姓名, 哪该写祝福语; 万一碰到个比较傻的要写怎么办, 于是聪明人可以先用铅笔在该写的作些提示标记, 这样傻子虽然不聪明但在有提示的地方把原来的铅笔标记替换成他自己的话还是能做到的. OK, 这个带有铅笔标记的贺卡我们就可以称之为一张贺卡模板.

    Drupal的主题模板文件也是同样道理, 它是一种带有标记(Tags)的HTML模板, 系统能够识别标记, 并根据标记进行内容替换, 生成实际的HTML页面. 那我靠什么识别标记? 当然就是看标记所用的语言了. 话说如果是美国傻子, 那我们就用英语写标记, 日本傻子则用日语. 回到Drupal世界, 写它的模板文件中标记的语言我们称之为模板语言(Template Language), Drupal6.x目前支持三种模板语言: php(默认), smarty, Xtemplate; 光有语言还不行, 还要有傻子的大脑来能识别这些语言啊, 那么系统中对应解释这些语言的工具就是主题引擎(Theme Engine).

    Drupal默认的主题引擎是phptemplate, 它使用PHP语言, 直接内签在Drupal中, 不存在任何外部依赖. 下面看一个phptemplate的模板例子:

    <?php
    // $Id: block.tpl.php,v 1.3 2007/08/07 08:39:36 goba Exp $
    ?>;
    <div id="block- <?php print $block->module .’-’. $block->delta; ?>;" class="clear-block block block- <?php print $block->module ?>">
    <?php if (!empty($block->subject)): ?>;
      <h2> <?php print $block->subject ?> </h2>
    <?php endif;?>;
      <div class="content"> <?php print $block->content ?> </div>
    </div>

    因为phptemplate引擎使用的模板语言是PHP, 则里面php代码部分都是标记, 如果我们传入blcok变量{0,xx区块,xx区块内容}, 则经过主题机制(Theme system)处理后,上面这段模板代码将生成如下HTML片断:

    <div id="block-book-0" class="clear-block block-book">
      <h2>xx区块 </h2>
      <div class="content">xx区块的内容 </div>
    </div>

    主题api

    主题api提供的强大机制使得分离出去的主题层能有机地和核心协同工作, 完成内容的表现. 该机制又是通过钩子(hooks)技术实现的, 看来hooks不仅仅用于模块(Module)与核心的交互, 它被应用到所有需要与核心交互的场景. 与普通的业务逻辑类的钩子不同, 主题钩子(theme hooks)具备以下的特性:
    主题钩子是按显示组件(components)来定义的, 即一个显示组件定义一个钩子名;
    主题钩子不仅能靠注册函数实现, 还能靠模板形式实现, 通过模板文件名的命名规约, 能实现与函数钩子类似的效果

    主题钩子不仅是只能在模块中实现, 而且在表现层的主题和主题引擎都能实现; 这里注意了, 前面我们只说了主题中的模板文件, 这些文件是无法实现钩子函数, 而表现层中的钩子函数在哪里实现呢? 对了, 在主题目录下的template.php文件中实现.

    主题钩子必须有默认实现, 要么在模块中实现, 即模块默认实现, 要么直接使用主题api中的theme_HOOK(), 它定义了核心默认的显示组件的外观.

    主题钩子是纵向的, 是覆盖式的, 也就是说只有最上层的能起作用, 底下的都被屏蔽了, 这种钩子实现是不是更像函数重载呢

    上面这张图是从drupal.org网站下载的, 它清楚地描述了主题机制的核心架构. 整个网页由几部分组成, 它们的不同颜色代表从不同钩子输出, 其中a点输出代表默认主题实现(核心和模块的默认钩子实现, 对应两种青灰的颜色); b点是主题引擎的钩子重载点, 主题引擎钩子实现的输出为褐色; c点则是主题的钩子重载点, 它的钩子输出为红色, 这三层的输出最终形成了给终端用户的网页.

    主题钩子的注册是在模块的hook_theme()中实现的(一个业务钩子), 而主题钩子有两种形式: 回调函数和模板文件, 但主题层钩子形式必须与业务逻辑层(Core和Module)的形式保持一直, 下面我们分开进行阐述(下面的描述都基于PHPTemplate引擎):

    (1)模板文件形式

    模板文件允许你仅用css和的修改预定义的模板即可变换站点的外观, 非常简介和直接, 是我们自定义外观的主要方式. 常用的模板文件主要有以下几个:page.tpl.php; node.tpl.php; block.tpl.php; comment.tpl.php; box.tpl.php;
    page.tpl.php
    该模板描述一个HTML页面的主要元素, 包括, 和 元素, 它非常复杂, 大概能使用30多个Tag变量
    node.tpl.php
    该模板负责node内容的显示, 它的Tag变量都与node的属性相关, 而page.tpl.php的$content变量实际就代表它
    block.tpl.php
    该模板负责block的显示, 它有一个变量$block
    box.tpl.php
    该模板负责画一个简单的盒子, 原来好像被用作搜索结果和form, 但这个版本已经很少被使用了, 它与block有什么关系我到目前还没搞清楚
    comment.tpl.php
    该模板负责comment的显示, 其他没啥好说的
    当处理页面显示请求时, 区块的内容, 节点的内容, 评论的内容等等都会先被放到区域(Region)中, 然后通过page.tpl.php中的区域变量$content, $header, $left, $right, and $footer等拼接成实际页面. 所以为了减少显示数据的生成, 可以禁用区域内的block而不是仅仅修改page模板.
    前面说了, 模块也可以注册模板钩子, 主题也可以注册模板钩子, 那到底哪一个钩子生效呢? 这是由主题机制的调度函数分发的. 下图描述了几种关键模板的查顺序, 它们完全依赖模板名字的特殊命名约定来实现, 如果文件名相同, 则优先选择上层的模板.
    更详细的关于模板文件内的Tag变量, 可以参考《Pro_Drupal_Development》和Drupal.org.


    (2)回调函数形式

    回调函数形式是一种用coding来处理自定义界面的方式, 说白了就是表现层没剥离完全的那部分, 留了一个后门, 以便处理更特殊的显示需求. 主题和主题引擎的钩子函数都在template.php文件中实现, 它们的命名规范是mytheme_hook()和themeengine_hook(). 尽管采用回调函数, 比模板方式提高5倍的速度, 但我们在定制外观的时候, 还是建议优先考虑定制模板钩子. 如果确实没有模板可用, 也尽量在主题引擎层实现函数钩子, 这样子主题也可以共享该函数钩子.

    最后, 整个上面的流程, 不论是模板还是回调函数, 全部都是靠主题api中的theme()函数来实现的, 该函数堪称Drupal主题机制的中场发动机.

    编后语:

    我花了三天时间来看主题, 每多看一次都会对自己的否定几次, 确实太复杂, 而且Drupal6主题变化很大, 每天都不停的修改这篇文章, 真的以为这篇文章发不出来了, 但是为了给我的学习进程做个见证, 在我还没有完全理解它之前, 还是post出来了, 虽然不是很系统, 但它阐明我目前对主题机制的理解, 希望大家的指正.

    原文:http://topic.csdn.net/u/20090514/08/41199072-9804-48ba-bff5-aeda08cc5d97.html

    发表评论

    Drupal安装说明

    第一步,准备工作
    首先请下载Drupal的程序包,可以到http://down.zzbaike.com/download/drupal-244.html下载最新版。如果服务器支持解压缩的,可以直接将压缩包传到服务器,如果服务器不支持解压缩的先在本地解压,然后所有文件上传到网站目录。Cpanel面板的服务器一般支持解压缩,具体操作请参考:http://kb.idcspy.com/CPanel

    第二步:修改目录权限。
    因为安装的时候需要写入配置文件,需要将sites/default目录的权限修改为777(如果是windows服务器不需要此操作).一般可以通过FTP,控制面板,SSH等方式修改。

    第三步:建立数据库
    有些主机的数据库是主机商建好的,需要向主机商索取数据库服务器,名称,用户名,密码等信息。大部分主机的数据库需要自己建立,一般在主机控制面板中就可以建立新的数据库。如果不会建立请咨询主机商,cpanel的面板可以参考:http://kb.idcspy.com/CPanel

    第四步:开始安装。
    通过浏览器访问drupal所在目录,开始安装,安装过程如下,每一步都在图上做了中文注释。

    clip_image003

     

    clip_image005

     

    上面填写的是数据库的基本信息,默认的数据库地址是localhost,如果你的数据库和网站不在同一个服务器或者需要指定表前缀,点击Advances Options填写更加详细的信息,在下图中做了注释。如果不需要直接进入下一步即可。

    clip_image006

     

    clip_image008

     

    clip_image009

     

    clip_image010

     

    clip_image011

     

    clip_image013

     

    本文由站长百科www.zzbaike.com)原创,转载请保留本信息。

    发表评论

    Drupal简介

     

    Drupal资源:
    1.Drupal中国区官方网站:http://drupalchina.org/forum
    2.TemplateMonster中国区官方网站:http://china.templatemonster.com
    3.Druapl中国 青岛分会:http://drupaluser.cn/joincda
    4.中国drupal协会创始人网站:www.5iphp.com
    5.Drupal用户联盟-Drupal用户的网上家园,点滴记录Drupal历程! http://www.drupaluser.org
    6.Drupal慧衡 http://www.intematrix.cn/web-development/drupal
    7.OnlyDrupal中文资讯站 http://www.clickstorm.cn
    8.Drupal正体中文支援站 http://drupaltaiwan.org/
    9.Drupal建站网 http://drupalsh.cn/
    10.Hollo Drupal  http://hellodrupal.info/
    11IBM开源资源 .http://www.ibm.com/developerworks/cn/web/i-osource6/

     

    Drupal简介

    是一个开源的内容管理系统(CMS)平台,用于构造提供多种功能和服务的动态网站,这些功能包括用户管理(User Administration)、发布工作流(Publishing Workflow)、讨论、新闻聚合(News Aggregation)、元数据(Metadata)操作和用于内容共享的XML发布。它综合了强大并可自由配置的功能,能支持从个人博客 (Personal Weblog)到大型社区驱动(Community-Driven)的网站等各种不同应用的网站项目。

    它有以下优点

    + 搜索引擎友好的URL

    + Drupal有一个优秀的模块化结构,提供了许多模块,包括短消息、个性化书签、网站管理、Blog、日记、电子商务、电子出版、留言簿、Job、网上电影院、论坛、投票等模块。Drupal模块的下载、安装、定制非常方便

    + Drupal提供了强大的个性化环境,每个用户可以网站内容和表现形式进行个性化设置

    + Drupal提供了基于角色的权限系统,没有必要对每个用户进行授权,只需要对角色进行授权

    + Drupal提供的站内搜索系统能对站内的所有内容进行索引和搜索

    + Drupal的模板系统将内容和表现分离,可以很方便地控制网站的外观

    + Drupal提供内建的新闻聚合工具

    + 提供完善的站点管理和分析工具

    + Drupal的Caching机制能有效减少数据库查询次数,从而提高站点性能,降低服务器负荷

    +强大的多语言支持体系。能够支持很多国家的语言,让你的网站在世界上通行。

    Drupal运行环境:

    Drupal 基于PHP脚本语言,推荐使用mysql数据库,所以要运行Drupal必须先安装好PHP支持程序,推荐apache + mysql + php的安装和配置环境。linux系统下推荐采用lamp安装套件或windows系统下推荐安装wamp套件。

    Drupal的安装:

    1.运行环境:

    1.建立数据库:用mysql命令行、phpmyadmin、mysql-front等工具新建一个数据库,并记住数据库的名称。

    2.将Drupal代码根目录放入apache的web服务目录(www或htdocs等),通过http协议在浏览器运行Drupal的对应http 服务,例如http://mydomain/drupal,再出现的页面中按提示填入数据库的名称,用户,密码等信息。

    3.首次执行,可以设置相应的个性化参数,如帐户,首页,简介链接等。

    4.注:第一个注册的帐户拥有系统的最高权限。

    Drupal的设计TemplateMonster的Drupal模板

    目前比较好的将设计与Drupal结合起来比较有名的是TemplateMonster的Drupal模板。精美的设计,高度的开发弹性,短缩了的开发设计时间,使Drupal模板更加受到欢迎。TemplateMonster作为这一领域的佼佼者,今后肯定会发布更多Drupal模板。

    届时中国的用户也可以通过TemplateMonster中国区官方网站TemplateMonster China(http://china.templatemonster.com)下载到最新的加入精美设计的Drupal模板。

    如何加入中国drupal协会

    中国drupal协会是2008年11月15日由drupal活动的组织者chinajason等人创建的,协会的主旨就是为了在中国推广drupal。

    中国drupal协会成立的相关事宜以及会章等请参考:http://drupalchina.org/node/5740

    中国drupal协会的青岛分会官方地址是:

    http://drupaluser.cn/joncda

    Drupal主要术语的介绍

    文章地址:http://www.drupaluser.org/node/364

    Drupal是一个非常优秀的PHP CMS,在使用Drupal之前,我们好好看看Drupal主要术语的介绍.Drupal术语,Block(区块),Box(盒子),Engine(引擎),Filter(过滤器),Module(模块),Node(节点),Permissions(权限),Style(样式)Taxonomy(分类)Template(模板),Theme(主题)风格

    # 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构建内部交流站点及社区网站。部分基于Drupal的应用包括:

    跨国公司-联邦快递、诺基亚、Adobe、Sun

    国际著名娱乐公司-华纳兄弟、索尼/BMG、Fox、环球唱片、迪斯尼/ABC

    互联网媒体网-Google、Novell、雅虎

    新闻杂志-福布斯、The Fast Company、Now Public、花花公子(德国)、The Onion,以及纽约观察报等。

    网上社区-Team Sugar、FireFox

    高等学府-哈佛大学、MIT

    政府机构-法国政府、纽约市长Mike Bloomberg、联合国

    最近奥巴马政府的经济恢复网站也采用Drupal搭建

    这些成功的合作案例证明,Drupal不但适合个人站点及网上社区类网站,而且已被国际著名大公司和组织机构所接受和采纳。相信在国内,Drupal也会很快流行起来,成为主流网站设计和开发平台。

    Drupal 简史
    *10年前,Dries 参与 Linux WLAN 项目,开发了一个 Dorp 系统用于在网络上协调工作。
    *将该项目转向 drop.org, 并更名为 Drupal.
    *人们提供了很多建议,因此 Dries 将该项目开源。
    *2001年1月15日,Drupal 1.0.0 发布。
    *一些重要的 Geek 站点,如 kerneltrap.org 放弃 PHPN*uke,转用 Drupal.
    *第一届 DrupalCon 开发者大会在安特卫普召开,只有大约25人参加。
    *Robert Douglas 写了第一本 Drupal 书。
    *2007年开始 drupal.org 站点的改进。
    *新版
    http://drupal.org 即将推出,包含 AJAX 搜索,拖放式控制台,定制 Tab 等功能。
    *http://drupal.com 多年来一直是 Drupal 的入口站点,Development Seed 创建了一个销售站点。
    *商标费用上升,希望通过广告消化。
    *2005年 Drupal 服务器坏掉
    *需要一个新服务器,在 Drupal 站点放了一个捐款账户,48小时募捐到10000美元。
    *SUN 提供免费的服务器和服务。
    *Portland 的 OScon 展会上,Drupal 协会成立。
    *Drupal 4 在易用性上有了显著改善。
    *Drupal 5 加入自动安装工具
    *布鲁塞尔的 DrupalCon 2007 开发者大会有150人参加,Sunnyvale 有300人参加,DrupalCon 波士顿有900人参加。
    *今天的 DrupalCom 有1400人参加。
    *Drupal 的下载量,贡献量,drupal.org 点击率逐年翻番。
    *Pop 文化中 Drupal,一些幻灯片播放。
    *人人皆可参与,Drupal 就像 Internet。

    Drupal 的现状与 Drupal 7 的改进
    *2008年2月,Drupal 6 一发布,Drupal 7 的开发就开始了。
    *2009年9月1日,Drupal 7 的编码工作将正式结束,等待 7.0 的发布。
    *具体发布时间要看各种问题的解决情况。
    *可用性将是 Drupal 7 的最大改进
    *提供两种安装模式:最简和标准安装,标准安装包含最常用模块和示例数据。
    *可用性团队自去年就开始一系列测试。
    *更好的文件 API 支持更好的媒体,文档处理。
    *Fields API 取代 CCK 以及 Profile 模块,转换工作还未开始。
    *现场提问:头像, 分类, 投票以及节点这些功能是否应提供给用户?
    *字段存储模型还在开发中。
    *代码测试在紧张进行,已经写了10000个测试用例,覆盖了超过78%的代码,全部通过。
    *数据库抽象层现在支持更新功能,SQLite 及测试。
    *Web 未来的畅想
    *Internet 将成为一台巨大的机器: Web 应用及云计算。
    *开发步骤:链接机器,页面,数据,以及现实世界。
    Drupal 是一场运动,它的使命是什么?
    *短期使命: 可用性,优秀的开发平台。
    *长期使命: 提升未来的 Web

    发表评论