今天介绍的Blog站内搜索,最早我是在dodo的Blog中看到的。
我对那篇文章进行了简单研究,作了一点儿无关紧要的修改,就变成今天的这篇内容。
在介绍用Google实现站内搜索的第一篇Blog中,我们说过,那个方法的最大好处是采用JavaScript的事件取代了Form提交方式。
这是由于Donews天生条件造成的,由于Donews的Blog本身页面是装在一个Form里的,因此,通过Form提交方式进行交互处理,在Donews Blog中都很有难度。
但今天的方法,是通过强制结束原Form的方法做了点手脚,因此,称为小花招再恰当不过了。
对于在Donews Blog中添加Google Adsense的同学,都会发现,只能使用一种服务。本来,Google Adsense是提供两种服务的,一个是AdSense for content,一个是 AdSense for search。但是,AdSense for search的代码也是通过Form提交的方式实现的,因此,直接复制到Donews中是不能正确工作的。
但如果你能够理解今天的方法,理论上,是可以通过改变代码,在Donews网页中添加 AdSense for search的功能的。考虑到我没有那么贪心,因此,就没有花时间进行尝试和测试。而且,原理上,Google声称改变其广告代码是被禁止的行为。但我想,如果你能看懂今天的这段代码,那么自己试验一下,应该也不是难事。
为Donews Blog添加Google站内搜索的第二种方法的代码如下:
<script language="JavaScript">
<!--
document.write("</form><h3>站内搜索 By Google</h3><FORM method=GET action=\"http://www.google.com/search\">");
document.write("<IMG SRC=http://www.google.com/logos/Logo_25wht.gif border=0>");
document.write("<INPUT TYPE=hidden name=ie value=utf-8>");
document.write("<INPUT TYPE=hidden name=oe value=utf-8>");
document.write("<INPUT TYPE=hidden name=\"hl\" value=\"zh-CN\">");
document.write("<INPUT TYPE=text name=q size=20 maxlength=255 value=\"\"><br>");
document.write("<INPUT TYPE=submit name=btnG VALUE=\"搜索\">");
document.write("");
document.write("<INPUT TYPE=hidden name=domains value=\"blog.donews.com/laobai\">");
document.write("<INPUT TYPE=hidden name=sitesearch value=\"blog.donews.com/laobai\" checked><br>");
document.write("</FORM><form method=post id=form2 name=form2 onsubmit=chggo()>");
document.write("<input type=\"hidden\" name=\"__VIEWSTATE\" value=\"\" />");
function chggo(){
document.getElementById("form2").action=document.getElementById("Form1").action
}
//-->
</script>
注意,把代码复制到你的公告栏中后,将两处黑体字blog.donews.com/laobai,换成你自己的Blog首页地址。
后记:
Donews Blog小花招10--Blog站内搜索(1)发表后,引来了一系列的小故事。
1、有人发现EncodeUtf8那个函数很有用,偷走了;
2、webleon发现代码中有Google的广告信息,我给去掉了;
3、keso声明那段代码是Ben提供的;
4、ben站出来声明对那段代码拥有CC版权;
5、我又一次仔细的看了看那段代码,并进行了一些测试,发现在中文操作环境里,UTF8那个函数也不是必须的,因此进一步把Ben的代码简化如下:
<h3>Google</h3>
<script language="javascript">
function search () {
var q=document.getElementsByName("q")[0].value;
var link="http://www.google.com/custom?domains=" + website + "&sa=Search&sitesearch=" + website + "&ie=UTF-8&oe=UTF-8&hl=zh-CN" + "&q=" + q ;
window.open(link);
}
</script>
<script language="javascript">
var website="http://www.donews.net/keso";
</script>
<input type="text" name="q" />
<input type="button" value="Google本站" onclick="javascript:search()"/>
此主题的相关链接:
《Donews Blog的非官方使用指北》标准操作系列
《Donews Blog的小花招》系列
Trackback: http://tb.donews.net/TrackBack.aspx?PostId=577655