Drupal

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

对awLatestSearches的进一步修改

呵呵,其实对awLatestSearches稍加修改可以增加不少的其他有趣的功能,譬如添加其他搜索引擎的搜索结果,举个例子,如果想添加百度的搜索结果,只需要在原来的代码上添加
...
#Baidu
else if (strpos($refer->url, 'ttp://www.baidu.', 1) == 1) {
$count++;
$link = $refer->url;
$text = preg_replace('/^.*?p=/', '', $refer->url);
$text = preg_replace('/&.*$/', '', $text);
$text = _awLatestSearches_cleanupText($text);
if (strpos($link, '&start=') === FALSE &&
strpos($link, '&b=') == FALSE)
$firstPage = TRUE;
else
$firstPage = FALSE;
$output .= 'Baidu: ' . (($firstPage) ? '* ' : '') .
l($text, $link) . '
';
}
?>
就行了。其他的搜索引擎也可以类推,只要稍微改动搜索引擎的地址即可,但是这样更改后,结果的排序就不准确了,因为作者判断排序的变量 $firstpage 是根据google的搜索结果url来判断的,对百度的判断可能不准确。

其实进一步,对这个模块稍微修改一下就可以得到你的网站在搜索引擎(特别是google)的排名到底在第几页,原理也很简单,根据 $firstpage的定义方式,定义 $secondpage, $thirdpage等等,或者直接定义一个 $nth_page 变量,判断结果的排在第几页。

可惜的是我无法一试了,上次设置cron任务的出错的时候,我的Drupal的数据库中的accesslog表发生了错误,虽然后来用 MySQL的repair指令进行了修复,但是似乎不能写入最新的“访问记录”了,所以我的右上角的“Latest Incoming Search”其实是几天前最新的搜索结果,最近一两天的结果由于accesslog表的问题,其实是无法显示出来的,呵呵,还是重新检查一下数据库最关紧:)

Blog分类: 

搜索引擎的查询结果中,你排名第几?: 一个有趣的模块及修正

发现了一个很有趣的模块,出自于编写awTags的[自动巫师|http://www.autowitch.org/blog]之手。刚刚浏览[inertia的blog|http://heterotopias.org/node/619]时发现他在讨论这个模块,也十分好奇,就装上看看。这个模块可以列出从五大搜索引擎(Google, Yahoo, MetaCrawler, Altavista and MyWebSearch)通过搜索结果进入你的网站的访客搜索时使用的关键字,如果你在那个关键字的搜索结果中排在第一位,那么结果的前面就会用一个“*”表示。譬如根据我网站右上角的那个block的显示,我的blog在“李广利”,“李陵”,“唐朝地图”,“川菜谱”等几个关键词的搜索中列搜索结果的首位。 由于作者在编写这个模块的时候主要考虑到的是西方语言的用户,所以在显示中文的结果时会出现乱码,[inertia|http://heterotopias.org/node/619]似乎也遇到了这个问题,其实在作者最早发布awTags模块的时候也出现过一个类似的语言问题,不过和那个相比,这个问题简单的多,只需要略加更改一下模块最后一行的代码即可,更改如下: 更改为: 呵呵,忘记说了,这个模块的名字是awLatestSearches,可以在[这里|http://www.autowitch.org/node/4352]下载到。
Blog分类: 

新的图片解决方式

[img_assist|fid=99|thumb=1|alt=夕阳晚归 (测试图片)|caption=测试使用的图片]
原来在blog中插入图片一直使用的是flickr和bbcode的float标签,主要是受原来空间的大小以及流量的限制,如果所有图片都放在本地很容易就会超过100M的限制,现在的空间不论是大小还是流量都已经足够用了,所以重新考虑把图片放在本地,另外一个考虑的因素是flickr+bbcode的几个缺点:

首先,用bbcode+flickr来放置图片,在给图片加上说明文字的时候不得不再使用div标签,非常麻烦,还要设置align属性;

其次,如果想把图片设置为点击看大图,则又是一番周折,这时bbcode已经没有办法实现了,不得不用html,并且还要在html里加入css式样,麻烦至极,这也是为什么我前面blog的插图都直接用大图的原因,可是用大图又影响页面的载入速度,左右麻烦。

于是决定使用image + img_assit模块来替代flickr + bbcode解决这个问题。呵呵,看到有些人抱怨4.6版的image模块功能削弱了很多,其实我觉得未尝不是一件好事,image模块最核心的作用就是上传管理图片,其他功能可以用img_assist或是album什么的来实现,实在不行用gallery也可以。其实插入图片的重头戏还是由img_assit来完成的,image不过扮演了一个铺路的角色。img_assist的体贴之处就是可以自己设置图片的显示模版,在加上css中自定义的属性就可以一劳永逸了。这样一来,不仅解决了flickr+bbcode的不足,还可以利用image模块本身的功能,调整观看原图,very good啦:)

Blog分类: 

写了一个分类的显示区块

Drupal升级到4.6之后,不知道什么缘故,原来的分类区块被省略掉了,没有了这个区块,多少会让人觉得不方便,所以自己写了一个分类区块,如下:

if (user_access('access content')) {
$result = db_query("SELECT d.tid, d.name, MAX(n.created) AS updated, COUNT(*) AS count FROM {term_data} d INNER JOIN {term_node} USING (tid) INNER JOIN {node} n USING (nid) WHERE n.status = 1 GROUP BY d.tid, d.name ORDER BY updated DESC, d.name");
//读取分类关键词,最新文章创建的时间,降序排列
$items = array();
while ($category = db_fetch_object($result)) {
$items[] = l($category->name .' ('. $category->count .')', 'taxonomy/term/'. $category->tid) .'
'. t('%time ago', array('%time' => format_interval(time() - $category->updated)));
}
//按照以前的格式显示分类区块,包括最后一片帖子的发布时间。
return theme('item_list', $items);
}
?>
我的blog的左侧有一个例子,如果你不需要显示“最近更新时间”,代码可以简化许多,hoho,其实没必要用PHP了,用HTML做个静态链接就行了:)

Blog分类: 

失误导致下午帐户被暂停:(

昨天晚上玩主机的命令行,拿着cron job的设定时间改着玩,结果最后把cron运行的时间设为10分钟就睡觉了,没有更改回默认值,于是就出了问题:我的Drupal不停地做MySQL Query,差点搞垮空间提供商的MySQL服务器,而我自己的数据库也因为不停地读写也出了不少毛病。结果下午的时候,空间提供商忍无可忍把我的帐户给暂停了。正好那时我在图书馆闲着无事,打开自己blog,看到了暂停服务的提示,起初不解,还义正严词噼里啪啦的打出一封长信去质问服务商。服务商的态度还不错,几分钟内就回信,你来我往几次,弄清了问题的根本,很快就恢复帐户了,呵呵,瞎折腾的代价:)

Free Tags: 
Blog分类: 

评论的Spam和新版的awtag

Spam真是无所不在,几周前刚被trackback发来的spam整过一次,一下在来了200多条引用,费了我不少的力气,没有想到今天又收到了评论的spam,几十条关于成人用品的,ft。不得不装上了spam.module,看看效果如何。

另外,awTags模块推出了4.6.0的版本,已经装上了,还不错,可以在这里下载。

Blog分类: 

解决了评论无法截取标题的问题

呵呵,我觉得是解决了,欢迎大家来测试一下,不过辜负了Drupal 4.6.0的良苦用心。

在comment.module里找到了截取标题相关的函数:

...
if (trim($edit['subject']) == '') {
// The body may be in any format, so we:
// 1) Filter it into HTML
// 2) Strip out all HTML tags
// 3) Convert entities back to plain-text.
$edit['subject'] = truncate_utf8(decode_entities(strip_tags(check_output($edit['comment'], $edit['format']))), 29, TRUE);
}
...
?>

Drupal考虑到标题的内容可以是任意格式,所以就写了这么一个复杂的函数来截取文字标题。可惜的是无法在兼容非西方语言。

...
if (trim($edit['subject']) == '') {
$edit['subject'] = truncate_utf8(strip_tags($edit['comment']), 29);
}
...
?>

我把这个截取函数简化了,刚才测试了一下,没有什么问题。不知道会不会还有问题。

Blog分类: 

空间转移完成!

空间转移完成!Name Sever的更改已经生效,发现了一个问题:只有首页能显示,其他的页面都无法显示。不过这是个小问题,已经解决了,用新的Drupal文件覆盖一下就可以了。

更换空间后,几乎所有的问题都解决了,首先,中文写的“评论”可以自动截取标题了;其次,Drupal自带的“搜索”功能可以正常使用了,原来这一切都是由于低版本PHP对UTF-8编码的支持比较差产生的。呵呵,昨天察看了一下,现在的空间提供商已经把PHP升级到最高的4.3.11了(不算PHP 5的话),MySQl的版本也是最新的,不错,不错,不用再担心软件环境对Drupal稳定性的影响了。另外这个空间还支持cron job,在poormancron推出新版本前还可以先试着用用,我对Linux下的命令行并不是很熟悉,所以Cron的设置只能全本照抄Drupal的说明了,只是细节处作了更改,不知道效果如何。cron job对Drupal很重要,包括 searching index都是cron完成的。

呵呵,看来迁移一次不是很麻烦,这点是drupal的优点,数据库设计的也比较好,便于来回的移动,即便是不懂SSH或是空间不支持SSH,只要用PHPmyAdmin就可以完成一切的工作。

另外现在这个空间有75G的月流量和5G的存储空间,比起原来那个免费的100M存储空间和5G月流量的免费空间要方便很多。原来的空间,所有的图片都只好放在Flickr上,一是怕占地方,而是怕超流量。现在不用担心这个了,呵呵,不过现在的空间第一年也是免费的,因为订了一年的《计算机世界》,收到N多优惠券,包括现在空间的一年免费使用。不过还看到1&1这个网站的三年的免费使用的优惠卷,但是考虑到那个网站的配置不如这个好,就先用着这个吧,实在不行一年后在换个窝窝:)

Blog分类: 

帮忙测试一下这个空间如何:)

今天才突然发现原来Drupal 4.6.0需要PHP 4.3.3以上的支持,而我现在仍然运行的是PHP 4.2.2,估计以后还会有不少问题,所以打算换一个空间。发现一个运行PHP 4.3.10的空间,但是不知道访问速度如何,想请大家帮忙测试一下,特别是国内的朋友,不知道这个空间在国内是不是可以顺利访问,我在那个空间作了一个简单的留言板:

http://209.51.153.26/~kzeng/guestbook/

访问试试看,比较一下那里和这里的速度,以及能不能访问等,多谢多谢!:)

Blog分类: