Drupal

关于Drupal的安装、使用、问题、修改等的讨论。也是目前唯一的Drupal中文交流论坛。

Blog工具比较(续):Drupal的反击

[img_assist|fid=132|thumb=1|alt=Drupal广告画]

昨天提到了那篇九十多页的关于比较评论,今天发现Drupal总站的新闻中也在讨论这篇评论。昨天我翻看那篇长篇累牍的评论的时候,只是匆匆读了他的综述部分,感觉它对Drupal的评价还不错,并没有看到结尾。可是有人认真读完了整篇评论,发现了这篇评论的结束在评分的时候有不公正之嫌。譬如不支持Plugin,不支持Aggregation,不支持审批,几乎没有文档的Silkblogs居然得分比Drupal还多,并且评论的作者在以下几个方面给Drupal打了了零分:

  • 简单的多Blog支持
  • 自动Blog登录
  • 存档
  • Blog聚合(Aggregation)

这个显然是不符合实际的,于是Drupal的“激进”用户者便撰文申辩,吸引了不少人仔细阅读那篇评论文章,结果又挑出来不少问题,譬如那个评论认为Drupal不支持Ping,不支持WYSIWYG编辑器,不支持Trackback等等,这些也是不符合实际的。

讨论之中,又有人提到,这篇报告虽然声称是“独立”的,但是实际上却是 21publish请人写的,版权归21publish所有,而21publish也是参加评论的多用户blog之一,并且作者最后给了21publish很高的评分。于是更多的人开始质疑这个评论的公正性与权威性。并且有人写信给原评论的撰写者Robin Good,而Robin Good则亲自到Drupal的网站道了歉并承认自己的评分犯了错误,总算对这次讨论做了个了结。

关于Robin Good到底有没有做到真正的“独立”,实在不好说,不过同时评论这么Blog工具其实挺困难的,没有一一的长时间使用过,肯定无法全面的评估某一款Blog工具的好坏。

另外,自由软件杂志最近要给Drupal提供一页免费的广告,所以不少人都提出了设计方案,我觉得还是Chris做得比较好,他port了不少Drupal的主题,譬如Wordpress的Meiji和Kubrick等等,上面的插图便是他提交的方案。

Free Tags: 
Blog分类: 

Blog工具的新一轮比较:Wordpress 1.5 v.s. Drupal 4.6

大致看了一下Drupal网站中的新闻聚合,这阵子最热门的话题恐怕要属新一轮的Blog工具比较了。虽然也包括其他的Blog工具,但是比较的核心仍然是Drupal和Wordpress。第一个焦点是Robin Good写的长达__92页__的[《多用户blog工具的比较》(Comparative Review of Multi-User Blog Tools)|http://www.masternewmedia.org/news/2005/05/16/group_and_multiuser_blog_platforms.htm],包括了[Silkblogs|http://www.silkblogs.com],[Manila|http://manila.userland.com/],[21publish|http://www.21publish.com/],[TypePad|http://www.typepad.com/],Drupal 和[Wordpress MU|http://mu.wordpress.org/]。其中Wordpress MU是Wordpress推出的一个多用户版本。作者的重点倒不是比较着几种多用户blog工具的孰优孰劣,而是想说明Blog的发展趋势是朝多用户的“团体Blog”(Group Blog)的方向发展。Group Blog与Community Blog还多少有些不同,前者的典范是BoingBoing,而后者的代表则是Slashdot。总的来说,作者还是比较赞赏Drupal的,认为Drupal还是这几款多用户Blog工具中翘楚。这份图文并茂的评论可以在[这里下载(PDF, 4.5M)|http://fiskbooth.com/report-full.pdf] 第二个焦点是Tangent Mobile的[Blogging & Content Management Systems (WordPress & Drupal Reviews)|http://www.tangentmobile.com/2005/05/05/blogging-content-management-systems-wordpress-drupal/]是直接对WordPress和Drupal的比较,中间也顺便对MovableType和Mambo做出了评价,但是作者推崇的仍然是WordPress和Drupal,援引作者的一句话: ;:__If you thought WordPress, was awesome, wait until you see Drupal!__ ;:__如果你认为WordPress真的是棒极了,不妨等看到Drupal后在下这样的结论!__ 其实从根本上来说WordPress是一个非常不错的Blog工具,而Drupal则是CMS+Blog。如果你只想搭建一个Blog,WordPress无疑是最好的选择之一,不过如果除了BLOG你还想放进去些别的东西,无疑Drupal是最佳的选择。
Blog分类: 

同时出现的Drupal 简体中文与繁体中文汉化!

刚在Drupal总站看到的,几个钟头前才提交的,有[简体中文|http://drupal.org/node/23583]和[繁体中文|http://drupal.org/node/23585]两个版本,其中繁体中文是用ConvertZ7.40直接从简体中文得到的,所以一些词法的不同并没有转换,譬如”程序”与“程式“,不过这些都是小问题,繁体中文可以很容易更改过来的。 下载到本地,用PoEdit打开看了一下,2190个字符串,除了9个没有翻译外,其他都已经完成了,比起通行的Hiweed版是一个很大的进步啊!翻译者的ID是tnds,留下的联系网站是[子虚乌有|http://www.zxwybbs.com/drupal/],目前网站上还没有什么内容,看样子是刚刚搭建好。呵呵,这个一定要赞一下,虽然Hiweed完成了80%的翻译,但是很多比较长的文字都没有翻译,另外4.5的翻译recycle入4.6后,估计可能也不到80%了,所以工作量还是不小的。呵呵,待会儿导入看一下效果如何! __Update:__试用手记: 已经导入了新的翻译,由于安装模块的缘故,我的blog实际需要翻译的字符串共有4000多,导入了核心的两千多条翻译,仍然有2000多条没有翻译,呵呵,看来有些常用的模块还是要自己动手了,希望Drupal能给简体中文建立一个新的Project,这样有了新的模块翻译也可以加入。 另外,看来tnds的翻译不是recycle了hiweed的旧翻译而是一些重新开始的,所以一些翻译刚用起来可能不是很习惯,譬如“block”,Hiweed翻译为“区块”,tnds翻译为“板块”,“forum”,hiweed翻译为“论坛”,tnds翻译为“面板”等等。不过好在Drupal可以很方便的根据自己的爱好调整翻译,只要在“本地化”里搜索到相关字符翻译,改过就好了。 还有,tnds最好的地方就是彻底翻译完了Drupal的核心字符串,现在所有的帮助、说明都进行了汉化。
Free Tags: 
Blog分类: 

快速搭建Linux+ Apche + MySQL + PHP :XAMPP for Linux (LAMPP)

这次恢复数据的时候,无意中发现了一个很好的集成软件包:XAMPP for Linux (原来也叫做 LAMPP)。它可以快速的帮助你搭建本地服务器,以方便进行进行本地测试。刚才搜索了一下关于这个软件包的中文资源,并没有多少,所以简单介绍一下,挺方便的。 说起搭建本地服务器,想到最多就是 WAMP,也就是 Windows + Apache + MySQL + PHP,我现开始想到也是这个,于是在Windows下安装了WAMP。WAMP的版本很多,我用的是[GreenAMP|http://chin.blogchina.com/227620.html],不需要安装,直接启动就可以使用,包括了经典的Apache, MySQL, PHP 组合以及PHPmyAdmin等等。但是windows下的AMP不好用,特别是你的数据库非常大的时候,唯一的导入方式就只有用PHPmyADMIN了,可是PHPmyADMIN默认的上传大小是2M,虽然更改一下PHP.ini等几个地方,可以增大这个限制,可是不停的导入导出还是很麻烦,并且windows下一般来说千万不要随便打开MySQL数据文件,我用Ultra Edit打开过几次,结果总会把MySQL语句弄乱。 于是想到了Linux下的AMP,其实以前没有接触过这个,只是猜想应该也有类似的东西,所以就搜了一下LAMP(这个词是我猜的,不过真的猜中了),结果找到了XAMPP for Linux。这个软件包原来的名字是LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP for Linux了。 __最新的基本组件包括:__ * Apache,2.0.53 * MySQL,4.1.11 (55~ 这就是我要找的4.1啊!) * PHP,5.0.4 & 4.3.11 * Perl,5.8.6 * ProFTPD,1.2.10 * OpenSSL,0.9.7d * phpMyAdmin 2.6.1-pl3 __图形软件包__ * GD,“Graphics Draw”库 * libpng,官方的 PNG 参考实现库 * libjpeg,官方的 JPEG 参考实现库 * ncurses,字符图形库 __数据库软件包__ * gdbm,标准的 UNIX® dbm 库的 GNU 实现 * SQLite,一个相当小的、无需任何配置的 SQL 数据库引擎 * FreeTDS,一个数据库,让 UNIX 和 Linux 程序可以访问 Microsoft® SQL 和 Sybase 数据库 __XML 软件包__ * expat,一个 XML 解析器库 * Salbotron,一个 XML 工具包 * libxml,一个 XML C 解析器和 GNOME 工具包 __PHP 软件包__ * PEAR,PHP 库 * 一个 pdf 类,可以使用 PHP 生成动态的 PDF 文档 * TURCK MMCache,一个 PHP 性能增强器 __其他软件包__ * zlib,一个压缩库 * mod_perl,在 Apache 中嵌入了一个永久的 Perl 解释器 * gettext,一个工具集,可以帮助 GNU 软件包生成多语言的消息 * mcrypt,一个加密程序 * Ming,一个 Flash (SWF) 输出库 * Freetype2,一个软件前端引擎 * IMAP C-Client,一个邮件编程 API 当然还有其它一些东西,总的列表如下: Apache 2.0.53, MySQL 4.1.11, PHP 5.0.4 & 4.3.11 & PEAR + SQLite 2.8.9/2.8.14 + multibyte (mbstring) support, Perl 5.8.6, ProFTPD 1.2.10, phpMyAdmin 2.6.1-pl3, OpenSSL 0.9.7d, GD 2.0.1, Freetype2 2.1.7, libjpeg 6b, libpng 1.2.7, gdbm 1.8.0, zlib 1.1.4, expat 1.2, Sablotron 1.0, libxml 2.4.26, Ming 0.2a, Webalizer 2.01, pdf class 009e, ncurses 5.8, mod_perl 2.0.0-RC4, FreeTDS 0.62.4, gettext 0.11.5, IMAP C-Client 2002b, OpenLDAP (client) 2.2.13, mcrypt 2.5.7, mhash 0.8.18, eAccelerator 0.9.2a, cURL 7.13.1, libxslt 1.1.8, phpSQLiteAdmin 0.2, libapreq 2.04-dev 安装就更简单了 tar xvfz xampp-linux-1.4.13.tar.gz -C /opt 安装完毕。(/opt 为本地安装目录) 启动只需要 /opt/lampp/lampp start 然后就可以看到 Starting XAMPP 1.4.13... LAMPP: Starting Apache... LAMPP: Starting MySQL... LAMPP started. 一切都搞定了,比windows下要简单的多。输入 http://localhost 会进入测试页面如下: [http://www.kzeng.info/drupal/files/380.jpg] 在这个软件包的[官方网站|http://www.apachefriends.org/en/xampp-linux.html]可以下载到这个软件包,并且有进一步的说明。如果想搭建一个本地的Linux测试环境,赶紧动手吧:)
Blog分类: 

Blog完全恢复!

哈哈,总算彻底恢复了,一丁点儿数据都没有丢失,期盼的大团圆结局居然在最后才出现,实在是意外的惊喜!把昨天沮丧的文章转在下面吧:

忙了这么久,总算还有些成绩。原来的数据库恢复过程中由于MySQL Dump 数据时出现乱码,暂时放在一边,如果感兴趣,想看看残破的Drupal是什么样子,可以看看:http://www.kzeng.info/test/ 呵呵,仍然是一个完好的Drupal,只是数据库有些问题,出现了乱码。正在尝试进一步的修复,如果修复无望,只好把里面的重要的文章再copy过来。

现在运行的Drupal是基于三周前的一次备份,现在运行良好,只是丢掉了三周来的数据,不过会慢慢的补足,只是可惜了大家众多的评论和trackback,那里的乱码很难修复了。

这次突发事件有喜有忧,忧的是丢掉了一些文章,还要费时间转过来,喜得是学到了不少东西,以前对于Linux下的命令行,只是偶尔为之,动辄需要查手册,可是经过这两天的反复操作,已经成为一个熟练工了,MySQL和PHP也是一样的,为了迁移转换数据库试了许多方式,增加了不少经验值,同时还接触到了emac,LAMPP,qftp等等不少有趣的东西,挺好用的,不知道windows下游没有相关版本。美中不足的是没有一个大团圆的结局,最后折腾出来的数据库还是有乱码,但是在我这里基本上已经是无能为力,是空间提供商的问题。把旧的数据库先放在那里,看看以后会不会有办法。

这次事情突然,原来只是想搭个blog玩,所以没有太注意空间提供商的稳定性,可是东西积攒多了,一下子丢掉又舍不得。现在换了一个牢靠些的空间,以后应该不会有问题了。

关于这次问题,有了不少新的经验,大致总结一下:

拿到了数据库文件发现不能直接导入MySQL Server,仔细一看是版本的问题,当时到MySQL的网站,查了一下手册,知道问题出在Engine这个变量上,所以就用Ultra Edit更改了一下,但是在SSH中导入时却出现了错误,只要Ultra Edit修改过的文件,里面的编码似乎都会出现问题,把英文字符变为乱码。当时郁闷了一下。

幸好我的笔记本上还装了Mandrake的Linux 操作系统,最初装的时候只是好奇,现在看来Linux果然是一个强大的工具。在Linux先用普通的Editor修改MYSQL文件,但是发现仍然有 Ultra Edit一样的错误,偶然间发现了Emac,重新编辑过,问题居然没有了,于是我就手动把数据库文件从4.1降级为4.0。导入,OK,可惜居然是有乱码!(后来才知道是数据库文件本身的问题)。当时又郁闷了一下。

一计不成又生一计。从windows下的WAMP想到了Linux下的LAMP,于是搜索了一下,找到了集合 Apache, PHP 4.11.3 和 MySQL 4.1.11的LAMPP---bingo!我要到就是MySQl 4.1.11,于是下载,40多M,安装,以前比较讨厌Linux下用命令行的安装方式,不过现在看来也有不少便利之处,起码对安装的过程了解的通通透透。然后启动,一切顺利,把原来的数据库导入,然后再重新dump,加上了 compatible=msq4.0的条件,得到了可以在MySQL 4.0中使用的数据库文件,重新上传,导入,结果---还是乱码!当时又郁闷了一下。

于是想测试一下原来的数据库究竟怎样,于是在本地安装了Drupal,连接本地数据库,然后--还好乱码,原来已开始的问题所在就是数据库文件本身! 有些ft。最后还是用了这有问题的数据库,不过又想到了以前的备份数据,拿出来,居然还可以用,就是现在了。

只能抱怨原来的空间提供商了,好在损失还是不大:)

Blog分类: 

重新开始折腾Drupal主题

Drupal最近又推出了不少有趣的主题,有提交给官方的,也有私下fans自己做着玩的,最近看了不少主题的CSS,所以又动了改主题的心思,呵呵,今后一段时间blog要经常大变脸了:)

今天把三栏显示改回了两栏,因为觉得三栏显得有些零乱。同时更改了block的title属性和list属性,比较喜欢现在的list图标。只是些小的改动,等到有空了再做些大的更改吧。

还有,发现blog的RSS和Atom又恢复正常了,估计是有错误的字符的blog已经沉入水底,最新的blog不再有这些问题了。

Update: 呼~呼~,抄袭Blix完毕,hoho,又开始我的大杂烩过程:)

Free Tags: 
Blog分类: 

Drupal的wiki模块

wiki模块升级到了4.6.0,其实wiki的前一个版本在4.6.0下也可以使用,不过还是更新了一下。新的wiki利用re-direct解决了创建新文章的问题,所以算得上是一个真正的wiki了,Chris曾经写过一个wiki的node type,用来辅助wiki模块,但是事实上大可不比,因为用flexinode可以很容易的创建一个这样的node type,然后把编辑权限设置给匿名用户就可以了。呵呵,等测试比较成熟了,还是想创建一个Drupal使用说明的wiki。

其实4.6.0里好几个模块的功能都和wiki的功能类似, 譬如freelinking模块和interwiki模块。感觉freelinking是由title模块升级来的,因为所用语法和title一样,都是用方括号[]创建内部链接,很方便,不过freelinking模块的功能改进了不少。interwiki模块的功能稍有不同,可以很方便链接许多其他网站,譬如想插入wikipedia对Drupal的解释,只需要使用语法:[w: drupa]就行了,而要连接到一个字典网站,则可使用[dict: drupal], 连接到google的搜索结果 [google: drupal],这样的语法是可以自己设置的。

Drupal的模块越来越丰富了,记过所有的CMS和Blog的功能都可以实现了,遗憾的是中文资源有限。自从hiweed专心开发Linux后(发现hiweed drupal的链接已经转接到hiweed的Linux去了),Drupal的中文化彻底停止了,呵呵,有时候好奇其他几个语种的Drupal的翻译是怎么组织的。

BTW,使用了shunz改写trackback block,感觉挺不错的,方便大家互通有无:)

Blog分类: 

升级Trackback模块到v 1.30(Drupal 4.6)以及相关问题

对Trackback模块最新版本的追求充分体现了“时髦”的代价。Drupal4.5.0推出的时候,Trackback 推出了与之匹配的v1.14,这个版本的问题多多,譬如把trackback和评论混同起来,在每篇blog文章里凭空添加一个多余的"trackback" tab等等,在被多人诟病之后,作者作出了升级,但是这次升级并未作为Drupal 4.5.0的正式版本,正式版本仍然是v 1.14,升级版只是可以从CVS那里下载到,这次升级的最大变动就是数据库结构的更改,因为作者没有把这次升级作为最终升级版,所以并没有提供升级数据库的脚本。当时我为了紧追潮流,立刻升级为CVS,但是由于前后两个数据库的差别非常之大,我就放弃了手动升级数据库(表),而是删除了旧的,直接使用新的,好在当时没有几条Trackback,所以也不是一个问题。

从那以后我紧跟Trackback的CVS,好处是修正了一个又一个小错误,譬如不能直接删除trackback,在没有trackback的时候在blog的摘要下面显示"0 trackback",发送成功后无法显现成功发送的站点等等,终于我跟到了v 1.28,这个v1.28已经支持Drupal 4.6.0,所以就拿来用了 。值得注意的是,从v1.15到v1.28,trackback的数据库结构都没有发生改变。

终于,Trackback推出Drupal 4.6.0的正式版了,第一个版本是v1.29,本来要升级,但是一看,God,数据库结构又变了,正在吃惊之余,v1.30推出了,支持了Spam模块,提供了数据库升级脚本,但是只提供了从v1.14直接升级到v1.30的脚本,并没有其他版本升级的脚本,把俺这个铁杆的粉丝搁在了v1.28,进退两难了, 55~~。

懒了一段时间没去管它,但是想到最终这个问题还是要解决的,还是趁早吧,恰好又看到intertia贴的一条评论,所以花了点功夫把Trackback从v1.28升级到v1.30,主要是数据库的升级,步骤如下:

首先,建立一个Spam_trackbacks表:

CREATE TABLE spam_trackbacks (
trid int(10) unsigned NOT NULL default '0',
rating int(2) unsigned default '0',
spam tinyint(1) unsigned default '0',
last int(11) unsigned default '0',
PRIMARY KEY trid (trid),
KEY rating (rating),
KEY spam (spam),
KEY last (last)
);

然后,在原来trackback_received表格中添加一个新的叫做Status的column(主要是用于设置trackback是否publish):


ALTER TABLE `trackback_received` ADD `status` TINYINT( 1 ) UNSIGNED DEFAULT '0' AFTER `excerpt`

数据库的更改搞定(希望以上就是1.28与1.30数据库不同的地方,如果还有其他的不同,那可要哭死了~~),然后上传新的trackback模块,更改设定,设置spam,blah blah blah。。。按照惯例就行了。 到此搞定一切。

下面是其他几个问题:

首先关于显示最新trackback的block的问题,初步更改如下,主要解决了显示Unpublished的问题,和如何直接显示到Trackback的问题:
$result = db_query_range('SELECT * FROM {trackback_received} where status=1 ORDER BY created DESC', 0, 10);
//添加 status=1
while ($trackback = db_fetch_object($result)) {
echo "

  • $trackback->subject
  • ";
    //添加锚点,但是似乎只在firefox下有效,在IE下没有太大作用
    }
    ?>

    更进一步,这个区块可以用user_access函数来写,更优化一些,另外可以加入发布时间,利用theme函数来进行格式化等等,但是今天没有时间了,只改了最关紧的地方,其他的改天再改进吧。

    Blog分类: 

    今天出的一个问题和一些经验

    早上起得比较晚,打开自己的blog,本来想点看一下最新的评论,结果却发现了一个错误:

    user error: Got error 28 from storage engine query: ....

    Drupal把它归为PHP错误,但事实上这是一个MySQL错误,错误的原因是因为没有足够的存储空间。具体的说是没有足够的用来存储临时文件的空间。用下述指令查看了临时数据表的大小和存放位置:

    show variables like "tmp_table_size";
    show variables like "tmpdir";

    然后写信给空间提供商,报告了问题,2分钟后问题就解决了,但是由于这个数据库的存储错误,导致了我的数据库本身也发生了一些错误,修复以后出现了一个问题:匿名的用户无法正常访问Blog首页,其他网站也无法正常抓取RSS了。通常出现这种问题的检查方式如下:

    1. 检查 access control中,匿名用户的权限;(我的没有问题)

    2. 检查数据库中user_roles数据表,特别是 uid=0,rid=1这一个entry,它是设定用户访问权限的; (我也也没问题)

    3. 检查数据库中 user 数据表,看看uid=1有没有定义,以及它的rid有没有问题;(我也没有问题)

    4. 检查数据库中node_access 和 permission两个数据表;(我的也没有问题)

    有些让人ft了,所有可能出错的地方都查到了,结果一点问题都没有,可是匿名用户就是不能访问首页。最后想到了最土的一招:重启。呵呵,以前无论是电脑、手机、pocket pc还是ipod,只要出了解决不了的问题便拿来reset一下,问题都可根治,这次又拿Drupal试了一下: 在access control里把匿名用户"访问内容"的权限取消,然后保存;然后再启动匿名用户访问内容的权限,再保存; 完成了一个reset的过程,结果问题果然又解决了! --无语

    Free Tags: 
    Blog分类: