Drupal

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

降级回 Drupal 6.22

image

前几天升级到了 Drupal 7.8,正如预料的那样,问题成堆,每抓住一条虫子,就会发现这条虫子背后还有 N 条虫子,杀死了这条虫子,又发现产生了更多的虫子 。。。当然最好是治标而非治本,如果能系统的更新以前做过的 PHP 和 MySQL codes 的更改,自然是最好的,但是这又必须要求去钻研 Druapl 7 浩繁的 API 手册,现在的 Drupal 已经不是当年的 Drupal 了。所以,最后还是决定 roll back 会 Drupal 6.22。如果没有太多的时间就不打算在升级了。

呵呵,突然想到中国历史上的改革,为什么大多数情况下改良的尝试最后都以向保守势力妥协而告终?大概和我升级 blog 是差不多的道理吧。其实重新建设比修改补丁更容易,之所以要修改补丁,是以前积累下来的东西太多:)

顺便附上上次升级完写的 blog,因为数据库重新 dump 了升级前的备份,所以这篇 blog 消失了:

Drupal 7 今年一月就已经正式发布了,但是一直在用着陈旧的 Drupal 6。按照以前的习惯,Drupal 在 pre-alpha 阶段的时候,就该兴冲冲的从 CVS 里check out (不知道现在 Drupal 的 version control system 还是不是 CVS 了,好久没有登陆了),安装测试,然后去报告 bug。但是现在一想到升级,想到要写无穷尽的 PHP,MySQL, CSS, HTML 代码 (原来自己手动更改过很多 Drupal 的代码和数据库),就懒得升级 —— 倒不是因为难或者麻烦 —— 现在每天都要写 N 多的  C#, R, C++, Matlab, VBA, etc ,PHP 和 MySQL 相对要简单许多,而是因为没有乐趣了 –__- 

从经济学的角度讲,大概这是边际效用递减,每天埋头读大部头的康德、黑格尔、沃尔茨、基欧汉之余有个把儿钟头可以忙一会儿毫不相关的 PHP coding 带来的乐趣要远远大于现在花几个钟头 debugging C++ 或者一行一行看 implementation 研究为什么 R 的 Gauss–Kronrod quadrature 算法要比 Matlab 慢几十倍的原因之后再来改 PHP 的乐趣;或者从很哲学的角度讲,世界总是一座 besieged fortress, 再或者简单用俗语说,就是 “贝戈戈”:)

不管怎样,总算突然有了兴趣,把 blog 升级到了 Drupal 7.8。久违了,Drupal :)

Blog分类: 
Free Tags: 

Blog 六周年

image才意识到自己的 blog 已经存在六年了,第一篇 blog 是 2004年 11月 6日 张贴的,不是我的第一篇 blog,但是这个域名下的第一篇。六年前,blog 还算是一个新鲜事物,大概是 web 2.0 革命的开始吧,2004年的2月,facebook 才刚上线,应该还只是局限在校园里玩具,twitter 要等两年后才出来,delicious 已经出来一段时间了,digg 还要再等一个月,wikipedia 已经有些影响力了,所以当时一直在摆弄各种不同版本的 wiki,最后误打误撞的开始使用 Drupal。

那个时代的 Drupal 还是 ver 4.x 的时代,那个时代是汉化还是 hiweed 做的,后来 hiweed 专心作 Linux Deepin,我才开始接手作 Drupal 的汉化。那段时间也是网络躁动革命的年代,新鲜的东西不断的涌出,网络社会化带来的影响也许不亚于印刷术在西方普及带来的革命,各种各样的讨论、争论无处不在,在那时,我们似乎没有 Great Firewall。

不知道 Great Firewall 是什么时候竖起的,但是我也很荣幸很早就成为被“墙”的对象,比 youtube, facebook被墙的都要早,并且一直被“墙”到现在,好吧,被“墙”也是一种资历 ^_^

但是六年之后,觉得 blog 的色彩正在褪去,很难得再有任意挥洒的时间激昂文字,上一篇 blog 是八月份写的,然后就是这寂静的三个月,好像不只是我,桑林志的最近一篇更新也在三个月前,大家都在为稻粱而奔波。

欧阳文忠公言曰:“稻粱虽可恋,吾志在冥鸿。”对于我等晚辈后生,何为冥鸿呢?文不能提笔安天下,武不能上马定乾坤,况且这个时代也不是没事儿就想冥鸿的时代 ——  Great Firewall 如果会贝叶斯学习,应该能从冥鸿联想到鸿鹄联想到陈胜联想到 …… :)

但是不管怎样,还是被这些圣贤书认真的毒害了,不知不觉就认同了传统旧式知识分子的条条框框,大约让我生活宋代,我也不会有任何的不适 —— 事实上就像以前 blog 提到过的,司马文正时代的洛阳和马克斯·韦伯时代的维也纳是我最希望穿越的目的地:)

不过现在是 2010 年末,blog 就像曾经辉煌的唐宋一样正在失去昔日的光彩,现在是 facebook 和 twitter/微博的时代了。不怎么用 twitter ,因为缺乏造反的冲动(好吧,中国知识分子的劣根性,达则兼济天下,穷则独善其身,不穷不达就老老实实的过日子^_^),但是作为老老实实过日子的 facebook 还会不断的用,所以从这篇 blog 起,所有的 blog 的 feed 都会输入 facebook,边栏里也加了 facebook 的 widget (有时间了会折腾一下 Drupal 和 facebook 整合)。 blog 仍然会写下去,毕竟这么些年,读读自己六年前的文字,多么纯情的一小P孩啊:)

P.S. 最近网络流行的一部短片《老男孩》,看罢想起了玉田的半阕词:

茸茸春草天涯。涓涓野水晴沙。多少骅骝老去,至今犹困盐车。

向文忠公致敬:)

Blog分类: 
Free Tags: 

分享扫描版古籍

手头有很多年积攒下来的扫描版古籍,很适合在 Kindle DX 或者其他足够大的手持设备已经电脑上看。昨天正巧有人让我帮忙找一下 1956 年中华书局版的《资治通鉴》,所以就顺便想了一下分享这些已经版权过期的古籍的方式(按照中国的著作权法,这些古籍应该不存在版权问题,因为作者都已经过世超过五十年)。以前试过用比较复杂(当然也比较方便)的 Biblio 模块,但是那个输入起来太费时间了,所以对于希望有一种方式可以:

  • 支持 FTP 批量上传
  • 支持简单的文件描述
  • 可以使用 drupal 的访问控制和角色控制
  • 和 drupal 本身的各种功能更好的整合

其实符合这些要求的 drupal 模块很多,实验了一下,最后决定用 filebrowser 模块,完全符合上述的要求,并且支持三种下载管理模式(公开,私下,安全)。另外,它直接把 directory listing 作为一种新的内容类型,很方便管理,所以暂时使用这个模块继续实验一下。

在 blog 的导航中加入了“古籍”,点击就可以进入古籍列表了,可以直接利用浏览器的搜索功能进行搜索,也可以通过本 blog 的搜索功能。FTP 上传很便捷,一会儿功夫就上传了 2.1 G 的 PDF。同时重写了列表的 CSS ,使它和 blog 主题的风格一致。为了防止 Unicode 的文件名导致在某些浏览器中不能下载,所有文件名都改为数字名称。另外在本地写了一个小程序,可以快速的更改文件名和添加文件描述。

以后会陆续添加更多的古籍到这个目录,选录古籍的基本标准如下:

  • 实体书扫描版(这样才能确保质量)
  • 以中华书局、商务印书馆等主要出版社为主(也是为了确保质量)
  • 古籍的原作者必须过世五十年(以符合中国的著作版权法)
  • 只收录 PDF 格式,其它格式譬如 .djvu等也会先转为 PDF 格式再上传(方便 Kindle 阅读)

试一段时间看看。

Blog分类: 

Google Font API

font_api-128[1]这两天又折腾了一下 drupal 主题。N. Design Studio 有一款很不错的 wordpress 主题 koiabthemes把它移植到了 drupal上,用了几天,找到了一些 bug,陆陆续续修正了,然后又做了一些我需要的更改,总算稳定下来。又安装了一些新的模块,譬如 Tagadelic,可以提供一个 tag 云 block (右下角)和一个tag 云的页面,这样blog里用的 tag 马上就多了一个维度出来,可以直观的看到各个话题所占的比重,譬如和历史相关的话题中,原来我这里关于三国秦国汉朝清朝的 blog 数目最多,在数量上差不多和生活相关的话题里的旅行一样多了。这倒正是一句古话:“一壶浊酒喜相逢。古今多少事,都付笑谈中。”

因为使用 Tagadelic block 的缘故,非常需要一款比较窄的字体,blog 的默认字体 Georgia 太宽大,使得 tag 云看起来很别扭,但是HTML普遍支持的字体中并没有窄字体,开始的时候想到了 Drupal 的Dynamic Rendering 模块(前阵子用它来生成 blog 标题所用的“华康丽黑”字体),它的原理是利用服务器端的字体生成 Flash 来替换原有的字体,但是这种方法的效率不高,也会拖慢网站的速度,正巧想起了 Google 前阵子推出的 Font API,试了一下,不仅效果很好,速度也很快。

Font API 通过调用 Google Font Directory 里的开源字体来达到在网页显示其他非常用高质量字体的目的。它的应用很简单,只需要一些简单的 CSS 知识,譬如我用的这款 Yanone Kaffeesatz 字体,只需要在我的 CSS 文档的开头加入字体的定义:

@import url(http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);

然后在需用使用这款字体的地方利用 font-family 来调用就可以了,我的 Tag 云 block 和 页面就是一个例子。在 blog 中也可以用嵌入的 CSS 任意调用:

Give a man a fish, you feed him for a day. Teach a man to fish, you feed him for a lifetime.

稍感缺憾的是现在只有对拉丁文字字体的支持,没有汉字字体。不过汉字字体除了文泉驿外,似乎其他开源并且美观的字体并不多,另外汉字字体文件的庞大尺寸也许会影响到网页的速度。当然还有另外一个最大的问题:如果 googleapis.com 这个域名被 GFW 喀嚓掉了,那再好的字体效果也显示不出来。哈哈,反正现在 GFW 还喀嚓着我的 blog,所以我倒可以无顾忌的放心使用了:)

PS:听说因为开世博会,GFW赦免了一大批网站,但是我的 blog 却不在其中,阿弥陀佛,看来我真的罪孽深重:)

Blog分类: 

Adobe Dreamweaver CS5 支持 Drupal

在瘾科技上看到的 Adobe CS5 的新消息

Dreamweaver CS5
Live View 浏览器,可以实时预览 PHP 程序,不用上传
Drupal、Joomla、Wordpress 进行整合
检查 + 启用/停用 CSS - 如题,如果有用过 Firefox 底下的 Firebug 的人可能会有概念 :p。
与 BrowserLab 在线服务整合 - 在线比较不同浏览器的差异

在 Drupal 的官方网站上发现一段演示的视频链接(Quicktime格式),视频中是以 Wordpress 为例,Drupal应该也差不多 。看样子为了支持 PHP 即时预览,Dreamweaver CS5 在计算机上同时安装了一个类似 XAMP 的本地服务器,这样就可以即时查看 PHP 的设计显示。这时一个不错的注意。前两天更改主题的时候,每改动一下,就要上穿到远程服务器看看效果。现在 Dreamweaver 直接支持 Drupal 预览,以后再作 Drupal 主题设计就方便多了。现在用的这个天蓝色的主题是以前被批评过后放弃的,但是发现还没有被我删除,就拿出来晒晒。

Blog分类: 

简单水墨主题

晚饭啃“赛百味”的时候,看到了一些矢量水墨国画,在 photoshop 里拼摆了一下,想创建一个新的 Drupal 主题风格,其实除了三只鸟以外,似乎也就是单纯的文本文字,这样也好,很清爽。等有时间,把这个构图转化为主题文件。

Blog分类: 

重新制作了 Drupal 的主题

春天的周末,抽空重新作了一个 Drupal 的主题。很久没有亲自操刀了,图省事,用了不少官方网站直接提供的主题,但是实际上,也没有省多少事情,因为每一款主题安装后都要不断地修正。比如为英文网站设计的主题在显示中文的时候普遍文字过小,12px 的字体看上去很吃力,所以必须调整,还有各个组件的摆放,自己订制的 block 的显示等等。所以又重新装了 Adobe Master Suite CS4,自己动手。

设计非我所长,所以主要是参照了一款 Wordpress 的主题:Marine。有些不错的地方,很喜欢这个颜色的搭配,春天了;也有些我不需要的地方,所以还是按照习惯,在 Firework 里画了草图:

drupal_theme_design 

图画完,做起来就快了,base theme 用的是 zen,这是一款空白的 theme,只需要按照设计图写入 CSS 即可,不过因为主题的需要,我还是改动了 page.tpl.php 和 node.tpl.php,主要是圆边角的显示,为了以后更改的方便,所以没有采用一张背景图片的方法,而是使用了三个 div 拼接;也写了一小点儿的 PHP  code,因为我需要用到标题上那样的日期显示,Drupal 默认的日期是不行了,所以重新用 date() 函数format了 $created 变量。

然后就没什么了,按部就班,参照 Marine 的 CSS,所以省去了不少计算的麻烦,不过我的 header 因为和 Marine 不一样,所以还是不得不在 Maple 里算了尺寸长度(杀鸡用牛刀,呵呵)。header 上的花藤是一种叫做 Painted 的字体,比用 Photoshop 的 bursh 要方便很多,虽然形状比较单一。

就这些了,最后,我们为这个主题想一个深远的含义吧,就像分析小学课文一样:头顶的一丝蓝天与背景的大片黑暗 —— 所以小朋友要好好学习:)

Blog分类: 

好久没有折腾 Drupal了

所以今天折腾了一下,先是把 Drupal 的核心更新到了刚刚发布的Drupal 6.5,然后又更换了主题,使用 GlossyBlue,作了一些小改动,懒得再重新设计了。还有就是在每篇 Blog 下面都添加了 Related Blogs 列表,在 Drupal 4.x 和 5.x 的时候,都曾经添加过这样的 block, 帮助延伸阅读,但是实现的方法不一而同,而使用的模块也不一样,主要是受到模块本身更新的限制,Drupal 核心一升级,很多模块就不能用了。这次在 6.x 里,用的是 Similar By Terms 模块,然后用了一段 PHP code,把它镶嵌在 blog 的正文(node.tpl.php)里,最后在 CSS 里作了一些修饰。另外,Drupal 6.x 的 BlogAPI 和 Windows Live Writer (WLW) 不兼容,必须“欺骗”一下 WLW 才行,现在有了更好的解决方法,使用 Windows Live Writer BlogAPI 模块即可。这样一来 category 和 free tagging 也得到了很好的支持。所以还是很推荐用 WLW 写 blog 的。

Blog分类: 

Drupal 6 与 Windows Live Writer 的兼容问题

Drupal 升级到 6.0 后,Windows Live Writer (WLW) 就不能正常的工作了,利用 WLW 发表 blog 的时候总出现下面的错误:

Server Error 1 Occurred
Blog API module is not configured to support the 1 content type, or you don't have sufficient permissions to post this type of content.

这个问题是由 Drupal 6 的 blogapi 模块引起的,目前有两种解决方案:第一,打补丁,drupal 的官方网站上已经有用户提交的,解决这个问题的补丁了,但是随便修改 drupal 的核心模块还是有些风险,如果不想冒这个险,可以使用第二个办法:重新添加一个 account,但是在输入网站地址的时候,故意输入一个错误的地址,这样,自动检测无法通过,就会跳出手动检测的窗口,在手动检测的窗口中选择"Type of weblog that you are using" 中,下拉选择 Movable Type API;在 Remote posting URL for Weblog 中,填入 http://your_site/xmlrpc.php  也就是你的 xmlrpc.php 的位置,然后点击"next" 完成设置,就可以正常发贴了。虽然还有一个问题: Category List 无法正常使用,不过影响不是很大,只要在线再次选择一下类别即可。

另外,这里是一些常用的离线 blog 编辑器的列表,可以试用一下,选择一款自己最喜欢的:

Blog分类: 

升级到 Drupal 6.0

下午的时候,Drupal 6.0 发布了,在过去,肯定会从 beta 开始安装,然后 rc,然后焦急的等待正式版的发布,但是现在,Drupal 5 已经发布到 5.7 的时候,我还停留在 5.3 (感谢上帝,没有人来利用我的安全漏洞),兴趣就像退潮落一样,渐渐的恢复了平静,但是好奇心还是不减,折腾了一阵子,完成了升级,总的过程还算顺利,但是数据库升级是多少出现了些问题,没什么太大的关系,以后有了毛病再慢慢捉虫。很多模块都没有升级,但是现在用到的模块也确实不多,删繁就简,不影响使用即可,唯一缺憾的是还没有来得及升级我的外观主题,只好先用自带的主题撑着,调了和原来主题类似的颜色。其实原来的主题也是一栋烂尾楼,最后还有一些细节总说要改,但是总也没改,当人开始拖拉失去活力的时候,是不是说明已经开始衰老了(努力抓住眼前晃过的猫尾巴,就像抓住青春的尾巴一样,^_^)。Drupal 6 的改变据说很多,但是还没有细细体验(被猫咬了一口),现在基本上都用 Windows Live Writer 写 blog 了,因此很多直接的用户界面也用不到了,但是更新升级还是让人期待,呵呵,希望有些惊喜。

update: 1. Windows Live Writer 用不了了;2. 所以用到了在线编辑,很酷,特别是新的预览方式,太牛了!:)

Blog分类: 

Pages