by laogui on 9. August 2010, 12:03 in Web scripts
用drupal快10年了,当初用drupal只是做为blog,因为当时找不到一个好的PHP blog程序,那时候blog程序里还是movabletype的天下,可惜是用perl写的。这些年我用drupal做了不少站,也写了不少druapl的文章,但我并不懂drupal,我只是把它当作blog用,我用到的drupal功能用wordpress一样可以做到,实际上drupal要比wordpress强大很多,两个程序根本不是一个级别的东西。要想精通druapl那可不是一朝一夕的事情。
drupal是2001年出来的,现在已经是国外开源CMS里的老大了,这完全归功于它优秀的构架,drupal目前俨然已经成为一个框架了。了解PHP的也许知道CodeIgniter、CakePHP、Zend Framework等PHP框架,还有国内的ThinkPHP等等。这些框架虽然倍受争议,但它们的确能给PHP程序员带来不少便利。实际上Drupal现在是一个更加易用的PHP框架,它的易用性是因为它有数以千计的模块。如果drupal不用任何模块它什么都干不了,只是一个和CodeIgniter类似的纯PHP框架。在我看来如果懂PHP,drupal绝对比CodeIgniter、CakePHP更高效,drupal官方有将近7000个模块,这些模块就可以满足80%的用户需求了,CodeIgniter可没那么多现成的代码给你用。
drupal是个社区软件,这些是国内CMS不能比的。国内的dedecms和ecms之类的cms都可以做到自定义模型,但它们缺乏的就是社区性。论坛、交友、微博、wiki、课程管理等互动性比较强的功能都可以用Drupal做到,你要用国内这些CMS做的话就难了。
drupal最流行的模块就是CCK和views了,一个负责自定义模型,一个负责前台调用显示。drupal7默认已经集成了CCK,可见cck的流行程度了。国内好多CMS的自定义模型也很强大,有的已经可以添加字段处理函数了。但与drupal的cck相比缺乏的还是社区性,CCK结合它的相关模块可以做到你想到的任何功能,可以控制每一个字段的权限,与cck相关的模块就有几百个,让人眼花缭乱。
下面我就说说我为啥对drupal难以割舍。
drupal的强大提高了它的门槛,尤其是它的模板,我对drupal又爱又恨就是因为它令人恼火的模板系统。国内的cms对一个完全不懂PHP的人也可以轻而易举做个门户网站出来。你要用drupal做个门户风格简直是要命,我用drupal这么多年了还是只会做一个blog式的模板。看到很多复杂模板都是基于views做的,我每次打开这个东西就头大,看着那复杂的要输半天的表单,我真的想哭。硬着头皮弄出来的调用代码里,html标签比内容字符都多。不懂PHP,英文也很烂,用这玩意做大型网站一定要做好心里准备。
还有个让人烦恼的事情是drupal每次升级变动都太大,我说的是5.x、6.x、7.x这种大版本的变动。很多模块跟不上,模板里的函数也有变化,我有个用drupal 5的站到现在都没升级,就是因为几个模块没有新版本。我用的Textpattern,wordpress、vbulletin,很多古老的模块都可以用,Textpattern甚至七八年前的都可以用。drupal5的模块到6上没一个能用的了。drupal7又是一个大升级,虽然有很多激动人心的新功能,但对于那些改动比较大的网站,升级又是一个噩梦了。我最近做新站,都拿不定主意用6还是7,6很成熟了,但7说不定今年就可以出来了,有很多令人激动的新特性,纠结啊。
by laogui on 13. April 2009, 00:45 in Web scripts
pivotx是老牌blog系统pivot的下一代产品。我2003年就研究过pivot,当时mysql空间很贵,而这个程序不需要mysql,用文本储存数据,所以第一眼就看上了它。这程序当时就有中文语言包了,不知道那位热心人汉化的,但装了以后遇到了个问题:那就是中文评论全是乱码,后来在pivot的论坛看到当时PHP牛人y10K解决了这个问题,虽然用y10K的方法解决了pivot的双字节评论问题,但又遇到很多中文语言问题,唉,真是可惜了那个中文语言包了,这程序中国人根本没法用。
从去年开始pivot开始致力于新版程序的开发,基本上重写了代码,程序代号也改成了pivotx,数据库采用文本和mysql两种方式,你可以自己选择,全新的构架,耳目一新的后台,让Pivot重新焕发出了活力。你可以在这里看看它的后台截图。现在已经发布了RC,估计离正式版不远了。
我个人认为,除了wordpress,就数textpattern和pivotx最适合做blog了。wordpress用的人太多,我这人比较另类,不喜欢用大众化的东西,所以从来不关注wordpress。textpattern很不错,简洁小巧,但图片管理让我很郁闷,所有的图片都放一个目录里,不适合做图片太多的网站,后台也太简陋,操作起来麻烦,而我又不喜欢装插件。pivotx的后台现在很人性化,操作简单快捷,ajax技术随处可见,很多效果很炫,内建的文件管理和缩略图功能我很喜欢。
pivotx的出现让我们除了wordpress多了一种选择,相信你安装了就会喜欢上它,目前让我担心的是Smarty模板引擎,这个东西功能异常强大,非常灵活,定制模板很简单,但因为它的函数库很庞大,带来的是效率问题,不知道pivotx内置的缓存机制能不能让Smarty的性能有所改善。
pivotx还支持多用户,每个博客可以指定不同的模板、不同的语言、不同的分类。它是用分类来设置权限的,把一个分类制定给某个用户,然后在博客里指定相关分类,然后这个用户就能在指定的分类里发表文章了。
不过这几天发现它有不少bug,尤其是后台在IE下有一些比较严重兼容性问题,很多功能用不了,安装都有问题,建议在Firefox或者Chrome下使用,相信正式版会把这些问题都解决的。
本人前几天花了点时间把它汉化了一下,英文不好,有些地方连我自己都不知道怎么理解,大家将就着用吧,点击这里下载,放到pivotx\langs目录里就行了。语言包里有很多东西在后台还看不到,估计是相关功能还没完善。汉化包里有安装相关的内容,但不知道怎么让安装的时候用中文显示。不过没关系,安装就算是英文你也能看懂,安装好在个人信息里的语言选择chinese,前台语言要在每个博客里设置。
by laogui on 12. November 2007, 10:38 in Web scripts
我从2002年底就开始关注drupal了,当时在国内看不到一点关于drupal的资料,2003年写过几篇关于drupal的介绍文章,到现在都经常看到很多介绍drupal的文章里引用我的话。记得2003年看到海微在研究drupal,并且发布了中文语言包,打开了drupal进入中国的大门。海微是我一直敬仰的一个人,以前一直致力于xoops的中文化工作,现在竟然搞Hiweed Linux操作系统了。
海微发布drupal中文语言包后我就一直开始用drupal,不过都是当作普通的blog程序来用,基本上不装插件,也没改过风格。中途试着改过几次风格,但试了几次都放弃了,感觉很麻烦。
最近看了几个用drupal做的强站,看了之后感觉就是震撼,根本看不出是用个开源代码的做的,看了之后我又萌发了修改drupal风格的念头,打算为我的极客集改个版。研究了两天,终于明白drupal模板的原理了,对CCK和views这两个超强模块也有了新的认识,把官方的主要模块都看了看,看得我眼都花了,实在是太多了,对drupal的评价就是:“只有想不到的,没有做不到的”你想要什么功能都有什么模块。这也是国外程序最大的特点,国内的人都抱怨国外的程序简单,不适合做大站,这都是因为没去研究过人家的模块。国外很多人把joomla,drupal叫做web操作系统,这很形象,人家只提供给你最底层的框架代码,其余的功能都留给模块了。就比如用windows一样,安装windows后可以使用,基本的功能也有,但你想要更多的功能就得装软件,你想让你的桌面变漂亮就得换主题。
Drupal属于开发型cms,最便于扩展的cms,在我看来它比joomla灵活很多,官方网站上的模块就有几千个,再加上cck的自定义字段功能,如果想用来做个门户网站功能上你也不用考虑太多了,所以现在Drupal程序员炙手可热,招一个Drupal程序员,不但可以为你节省更多的成本,还有利于以后的开发,毕竟核心代码你不用管了,和Linux一样,linux版本有几十个,但核心代码都是kernel小组开发的。
Drupal上手容易,各种模块装了就可以用,但如果想改模板需要熟悉CSS技术,也需要一定的PHP基础,当然还需要一定的英文基础,因为中文资料相对较少,但官方网站上的教程就够你看一辈子了。如果你css,php,英文都不错,那Drupal在你手中简直就是一个万能工具了,你会越来越对它爱不释手。
不得不承认,Drupal的模板是个门槛,在默认的模板基础上很难做出复杂的页面,和中国人心中的门户网站相差很远。要想做复杂的页面views成了必须用的模块,虽然它很灵活,但使用也很麻烦,而且如果调用太多很占资源,但这个你不必考虑太多,Drupal有很好缓存功能,还有很多缓存插件,数据查询都是一次性运行了放在一个表里随时调用,而且国外那么多大站用drupal充分说明了它的性能。
Drupal的模板核心就是区块(block),你只需要把你的模板分成很多块,然后把drupa生成的区块排列在你的模板上,你安装的插件如果需要显示一般都会自动生成个区块。Drupal官方发布模板都比较简单,一般只适合做左中右结构的网站,如果你想自己在模板里多加一些容器来放Drupal的区块,需要phptemplate_regions函数,当然更方便的是module_invoke函数,可以让你的区块显示在你想放的任何地方。
drupal默认生成的各种区块里带有很多层的html代码,几乎每个html标签都有单独的css id或者class,这样方便你用css控制显示效果,这给我带来了极大的方便,不用动html代码就可以修改模板的显示效果。
这次给极客集改版让我学了很多东西,本来做了一个比较复杂的页面,调用比较多,研究了一下views模块,感觉太麻烦了,而我又不喜欢装模块,能不用的模块尽量不用,极客集只装了几个比较简单的模块(BUEditor,Google Sitemap,Month,Similar By Terms,Captcha)。views是最复杂的一个模块,代码体积几乎是drupal核心的三分之一,于是我打算放弃views做个比较简单的页面了。其实如果你PHP学的好的话完全可以不用views,views本质上就是生成一段Mysql查询语句。
Drupal的官方论坛是个大宝库,你遇到的问题几乎都可以在那里找到答案,随便提个问题就有很多热心人来帮你,而且还会有其他人给出不同的参考答案。这也是国外开源项目最让人羡慕的地方,真让人兴奋啊。去了官方社区才认识到自己很菜,
这篇文章不小心又成了鼓吹drupal的“枪稿”了,其实根本用不着夸它了,它刚刚获得了2007年最佳开源cms的大奖,去年这个奖是Joomla的。也许有人会问我“你整天说这个程序好,那个程序好,到底哪个最好啊?”,说实话我也不知道那个好,每个都有自己的特点,关键是看使用的人,有的人用个简单blog做的站比那些用大型CMS的都感觉复杂。我本人是见一个爱一个,我很多网站,都用不同的cms,它们都是我的情人,每个情人都能给我带来激情,哈哈。过几天打算写一篇比较国外cms的文章给大家参考,国内的不考虑,因为国内的都没特点,无法比较。
by laogui on 29. June 2007, 08:59 in Web scripts
Habari可能是2007年开源世界中最让人关注的东西,据说是Wordpress的部分成员因为不满Wordpress日益商业化和matt的独断,离开Wordpress另外开发一个项目(这点和joomla很像)。这可真大胆,Blog项目数不胜数,对个人用户来说技术也已经趋于成熟,再开发一个blog怎么和众多同类竞争?但Habari有自己的打算,首先Wordpress就是一个很好的筹码,如果你是Wordpress的铁杆用户,它的开发者另外开发一个blog你难道不想去试试?就像当年joomla一样,消息一出,mambo用户倾巢而出,纷纷转向joomla的怀抱,后来证明他们的做法是正确的。其次,Habari宣称自己用的是最先进最前卫的技术,Habari 是一个完全的面向对象的系统,使用了现在很流行的Javascript框架JQuery,使用PDO链接数据库,PDO是PHP 5新加入的一个重大功能,PHP6中将默认使用PDO连接数据库,Habari 支持 OpenID、Cocomment、Atom 发布协议,PHP 只支持最新的 PHP 5,并且支持 MySQL,PostSQL,SQLite 数据库。
关于Habari的介绍这里有两篇不错的文章,http://blog.ihao.net/2007/03/03/about-Habari/,http://bemike.org/blog/2007/01/20/thoughts-on-Habari-and-Wordpress.html。
记得4月份我就下载过Habari,但一看到用PDO我就没装,今天才发现我用的PHP 5.2已经内置了PDO库(实际上5.1已经带了),只需要在配置文件里加上两个扩展就行了:
extension=php_pdo.dll
extension=php_pdo_mysql.dll
你使用其他数据库的话只需把对应的扩展加进去就行了,至于linux怎么设置我不清楚,大家可以找找资料,估计比较麻烦。PHP 5.0 默认没带PDO库,需要自己去下载。
这里有一个详细的Habari安装说明,里面还有很多Habari的截图,大家可以去看看。
Habari的界面太简洁了,比textpattern都简洁,功能简直是不能再少了,从外观上激不起我使用它的欲望,前台默认使用K2的改装模板,后台无法修改模板,模板语法和Wordpress差不多,嵌套在PHP代码中,我不喜欢这样。当然,Wordpress是它抢夺用户的主要领域,所以自带一个Wordpress导入程序。后台没看到分类功能,也无法自定义URL,我写的中文标题都成了http://localhost/-1、http://localhost/-2 这样的,没有附件上传功能,也没看到TrackBacks功能,没有用户组,默认添加的用户就是管理员,但有tag功能,这是唯一一个比wordpress2.2先进的地方(wordpress2.3自带了tag功能),我只说这几个主要区别,其他Wordpress的细节功能基本上都没有,把Habari的全部功能都列举出来也用不了一分钟。可以说Habari是一个非常简陋的程序,官方会说成Habari是一个非常高效的程序,这么简单,不高效才怪呢。