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分类: 

评论的Spam和新版的awtag

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

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

Blog分类: 

正在写一个Drupal的module/filter

试着自己写一个Drupal的Module,其实是一个filter,也就是前阵子讨论过的数学符号过滤器,用来显示数学表达式。看了一下Drupal的函数手册,帮助挺大的,基本上这个模块已经完成了,可以在 管理->模块 中显示,也可以在输入方式中显示,并且没有出错的提示,so far so good, 但是最重要的地方却是:这个过滤器不能过滤显示数学符号 !(peng,被一棒子打到)

不管怎样,先把这个失败的模块/过滤器贴在这里吧,和大家讨论一下,看看问题出在什么地方。

function math_help($section) {
//让模块显示在模块列表中。这部分没有问题。
switch($section) {
case "admin/modules#description":
return t("A filter module that converts ascii to math symbols");
break;
case "filter#long-tip":
return t("useful math filter");
break;
case "filter#short-tip":
return t("math filter");
}
}
function ASCIIMathCallback($mtch_arr){
//估计问题出在这里,我直接按照ascii to math的作者定义的函数超过来没有仔细研究它的引用的两个页面的函数。
$txt = trim($mtch_arr[1]);
include('modules/ASCIIMathPHP.cfg.php');
require_once('modules/ASCIIMathPHP.class.php');
static $asciimath;
if (!isset($asciimath)) {
$asciimath = new ASCIIMathPHP($symbol_arr);
}
$math_attr_arr = array( 'displaystyle' => 'true' );
$asciimath->setExpr($txt);
$asciimath->genMathML($math_attr_arr);
return($asciimath->getMathML());
}
function math_filter($op, $delta = 0, $format = -1, $text = '') {
//这部分也没有问题,可以在输入方式中正确显示。
switch($op) {
case "list":
return array(t("math"));
break;
case 'description':
return t('math symbols.');
break;
case "process":
return preg_replace_callback('/`(.*?)`/s', 'ASCIIMathCallback', $text);
break;
default:
return $text;
}
}
?>

关于ascii math php的介绍

Free Tags: 
Blog分类: 

Drupal 4.6的phptemplate.engine问题和trackback CVS版的问题

成功的把数据库移植到了4.6.0版,只是作为一个测试,现在这个主版面还是4.5.2版本的,测试版本在这里。但是发现了一个问题,phptemplate.engine在4.6版下无法正常运行,在Sam这里看到他也遇到了这个问题,在Drupal的主站也有人讨论这个问题,解决的方式是下载一个CVS版的phptemplate,但是这个Drupal网站网站上至少有三个CVS版的phptemplate.engine,如果想升级成功只好一一试过了.

另外一个比较糟糕的问题来自于CVS的Trackback,一直都觉得这是一个没有完成的module.CVS在改进了trackback的显示版本后,居然没有定义一个block或是页面来显示最新接受到的trackback,所以我根本就不知道我是否收到了新的trackback,现在唯一的办法是使用databse模块检查数据库中的trackback_received数据表,很是麻烦,这两天钻研一下看看能不能建立一个读去最新Trackback的模块或是页面,方便检阅新的引用.

Blog分类: 

Drupal的cron任务

以前一直没有仔细看Drupal的readme文件,只要安装完毕便是万事大吉。运行不出问题,也没有去考虑钻研一下文献,结果慢慢的发现有了一个问题:数据库的尺寸越来越大,天啊,今天到了不可想像的80M,打开phpmysql,发现accesslog这个table尺寸巨大,还有cache这个table,到管理->设置->统计数据中把保留log的时间调短,可惜还是于事无补,数据库的尺寸一点都没有减小,于是爬上drupal总站,大喊一声,Drupal怎么这么挫,顿时来了不少热心先生,仔细讨论一番,原来是我一直大意,没有设置cron任务。

Drupal的一些模块有定期运行的任务,而这个任务必须由cron来引发。这个大致是类似windows下的“计划任务”,定期自动运行一些程序,譬如你决定周五晚上8:00杀毒一样。所以为了使得一些程序可以定期的清理数据库,丢弃不需要的数据,你必须设置cron任务。最简单的激活cron任务的方法就是访问:http://你的安装目录/cron.php 这是一个手动的比较笨的办法,当然最好就是能够自动运行,不过这需要你的服务器支持SSH,并且你还要熟悉一些常用的命令行,你既然能耐心看我罗嗦到这里,肯定是不会用这些复杂的,这儿有一个简单的方式,就是使用poormanscron.module,它 的原理其实也很简单,有访客访问你的网站的时候,通过对你设定的cron时间进行判断,如果该运行cron了,就在访客浏览你的网页时利用他的浏览激发cron任务。所以,只要安装了这个模块就可以省却不少麻烦。不妨试试,我今天使用后,accesslog出了一点小小的问题,不过刚才用repair table修复了,现在已经好了。

Blog分类: 

Node Alias模块

/**
* @file
* Allows module to be nodealiasd giving it an alias.
*
*/
/**
* Implementation of hook_help().
*/
function nodealias_help($section) {
switch ($section) {
case 'admin/modules#description':
return t('Enables users to make a node alias');
case 'admin/help#nodealias':
return t("Need something here");
case 'node/add/nodealias':
return variable_get('nodealias_help', '');
case 'node/add#nodealias':
return t("A node aliasd node provides an alias to a node");
}
}
/**
* Implementation of hook_node_name().
*/
function nodealias_node_name($node) {
return t('node alias');

Taxonomy upgrade extras: 

Drupal的两个新模块:pureftp模块和 node alias模块

又有两个新鲜出炉的模块:pureftp模块和node alias模块。pureftp模块使用pureftp服务来管理ftp 用户,把Drupal和Pureftp整合在一起。Pureftp本身是一个开放代码的跨平台ftp服务器端软件,它的介绍在这里

Node alias模块的用处更大一些,不过作者还没有申请到CVS帐户,不能直接提供模块下载,在本文的结束我会把它的源码贴出,欢迎大家测试。Node Alias模块(以下简称为NA模块)主要的功能有两项,都挺实用的。

Drupal允许把任何内容(包括blog, story, 静止页面)加入书籍(book)中,但是会导致两个小问题。第一,当你把一个blog页面(或是story,静止页面)通过“大纲”加入书籍中后,你的blog页面下端会出现类似书籍页面的“上一页”,“下一页”,“返回首页”等导航链接,影响了blog本身的美观,而NA模块就可以解决这个问题。当你把node alias用大纲加入书籍后,书籍的导航链接只在访客从书籍中浏览这个页面时才出现,如果访客以blog的形式浏览这个页面,则不会显示任何书籍导航链接,也就是是说链接通过对浏览的场景的判断的而显示或是隐藏。NA模块的第二个作用就是可以把一个页面加入不同的书籍中。呵呵,所以觉得这个模块其实挺使用的,特别是在把老的blog的内容整理称为书籍的时候:)

NA模块的源码如下:

点击这里

Blog分类: 

Drupal + Gallery 2: 最新演示

Drupal的Gallery 2 模块推出了好几个测试版,一直都没有试一下,不过今天浏览作者的网站时看到了一个不错的demo,可以和Drupal的image模块对比一下,呵呵,感觉效果不错,不知道最近推出的album模块是否可以与Gallery 2媲美。

另外发现,这款Gallery 2模块其实对于Video文件也可以生成缩率图,注意看名叫Video的子影集,其实它里面是一段Video。呵呵,这个或许也可以作为Drupal多媒体解决方案之一吧,和最新的media模块有些相似。

另外,就中文Drupal的新闻而言,Hiweed似乎彻底放弃了Drupal的汉化开发,以前以为它的Drupal部分只是暂时的无法访问,现在看来Hiweed似乎决定专注Linux了。Drupal马上就要推出4.6.0版本了,原来的4.5.0版本的汉化可能需要升级,正在考虑是不是向Drupal申请一个CVS帐户,接手Hiweed做汉化,或者有比较感兴趣的同好,大家可以一起来汉化新版本的的Drupal。

Blog分类: 

Drupal的两个新模块和麻烦丛生的Spread Firefox主题

今天Drupal又推出了两个新的模块:AlbumEzmlm。 Album模块需要image和folksonomy模块的支持,估计是对image模块的改进,它用到了folksonomy模块,说明它应该像flickr一样支持图片标签(Tag)。既然称作Album,不知道会不会和Gallery比较相似,开发者没有给Demo。呵呵,整合Gallery的Drupal Gallery Module的开发一直都没有停止,可是并没有推出正式版,估计还在测试中。

Ezmlm模块应该是 easy mailing list management的缩写吧:P 它是一个管理邮件列表和订阅的工具,可以允许访问者订阅任何特定的页面和区块。

除了这两个模块,这阵子还有两件关于主题的“大事”。第一个是FriendsElectric主题的发布,这款主体还有一个衍生的Lite版本,是一个没有任何table完全用div定义的主题。另一个便是争论不断的Spread Firefox主题了。这本来是www.spreadfirefox.com使用的主题,该网站是由Drupal的衍生版本CivicSpace搭建的,不久前有人把它的主题port到Drupal,看上去蛮清爽的,但是block的显示问题却一直没有解决,不少Drupal使用者为此放弃了这款主体,还有不少在讨论改进,呵呵,可以根据这个主题改进一下我现在使用的主题:)

Blog分类: