不久前安装了 Movable Type 插件Acronym,希望能够利用它来给文章中的某些缩略词添加解释,或者为文章中需要链接和解释的词汇进行处理,但效果十分不理想,自动链接和自动添加词汇解释这事我就一直放着。但要好好用好Movable Type,这事最终还是需要解决的了,这两天仔细找了一下,发现了一个能够实现相同功能的Movable Type 插件 QuickLink(由于国内部分网络无法访问该站点,本站特意提供了一个本地下载链接)可以满足本站的应用需求。
安装QuickLink插件后通过其管理页面,用户可以轻松的管理一个列表,指明当文章中出现什么文字时,需要自动链接的目标地址。而利用这自动链接的功能,自然也就可以为需要解释的词汇写一个页面,然后指明当文章中出现这一文字时自动链接到这一页面,实现本站所需的自动链接和自动为某些词汇提供解释的功能。另外,该插件还支持自定义正则表达式进行替换,这对于喜欢Perl,喜欢Movable Type的用户来说当然是最好不过的。
QuickLink的安装非常简单,只需要在你的Movable Type安装文件夹下“plugins”中创建一个“QuickLink”文件夹,然后解压缩下载的插件并将其中的几个文件夹和文件放到里面,然后在后台主菜单中进入博客管理页面,单击下方的插件链接“Edit My QuickLinks”就可以开始管理自动链接词汇的列表,此后,在编辑文章时,插件就会自动发挥作用,为你指定的词汇自动链接了。
不过,很不幸,和其他许多国外的Movable Type插件一样,不是说你安装上就能够毫无问题的使用,在使用QuickLink的过程中同样是问题多多,下面本站研究并最终采用的解决方法分享如下:
解决管理界面显示问题
首先,进入QuickLink管理界面,如果你发现管理界面乱七八糟,一塌糊涂,那么,很明显,你与我一样,Movable Type和作者不是安装在同一种路径上,你需要动手修改一下该插件压缩包中“tmpl”文件夹里的“header.tmpl”,将CSS文件的路径指向你的Movable Type插件的路径,避免由于管理界面的显示错误影响你管理自动链接的列表。
让插件支持为扩展内容自动链接
QuickLink在文章中,只作用于文章的“主体内容”,“扩展内容”输入框中的内容是不会被自动链接的,怎么办?想让它支持也是可以的,手动修改一下程序吧。要实现这一功能,你需要在QuickLink插件文件夹中打开QuickLink.pl,在其中的“sub quicklink”部分,作以下修改。
将
sub quicklink {
my ($eh,$obj) = @_;
my $blog_id = $obj->{column_values}->{blog_id};
my $entry_text = $obj->{column_values}->{text};
$entry_text = process_quicklinks($entry_text,$blog_id);
$obj->{column_values}->{text} = $entry_text;
}
改为
sub quicklink {
my ($eh,$obj) = @_;
my $blog_id = $obj->{column_values}->{blog_id};
my $entry_text = $obj->{column_values}->{text};
$entry_text = process_quicklinks($entry_text,$blog_id);
$obj->{column_values}->{text} = $entry_text;# 使扩展内容部分也能够自动添加链接
my $ext_text = $obj->{column_values}->{text_more};
$ext_text = process_quicklinks($ext_text,$blog_id);
$obj->{column_values}->{text_more} = $ext_text;}
重新编辑链接重复等杂七杂八的错误
使用QuickLink的过程中,发现有时候会由于文章的图片链接等代码部分中有自己设定的词汇,QuickLink插件自动又为这些词汇增加链接,使文章显示出错?发现在编辑文章时,已经加了链接的词汇又再次被加一次链接?发现设置中文词汇的时候,经常很混乱,一些不需要被替换的也被替换掉?例如希望为“和服”加链接,插件却将“和服务”中的“和服”也自动加了链接。以上种种,有些是可以通过修改程序避免的,而中文断字之类的问题却是很难解决的,而我在考虑这些问题的时候,想到了一个简单但有效的解决方法。
这就是修改一下程序,使程序由于只在需要替换的词汇前后有一个空格的时候才执行替换,这样一来,由于文章中图片链接等内容不会是恰好某词汇前后是有空格的,而再次编辑文章时,由于原来的词汇如果符合替换条件已经加了链接,在链接的代码中该词汇也不再是前后有空格的,就避免了重复加链接的问题,而由于要替换的词汇,我们在编辑文章的时候,都是由我们自己决定需要QuickLink工作,才在前后加上空格的,自然就不可能存在替换错中文字的问题。唯一的麻烦是我们在编辑文章时需要多按两下空格,但却解决了所有可解决和不能解决的问题,非常好。
这同样需要修改QuickLink插件文件夹中的QuickLink.pl,这次修改的是最后的“sub process_quicklinks”部分:
将
$cmd = '$str =~ s/\b('.$pattern.')\b/<a href=\"'.$href.'\">$1<\/a>/'.$options;改为
$cmd = '$str =~ s/\s+('.$pattern.')\s+/<a href=\"'.$href.'\">$1<\/a>/'.$options;
