用Google的 CSE代替 Tag的显示

前段时间把MovableType博客的Tag静态化显示,但是只是URL更改而已,还是调用了mt-search.cgi这个文件,虽然在robots.txt文件里面禁止了搜索引擎的访问,但是从后台的Activity Log中还是看到有蛮多的搜索,一下子很多搜索可能会导致服务器响应不过来,CGI太消耗资源了。

CSE是Goolgle 提供的Custome Search Engine的缩写,如果你也想使用,那用你的Google账号去创建。在这里不介绍如何创建CSE,可以去Google一下。

找到有Tag显示的模板,在Design-->Templates-->Tags中和Design-->Widgets-->Tag Cloud这两个文件里把Tag的链接改一下就OK。就是找到下面这段代码(MT的版本不一样可能代码也有一些出入):

<a href="javascript:void(0)" onclick="location.href='<$mt:TagSearchLink encode_js="1"$>';return false;" rel="tag">

替换成类似下面的代码:

<a href="https://www.ezloo.com/search.html?cx=005728656415257879768%3Adpyg-qhu774&cof=FORID%3A11&ie=UTF-8&q=<$mt:TagName$>" rel="nofollow">

替换的代码每个帐户都不同,所以先去弄一个Google的Custom Search Engine,然后把搜索结果显示的代码拿出来分析一下,把显示搜索关键字字段替换成"<$mt:TagName$",我把rel="tag" 改成了rel="nofollow",如果关心PR的话,推荐改一下,具体可以查看《合理利用nofollow 标签来提升网页的PR》这篇文章。

替换完代码后,重建一下页面就可以。如果你改了一些模板,可能显示Tag的页面不仅仅刚才提到的两个。

我们还可以把博客的搜索也用Google的CSE来代替,只要找到Widget里面的Search,然后用Google的CSE代码去代替就OK!

现在所有的搜索都交给Google了,对服务器的压力会小很多。当然也有弊病,那就是在IE下,有时候控制搜索结果页面长度的"#"后面的数字不会显示,导致搜索结果下面有一段空白,我测试了,在FireFox下正常,不会显示这段空白。当然在搜索框里面输入关键字搜索的时候,不管在IE还是FireFox下都正常。

3 Comments

  1. search.html很简单的,我是新建了一个页面,不是新建template,然后扔Google提供的代码进去即可。代码都一样的,你修改一下宽度即可。