功能强大的Blog 系统:Drupal
把drupal叫做Blog系统是低估了它的功能,实际上它已经是一个功能强大的CMS了,在功能设计上它仿照了phpnuke,xoops等的模块化方式,界面上仿照了blog模式。这个程序以极少的代码实现了非常强大的功能。很多人用“神奇”两个字来形容它,它是一个完全开放源代码的程序,所以吸引了众多PHP爱好者的目光,很多PHP高手参与了它的开发行列中来了,开发速度非常块,几乎两个月出一个新版本,modules和skins也越来越多。从官方站点有时上千人的在线情况就可以看出它的受欢迎程度。
下面是有关Drupal的中文化问题,大部分是收集自Drupal中文化项目。感谢hiweed为drupal的中文化做出的贡献。
Drupal 安装指南:
0. 准备服务器环境。
先把 WWW 服务器、database 服务器和 PHP 调试好。
推荐使用 Apache/Mysql 组合,虽然 Drupal 可以使用其它数据库。
1. 下载 Drupal。
从 Drupal.org 下载了最新版本的 Drupal 压缩包后,解开压缩。
2. 修改配置文件。
修改 drupal/includes/conf.php ,把其中的数据库、首页地址和语言修改一下。
## 修改数据库配置:
$db_url = "mysql://数据库用户名:密码@数据库服务器地址/数据库名";
(等会建立一个数据库,比如名字叫做 drupal_database。)
## 修改首页地址:
$base_url = "http://www.hiweed.com/drupal";
(注意后面不要斜线)
## 修改语言:
把 $languages = array("en" => "english"); 直接修改成:
$languages = array("zh_CN" => "Chinese");
3. 创建数据库。
用自己的 Mysql 用户创建一个数据库,比如数据库名叫做 drupal_database。
4. 修改 SQL 文件,创建数据表。
## 修改 drupal/database/database.mysql ,找到 “CREATE TABLE locales” 所在的段,把其它语言全删除即可,只写上一行:
zh_CN blob NOT NULL,
## 然后,导入该 SQL 文件:
在命令行中,输入: mysql drupal_database < database.mysql
5. 访问您的 drupal 首页,创建第一个用户(站长)。
6. 开始享用。
Drupal 中文化指南
1. 安装 Drupal。
首先请查看Drupal安装指南。
另外,请注意一定要参照 Drupal 的 INSTALL 文件把 php.ini 的相关参数设好。
2. 导入Drupal 中文化文件 zh_CN.sql:
请先备份您 Drupal 数据库的 locales 表;
清空您 Drupal 数据库的 locales 表;
然后把zh_CN.sql 文件导入到数据库。
3. 如果您希望使用 localgettext 模块导入 mo 文件,安装 locale 模块:在“administer --> configuration --> modules”中,安装 locale 模块。然后导入模块导入 mo 文件。
4. 如果您想自己编辑 po 文件以便于自己编译 mo 文件。
5. 刷新一下页面,您应该可以看到中文界面了。
如果仍是英文界面,请检查:includes/conf.php 文件中,是否把 "zh_CN" => "Chinese" 写在了英文的前面?
6. 开始享用!
让drupal可以注册中文用户名
modules/user.module 这个文件里面,第 205 行是:
if (ereg("[^ a-zA-Z0-9@_.-]", $name)) return t("The username contains an illegal character.");
只要把这一行注释掉即可。但这样可能无法过滤一些特殊的字符,严格的做法是修改里面的正则表达式,使得既允许汉字通过,又防止乱七八糟的符号出现。
中文搜索问题解决办法
1. 把 search 模块修改一下。
drupal中不能搜索中文的原因是因为drupal不能判断中文的词语,所以中文字联在一起的时候就会看成是一个词,导致不能搜索。
解决的方法就是在搜索的词汇前后默认加上*号,让drupal搜索“含有”搜索汉字的词语,这样就可以了。
具体方法:
在search.modules里查找:
$keys = str_replace("*", "%", $keys);
把它变成
$keys = '%'.str_replace("*", "%", $keys).'%';
就可以了。
2. 修改各个模块的 do_search 函数
用下面的内容替代modules里的对应内容:
node.module:
$find = do_search(array("keys" => $keys, "type" => "node", "select" => "SELECT n.nid AS lno, n.title AS title, n.created AS created, u.uid AS uid, u.name AS name, 1 AS count FROM node n LEFT JOIN users u ON n.uid = u.uid WHERE ( n.title LIKE BINARY '%' OR n.teaser LIKE BINARY '%' OR n.body LIKE BINARY '%') AND n.status = 1"));
comment.module:
$find = do_search(array("keys" => $keys, "type" => "comment", "select" => "SELECT c.cid as lno, c.nid as nid, c.subject as title, c.timestamp AS created, u.uid AS uid, u.name AS name, 1 AS count FROM comments c LEFT JOIN users u ON c.uid = u.uid WHERE (c.comment LIKE BINARY '%') AND c.status = 0;"));
magic_quotes_gpc 错误解决办法
很多主机 PHP.ini 里的 magic_quotes_gpc 是关着的,magic_quotes_gpc的作用是在提交的表单中如果存在敏感符号如双引号、单引号、反斜杠,那么这些符号之前会被自动的加上一个反斜杠号,最笨也是最直接的办法是释掉index.php文件的“check_php_setting”这一行,但这样可能会出现安全问题,详细可以参考 http://www.phpe.net/articles/372.shtml
在windows下面无法使用diff文件
很多module里是diff文件,是linux特有的补丁格式,你可以在 Linux 下面把补丁打好,再拷贝到 Windows 中去,当然有时间的话可以自己分析diff文件,一行一行改。前面带“—”的是要删除的行,前面带“+”的是要添加的行。