drupal_4-7

升级到 Drupal 4.7.4

Drupal 4.7.4 前几天就发布了,今天升级了一下,没有数据库的更改,只要覆盖文件就可以了。升级以前记得做好备份。Drupal 4.7.4 只是一个例行的维护升级,并没有增加什么新的功能,所以升级之后也看不到什么不同之处。呵呵,Drupal 5.0 大概还有两个月就可以退出第一个 beta 了,改观挺大的,具体的消息可以参看这里。最重要的改进之一就是像Wordpress一样支持 web 安装了,比手动安装省了不少的力气。

除此以外,Drupal 的 contribution (也就是模块,主题,翻译)部分最近也要进行一次更改。主要是针对发布版本的重新规定。原来的模块等的版本号并无任何的意义,更新一次 CVS ,就累进一次版本号,而现在模块的版本号将有三部分组成:Drupal的版本号+主要改动版本号+次要改动版本号。这样用户就可以一目了然的知道每个模块所兼容的版本了。

另外,推荐一下 Akismet 模块 ,这个模块防范 Spam 的效率还是蛮高的,有了它,基本上就用不到 Spam 模块了。呵呵,感觉上 Aksimet 模块似乎比 Spam 模块省资源,不知道实际上是不是这样的,有时间了测试一下。

Blog分类: 

升级到Drupal 4.7 RC 4

第一个感觉就是速度快了很多,呵呵,也有不少人提到这一点,应该不是幻觉:)从RC2升级到RC4,数据库没有变动,只用替换文件就可以了,所以挺方便的。希望这是最后一个RC,不要再跳票了。呵呵,这阵子Drupal China的人气越来越足,实在让人高兴。虽然Drupal非常灵活易用,但是入门的门槛似乎稍微高了一下,因为有许多专有的名词,刚刚接触可能会有些不太习惯,所以打算再重新写一个Drupal 4.7的入门教程,方便大家选用这个super cool的CMS:)

Blog分类: 

升级到 Drupal 4.7-RC2与Blog演进史

今天 Drupal 推出了 4.7版的第二个Release Candidate,因为看到开发人员很自信的说这可能是正式版发布前的最后一个RC了,所以刚才升了一下级,从beta6 到 rc2的升级过程很平稳,因为没有数据库的改动,所以只需要替换一下文件就可以了,比从drupal 4.6.6到drupal 4.7-beta6的升级简单了很多,上次升级数据库的变动很大,为了顺利升级,还仔细写了升级步骤计划:)RC2修整了自RC1以来的很多bug,感觉比较明显的是我在用Beta-6时遇到的链接无法使用<front>指定的问题,RC2已经解决了。

在不断的升级过程中,也逐渐的剔除掉了越来越多的原有的CMS(内容管理系统)的特色从而增强了blog的特色。最初搭建这个网站的时候,因为中文Drupal的资料还是不是很多,再加上后来接受开始做Drupal的汉化,所以就启动了"论坛"模块方便大家交流关于Drupal的问题与心得,后来还做了一些关于Drupal的book,由于这些功能的存在,整个网站更像一个包括blog的cms而不是一个专门的blog,后来和大米一起搭建了Drupal China,有了专门的Drupal中文社区,所以我这里就没有必要再启用这些功能了,特别是Drupal China被Drupal列为正式的中文支持社区后,就更方便中文的使用者找到和使用这个网站了,昨天突然发现Drupal China的Page Rank已经是6了!中文网站PR是6应该也有不少,但是考虑到Drupal China才搭建不过一个多月,另外像新浪、搜狐、网易这些门户的PR也不过才有7,Drupal China已经算是很不错的了:)另外说句题外话,好像使用独立域名的中文blog好像很少有PR值到6的(主要指首页,某些单独页面的pr值可能到6),甚至连使用donews blog平台的keso的blogPR值也只有5,当然也不是完全没有,google的中文黑板报的PR值就是6,呵呵,也许这些数字说明不了什么,只是俺的职业习惯对数字比较敏感吧(特别是数字排序):)

也是因为有了Drupal China,所以我这里可以更加的blog化了,先是停用了论坛模块,然后取消了论坛的相关分类词,然后停止了这里一些关于Drupal手册的制作,然后更改了主题。原来由于cms的需要,不得不用三栏宽幅主题,后来虽然一再精简,还是为cms的结构所限制,而现在可以放心的使用两栏的主题了。同时也取消了首页链接上的"blog"链接,因为真个网站都是blog了,所以也没有必要再单列出这个导航链接。然后又利用drupal方便的内容管理批处理系统,把所有提升到首页的非blog文章都取消了"提升",也就是说在"首页"所能看到的就只有blog 帖子。一些旧的非blog的帖子可以通过搜索来查阅,譬如以前整理的一些有意思的转贴。不过还有一些非blog的东西被重点保留,譬如从中国地图出版社的BBS上整理出来的中国历史地图集,那里的论坛很不稳定,动辄就被关掉,现在又不知道为什么被关了,不过还好,尽管论坛不能访问了,论坛里的地图通过链接还是可以访问的,保留这样一份整理过的地图集链接,比较方便我自己还有一些喜欢历史的朋友读书时查询。还有就是一份历史年表,方便对比查阅公元纪年与传统历史纪年,曾经建议过Google除了加入节气日期查询外再加入历史纪年查询,不知道Google会不会有一天真的提供这项服务。

呵呵,总的来说,原来是一个包含blog的cms,而现在是一个有着某些cms功能的blog,这也正是Drupal的迷人之处。选择blog工具就像选一双合适的鞋,合脚是最重要的!:)

Blog分类: 

Druapl 4.7 使用手记 (3):灵活摆放block

Drupal 4.7 提供了更灵活的block摆放设置,除了原来的左右边栏,还可以把block摆放在页首与页尾。新的block摆放设置有一个优点与一个缺点。优点是事实上它可以把block摆放在页面(page.tpl.php)上的任何位置;确定是摆放仅限于于页面(page.tpl.php)而无法灵活的放置在node.tpl.php上,举个例子,譬如你想在每篇blog的下面通过freetagging的关联添加一个"相关blog文章"的block,利用Drupal的新的block系统,你只能把这个block摆放在评论的下面而通常所希望的评论的上面,free tags的下面,有些不方便。这里我就分别介绍一下Drupal 4.7的block的这两个优缺点,以及改进办法(以放置related nodes 为例)。

Drupal 4.7的block在设置中,除了左右侧边栏外,新添加了页首,页脚和内容三个位置的摆放,使得block的放置更为灵活。其实,block的摆放并不仅限于这三个地方,通过设置方便的PHPTemplate主题,我们可以方便的把block放在任意的地方。首先,针对left, right, content, header, 和footer这5个位置,他们对应的变量分别是 $sidebar_left, $sidebar_right, $content, $header, 和 $footer_message。也就是说在page.tpl.php中,你只要想在显示他们的地方是用 <?php print $变量名称; ?> 就可以了。譬如,你可以把 $sidebar_left 放在右边而不是左边(使用两个边栏都在右侧的外观主题)。除此以外,你还可以方便的定义自己的区域。

在你的主题文件夹里看看有没有template.php文件,如果有你需要将下面的代码添入,如果没有则需要新建一个template.php文件。在这个文件中我们将利用mytheme_regions() 来创建新的block的位置(参看Drupal使用手册的这里)。譬如你想在Drupal已有的block摆放区域外新建一个用来放Ad Sense的floater区域,只需要在template.php文件中写入以下代码:
function regional_regions() {
return array(
'floater' => t('floater'),
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer')
);
}
?>
注意:你需要把regional_regions()更换为 你的主题名称_regions(),譬如 pushbutton_regions()。

然后在page.tpl.php文件中,只需要在你希望显示这个新的floater区块的地方写入 即可。同时也可以方便的css文件中定义它的显示属性(譬如,float:right)。

但是这样的灵活摆放仅限于page.tpl.php,无法在node.tpl.php上使用,有时这会非常的不方便。所以为了在node上灵活的显示block,我们有两种方式,一是在node.tpl.php上加入一段php代码显示block,但是并不推荐。另外就是大名鼎鼎,异常好用的flexiblock了,原来的作者没有推出 4.7的版本,但是有人帮助升级到了4.7(这里)使用方法与以前类似,是针对node.tpl.php的,正好可以与drupal的block摆放互补不足。有了这个模块,就可以方便的摆入“related nodes”block,用free tags重现awtags的方便之处,我这里就是一个范例。:)

Blog分类: 

Druapl 4.7 使用手记(2):使用Zoundry书写Blog

<

p>

呵呵,这一篇其实是一个篇外篇,本来不打算再写Zoundry的,因为以前写过;但是Drupal China有不少相关的讨论,所以写一下使用手记,使用Zoundry这么久也多了不少新的经验。以前在介绍过Performancing之后,曾经写过一个Zoundry和Performancing的简单的比较,Performancing的优势在于轻便;Zoundry的优势在于全面。这里主要说两个问题一是如何用Zoundry发布各个类型的Drupal的帖子(譬如Blog,Story,Page以及论坛主题);二是如何用Zoundry发布图片。

使用Zoundry发布帖子,必须先开启Drupal的blogapi模块,在开启这个模块之后,进入 管理->设置->blogapi,你就可以看到相关的选项,首先是选择使用哪种XML-RPC引擎,通常可以选用Movable Type;然后选择"Blog Type",如果只想用Zoundry发布blog,那么直接选"blog entry"就行了,如果还想用Zoundry发布别的内容,可以选择相应的类型,譬如论坛主题(Forum Topic)。在设置好Drupal的blogapi后,打开Zoundry,新建帐户,输入用户名密码,以及XML-RPC引擎的地址,通常是 http://www.yoursite.com/xmlrpc.php 就可以了,Zoundry会自动侦测可用的Node Type的。在我的测试网站,我就用Zoundry发布了一篇论坛里帖子。Zoundry可以很好的支持Drupal的分类系统,只需要在 Categories 栏里选择你要发布的论坛就可以了(呵呵,这就体现了Drupal论坛的好处,使用同样的分类词系统)。这也是Zoundry优于Performancing的地方,因为Performancing不支持blog以外的node type。

用Zoundry上传图片就更简单了,不用设置ftp的,直接使用"Use blog's upload feature (via xml-rpc)"这个选项就可以了。插入图片的时候图片会自动的生成缩略图,非常方便,这里是我发布的一个范例

呵呵,用Zoundry写blog非常方便,我现在基本上所有的blog都是用Zoundry写的(包括这篇)。但是它也有两个缺点,一是不支持freetagging,如果同时启用freetagging和分类,两者会混在一起;二是不支持Drupal的时区设置,我发布blog的时候必须把时间提前5个小时,不然时间是不对。希望在以后的版本里可以有所改进。总的来说还是很推荐Zoundry的:)

Technorati : , , ,

Blog分类: 

Druapl 4.7 使用手记(1):全新的 .install 文件

前天晚上把我的blog从 Drupal 4.6.5 升级到了 Drupal 4.7-beta6。总的过程还是很顺利的,升级的过程中也没有遇到"Illegal Mixing"的那个错误,看来 beta6 已经把它给修正了。因为自 Drupal 4.7 开始,数据库的编码都改为了UTF-8,但是升级程序只升级了核心的数据库文件的编码而并未升级一些模块使用的数据库文件(譬如:flexinode),所以这里就要用到 .install 文件了。

一般提供 4.7 版本的模块都应该在自己的文件夹里自带一个 .install 文件。这个文件有两个功能,一个是帮助安装新模块,一个是帮助升级旧模块(含数据库编码)。Drupal 原来的模块安装模式比较麻烦,如果模块必须相应的数据表支持,还必须再单独安装一遍数据表,自Drupal 4.7起,需要安装的数据表以函数的形式写入 .install 文件,直接和模块一起上传即可,在你第一次启动这个模块的时候,数据表会自动导入你的数据库,省去的单独导入数据表的麻烦。另外,再从旧的模块升级的时候,如果需要修改以有的数据表或是添加新的数据表也可以写入.install 文件,但是这个以我的经验是需要运行 update.php 来完成升级的(主要是更改数据库编码)。如果一个模块没有自带升级数据的编码文件,自己写一个也不是很难,可以参看这里这里是我给Flexinode模块写的升级 .install 文件

呵呵,这个新的功能还蛮好用的:)

Blog分类: 

升级到 Drupal 4.7-beta6 !

今天Drupal.org完成了到Drupal 4.7 cvs的升级,说明Drupal 4.7的可用性已经非常的高了,所以我这里今夜也升级到了Drupal 4.7-beta 6。整个过程还是有些繁琐的,包括把awtags转化为freetags,转换一些模块的数据表的编码,修正主题等等,现在基本已经完全完成,可能还会有一些小的bug,随后的几天慢慢的捕捉吧,如果你在浏览我的blog的时候发现有异常,也希望你能帮忙写一个comment:)具体的一些升级细节明天再写。诟病已久的 Drupal 4.7 的block摆放我也想到了一个比较好的解决方式,但是还没有来得及做,明天再改吧,呵呵,晚安!:)

Blog分类: 

Drupal 4.7 升级准备笔记(3): 分离freetags与分类的显示

自drupal 4.7起,引入了新的tagging的方式,也即是freetags。从根本上讲,这仍然是drupal分类系统(taxonomy)的一部分,所以在页面上显示的时候,freetags与一般的分类是混在一起的,有时候会带来不方便,所以我们希望用一种方法把两者分离,就像awtags与分类的显示那样。这部分的显示控制有主题文件中的node.tpl.php来完成,具体的说,在一般的主题的node.tpl.php中,分类的显示是由以下代码来完成的:
print terms;
?>

这里的term包括分类系统中所有的分类(term),而我们现在就要把categories和reetags分开,分开的原理是利用他们所从属的不同的vocabulary。首先我们要查知blog分类的vid与freetags的vid,在phpMyAdmin中,浏览vocabulary表,就能查到相关的信息。我这里分类的vid是11,freetags的vid是12,在显示
print terms;
?>
的地方,我们加入第一段代码来显示分类:
$vid = 11;
//分类的vid
$result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid = %d ORDER BY weight, name", array($node->nid, $vid));
while ($term = db_fetch_object($result)) {
$cats[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
if ($cats) {
print t("Category: ") . implode('| ', $cats);
}
//定义新的变量$cats,我们仍然使用'|'来分隔分类,你可以按照喜好更改
?>

然后在 content 的div结束的地方,也就是内容的下面,新建一个显示tags的div:

$vid = 12;
//freetags的vid
$result = db_query("SELECT t.tid, t.name FROM {term_data} t, {term_node} r WHERE r.tid = t.tid AND r.nid = %d AND t.vid = %d ORDER BY weight, name", array($node->nid, $vid));
while ($term = db_fetch_object($result)) {
$tags[] = l($term->name, 'taxonomy/term/' . $term->tid);
}
if ($tags) {
print t("Tags: ") . implode($tags);
//定义新的变量$tags,这里我取消了不同tags之间间隔,主要是为了我这里主题显示需要,如果你想更改,可以仿照上面的category的做法,在最后的implode()中加入你需要的分隔字符(譬如逗号)
}
?>

这样改造工作就完成了:)

Blog分类: 

drupal 4.7-beta5 推出,DrupalChina,及其它

今天drupal推出了了4.7-beta5。自beta4以来又有160多个bug被修正,看来离正式的版发布又近了一步。由于我的第一个测试站点正在忙着准备主站点的升级,所以在第二个测试站点安装了这个最新版本的的drupal,准确地说是升级,因为那里原来运行的是drupal 4.6.5。升级过程很顺利的,没有遇到升级过程中死掉的bug:)

Drupal China运行了几天,感觉挺好的,所以决定关闭我这里的论坛,把所有关于drupal的讨论都移到Drupal China那里去,这样可以集中讨论,方便大家的交流,不然东一块西一块的不方便查阅。同时我这里也可以结束半blog半cms的状态,安安心心的做好我的blog:shuai。另外,由于我这里访问不便,所以关于Drupal使用的一些心得体会,我也会转贴到Drupal China去:),方便大家阅读。呵呵,说干就干!

Blog分类: 

Drupal 4.7 升级准备笔记(2)

第一步,我们所需要做的就是把awtags彻底的转换为free tags。权衡再三,觉得还是使用drupal核心提供的tags比较安全,因为在将来我们不知道awtags还会不会更新。另外free tags因为使用了ajax技术,可以方便的给你书写提示,并支持tags中间的空格,还有就是可以自动ping Technorati。awtags好像也声称可以自动ping technorati,但是用了这么久,没见它ping过:)所以我们这里做的第一步就是将awtags彻底转化为free tags,然后我们再通过编辑drupa的主题,使得free tags的显示与awtags一摸一样(也就是说我们仍然保持原来的分类,但是在文章的末尾显示free tags)。

升级的思路其实很简单,我们需要做两件事情,首先是把awtags的tags导入free tags所在的term_data表中,然后再建立起 tags与node之间的关联。注意:建议你先将awtags导入term_data,然后在升级到drupal 4.7beta4,如果先升级再导入的话,牵扯到一个转化MySQL数据库 Char Set的问题,在MySQL中不能直接把lantin1的编码转化为utf-8,必须先转化为binary,所以这样的转化是极为复杂的,因此建议先完成导入导出,然后在升级。

  1. 建立一个新的分类,名字叫做 tags (或者什么别的名字都行),这个分类在升级后就起到free tags的作用。
  2. 我们需要知道一些基本数据:首先在你的数据库中(phpmyadmin或是命令行)运行:

    select vid,name from vocabulary;

    因为我们想知道
    这个新建的tags的vid,运行的结果是各个分类(vocabulary)的id number,我这里的tags的vid是12;然后我们需要知道现在tid的最大值是多少:

    select max(term_data.tid) from term_data;

    因为在drupal的taxonomy中,每个分类词(term)都会占有一个tid,我们在把awtags的tag导入为term的时候要避开已经在使用中的tid,否则就会因为重叠而出错。我这里tid的最大值是53;
  3. 现在开始导入:

    insert into term_data (tid,vid,name) select 55+awtags.tid, 12, awtags.tag from awtags;

    这里导入的是tag的名称。注意我用红色标记的地方。因为我的tid已经排到53了,为了避免导入的tag与已有的term重复,所以我在前面加了55;12表示的是vid的数字,也就是你新建的tags分类的vid。
  4. 然后导入:

    insert into term_node (tid,nid) select 55+awtags_node.tid,awtags_node.nid from awtags_node;

    这里导入的是tag与node的关联。同样注意这个红色的55。至此转换完毕,你可以放心的升级drupal 4.7-beta4了。
  5. 升级之后,记得到 "管理->分类" 中去将编辑术语tags,勾选free tagging这个选项。OK,一切都搞定!


今天的笔记先到这里。明天我再写如何把free tags与分类分开显示。

Free Tags: 
Blog分类: