因为mt-search.cgi进程把我整台服务器拖垮了!所以前段时间关闭了MT的search和TAG功能!
最近公司里稍微空点,才想起来把这个问题修复~
以下是转自:http://www.thinkjam.org 的操作说明书:
必备插件(Required Plugins)
TagSupplementals
MT-XSearch
安装步骤(How to setup)
安装TagSupplementals
从其官方网站下载此插件,解压缩后,将TagSupplementals.p文件拷贝/上传到Movable Type的plugins目录。安装MT-XSearch
从这里下载mt-plus插件,解压缩后,将下述文件拷贝/上传到你的Movable Type程序安装目录。
mt-xsearch.cgi
plugins/mt-xsearch.pl
extlib/MT/XSearch.pm
若主机空间为*nix系统,请设置mt-xsearch.cgi的属性为755。
按照下述方法修改mt-xsearch.cgi和plugins/mt-xsearch.pl文件,以让MT-XSearch支持多国语言,并修复其Bug。
[--- mt-xsearch.cgi.bak
Fri Aug 27 12:06:24 2004+++ mt-xsearch.cgi Sat Jun 11 02:58:33 2005@@ -41,7 +41,8 @@ $ctx->stash('CGI',$q); my $out = $tmpl->build($ctx) or die "Building search template failed: ".$tmpl->errstr;- print $q->header.$out;+ my $charset = $mt->{cfg}->PublishCharset;+ print $q->header(-charset=>$charset).$out; }; if ($@) { print "Content-Type: text/html\n\n";
--- plugins/mt-xsearch.pl.bak Sat May 14 06:01:19 2005+++ plugins/mt-xsearch.pl Sat Jun 11 00:31:39 2005@@ -63,7 +63,7 @@ my $pages = $limit ? ($count-($count % $limit)) / $limit : 1; $pages += ($limit && $count % $limit) ? 1 : 0; my $offset = $xsearch->args->{offset} || 0;- my $current = $offset / $limit + 1;+ my $current = $limit ? ($offset / $limit + 1) : 1; $ctx->stash('MT::XSearch::current_page',$current); $ctx->stash('MT::XSearch::pages',$pages); my $builder = $ctx->stash('builder');]
如果主机空间安装有CGI::Cache模块,则可以按照下面的方法修改mt-xsearch.cgi,用缓存来让MT-XSearch提供更好的负载。
--- --- mt-xsearch.cgi.bak Fri Aug 27 12:06:24 2004+++ mt-xsearch.cgi Sat Jun 11 03:44:32 2005@@ -17,6 +17,7 @@ } use CGI;+use CGI::Cache; use MT; use MT::ConfigMgr; use MT::Template;@@ -27,10 +28,13 @@ my $mt = MT->new( Config => $MT_DIR . 'mt.cfg', Directory => $MT_DIR ) or die MT->errstr; my $q = new CGI;+ CGI::Cache::setup({ cache_options => { cache_root => './cache', default_expires_in => 3600 } }); my $blog_id = $q->param('blog_id') or die "Missing parameter blog_id"; my $key = $q->param('search_key') or die "Missing parameter key";+ CGI::Cache::set_key($q->Vars);+ CGI::Cache::start() or exit; my $search = MT::XSearch->execute($q); my $tmpl = MT::Template->load( { name=>'XSearch '.$key, @@ -41,7 +45,14 @@ $ctx->stash('CGI',$q); my $out = $tmpl->build($ctx) or die "Building search template failed: ".$tmpl->errstr;- print $q->header.$out;+ my $charset = $mt->{cfg}->PublishCharset;+ my @m = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);+ my @w = qw(Sun Mon Tue Wed Thu Fri Sat);+ my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime(time);+ my $now = sprintf("%3s, %02d %3s %04d %02d:%02d:%02d GMT",+ $w[$wday], $mday, $m[$mon], $year+1900, $hour, $min, $sec);+ print $q->header(-charset=>$charset,-Last_Modified=>$now).$out;
+ CGI::Cache::stop(); }; if ($@) { print "Content-Type: text/html\n\n";
你会看到,在上面这段程序中,我们定义了缓存使用的目录--“./cache”,以及缓存的持续时间--3600″(1个小时)。你也可以修改成其它需要的值,但一定要根据程序中的情况建立一个放置缓存的目录,并为其赋予写入权限(一般设置权限为777即可)。这里,我们要在Movable Type的安装目录下建立一个名为cache的文件夹,设置其权限为777。
增加一个用于Tag搜索的模块XSearch TagSupplementals
在你的Blog管理界面中点击“模板”,选择“模块”标签,按下“新增模板模块”链接,在出现的窗口中填入模块名字和模块的模板信息。其中模块名字为“XSearch TagSupplementals”,模块的模板则根据你自身的情况来制作,下面给出一个样历:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=<$MTPublishCharset$>" /><title>Tag: <$MTSearchString decode_url="1"$> on <$MTBlogName$></title></head><body><h2><a href="<$MTBlogURL$>tags/">Tag</a>: <em><$MTSearchString decode_url="1"$></em></h2><MTSearchResults><MTSearchHeader>Results found: <$MTSearchResultCount$> <ol></MTSearchHeader><li><a href="<$MTEntryLink$>"><$MTEntryTitle$></a></li><MTSearchFooter></ol></MTSearchFooter></MTSearchResults><MTNoSearch><p>No search performed.</p></MTNoSearch><MTNoSearchResults><p>Nothing found.</p></MTNoSearchResults><h3>Related Tag</h3><MTXSearchTags><ul> <MTRelatedTags> <li><a title="Tag: <$MTTagName$>" href="<$MTBlogURL$>tag/<$MTTagName encode_url="1"$>"><$MTTagName$>(<$MTTagCount$>)</a></li> </MTRelatedTags></ul></MTXSearchTags></body></html>
上面只是一些最基本的元素,你可以根据自己的具体情况把样式表和DIV层套用上来。
使用(Usage)
最简单的,将所有的<$MTTagSearchLink$>换成<$MTTagXSearchLink$>。
如果此前为Movable Type的内置Tag做过URL_rewrite,则请编辑.htaccess 文件,将其中有关Tag的部分修改为:
RewriteEngine on RewriteRule tag/(.+) /mt/mt-xsearch.cgi?
blog_id=1&search_key=TagSupplementals&search=$1
其中/mt/为Movable Type的程序路径,blog_id为你的Blog在整套Movable Type中的ID号。
相关下载(Related Download)
TagSupplementals
MT-Plus
无CGI::Cache模块的mt-xsearch.cgi
有CGI::Cache模块的mt-xsearch.cgi
修改过的mt-xsearch.pl
