2006年12月13日星期三

blogger 3.0:运用google AJAX搜索API到你的博客,横向式

感谢作者 Hoctro,这个hack技巧实在太完美了~~~超级推荐大家使用。

具体效果如图: 或者参见本博客右上搜索。

安装方法:
第一步: 在下面的网址申请一个google AJAX搜索API的key :http://code.google.com/apis/ajaxsearch/signup.html
很容易就能申请到,只需输入你要申请的网址,然后同意google条款,确定~~得到一个key的代码。

第二步:把下面的css编码加入你的排头, 正好放在 ] ] ></b:skin> 后面, </head> 前面。
替换下面代码中的key为你在第一步申请到的key。还有再往下把你的博客地址写上去。看我的加深颜色的提示!两个wW9cday6o7K3g的位置替换成你申请地key。然后再把下面深色的http://hoctro.blogspot.com/博客地址变更为你的地址,地址下面的Hoctro's Place 替换成你的博客名称。



<script

src='http://www.google.com/maps?file=api&amp;v=2&amp;key=wW9cday6o7K3g' type='text/javascript'/>
<script

src='http://www.google.com/uds/api?file=uds.js&amp;v=1.0&amp;key=wW9cday6o7K3g' type='text/javascript'/>
<link href='http://www.google.com/uds/css/gsearch.css' rel='stylesheet' type='text/css'/>
<link href='http://www.google.com/uds/css/gsearch_darkgrey.css' rel='stylesheet' type='text/css'/>

<style type='text/css'>
/* primary colors */
.app_gsvsc { color : rgb(153, 170, 221); }
.search-form-complete_gsvsc div.search-form-save_gsvsc { color : rgb(170, 221, 153); }
div.search-form-save_gsvsc { color : #202020; }

/* selected tag */
div.tag-selected_gsvsc { color : rgb(170, 221, 153); }

/* hover colors */
div.more_gsvsc:hover { color : rgb(170, 221, 153); }
div.tag-control_gsvsc:hover { color : rgb(170, 221, 153); }
.search-form-complete_gsvsc div.search-form-save_gsvsc:hover { color : rgb(170, 221, 153); }
.footerBox_gsvsc a:hover { color : rgb(170, 221, 153); }
.playerBox_gsvsc a.title_gsvsc:hover { color : rgb(170, 221, 153); }

/* secondary colors */
div.more_gsvsc { color : rgb(204, 204, 204); }
div.tag-control_gsvsc { color : rgb(204, 204, 204); }
.searchForm_gsvsc { color : rgb(204, 204, 204); }
.search-form-input_gsvsc { color : rgb(204, 204, 204); }
td.edit-form-input_gsvsc input { color : rgb(204, 204, 204); }
div.edit-form-submit-box_gsvsc { color : rgb(204, 204, 204); }
.footerBox_gsvsc a { color : rgb(204, 204, 204); }
.playerBox_gsvsc a.title_gsvsc { color : rgb(204, 204, 204); }
div.edit-tag_gsvsc { color : rgb(204, 204, 204); }

/* special settings, not called out in standard color overrides */
.tiny-results_gsvsc div.tiny-video-result_gsvsc { border-color : #000000; }
.results_gsvsc div.video-result_gsvsc { border-color : #000000; }
.search-form-input_gsvsc {
color : #676767;
background-color : #e0e0e0;
}
.gsc-control {
  width: 100%;
}

</style>
  <script type='text/javascript'>
    var coreSearch;


    function SolutionLoad() {

    var controlRoot = document.getElementById("searchControl");

    // create the search control
    coreSearch = new GSearchControl();
    coreSearch.setLinkTarget(GSearch.LINK_TARGET_SELF);
    coreSearch.setResultSetSize(GSearch.LARGE_RESULTSET);

    // prep for decoupled search form
    var searchFormElement = document.getElementById("searchform");
    var drawOptions = new GdrawOptions();
    drawOptions.setSearchFormRoot(searchFormElement);
    drawOptions.setDrawMode(GSearchControl.DRAW_MODE_TABBED);

    // populate - web, this blog, all blogs
    var searcher = new GwebSearch();
    searcher.setUserDefinedLabel("The Web");
    coreSearch.addSearcher(searcher);

    searcher = new GblogSearch();
    searcher.setUserDefinedLabel("Blogsphere");
    coreSearch.addSearcher(searcher);

    searcher = new GblogSearch();
    searcher.setSiteRestriction("http://hoctro.blogspot.com/");
    searcher.setUserDefinedLabel("Hoctro's Place");
    coreSearch.addSearcher(searcher);

    searcher = new GblogSearch();
    searcher.setSiteRestriction("http://googleblog.blogspot.com/");
    searcher.setUserDefinedLabel("Google Blog");
    coreSearch.addSearcher(searcher);

    searcher = new GwebSearch();
    searcher.setSiteRestriction("http://www.blogger.com/");
    searcher.setUserDefinedLabel("Blogger");
    coreSearch.addSearcher(searcher);

    coreSearch.draw(controlRoot, drawOptions);

    }

    function doCoreSearch(q) {
      coreSearch.execute(q);
    }


    registerLoadHandler(SolutionLoad);

    function registerLoadHandler(handler) {
      var node = window;
      if (node.addEventListener) {
        node.addEventListener("load", handler, false);
      } else if (node.attachEvent) {
        node.attachEvent("onload", handler);
      } else {
        node['onload'] = handler;
      }
      return true;
    }
  </script>






第三步: 增加两个新的页面元素到你的博客, 注明是搜索,和搜索结果的页面元素名称,并且把两个页面元素放到你想显示的位置。

然后再用以下代码整体替换你刚刚加在博客上的两个页面元素:


<b:widget id='HTML41' locked='false' title='搜索' type='HTML'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<div id='searchform'>读取中/Loading...</div>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>

<b:widget id='HTML42' locked='false' title='搜索结果' type='HTML'>
<b:includable id='main'>
<b:if cond='data:title != ""'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<div id='searchControl'>读取中/Loading...</div>
</div>
<b:include name='quickedit'/>
</b:includable>
</b:widget>



第五步,恭喜,完成了~~看看效果吧~~~

注意有的浏览器可能会如图这样报错,点击ok忽略即可。


7 评论:

Jerry 说...

按照这个方法做到最后,出现了

由于格式错误,我们无法解析您的模板。请确保所有 XML 元素均已正确结束。
XML 错误信息:The element type "b:section" must be terminated by the matching end-tag "".

怎么解决?

GG 说...

你的代码复制的有问题,我重新检查了一篇,我给的代码没有问题。你把代码重新复制一遍!

GG 说...

我自己按照我写的文章重新申请个测试博客,3分钟就搞定了,只要按我写的来。
你看刚刚搞定的:http://gxo.blogspot.com/

张翼 说...

呵呵,我是新手,而且完全不懂html不过还是在半小时内成功了,一来祝贺自己,当然更重要的是感谢发稿人!

hover 说...

十分感谢gg
有个问题
我想把
按钮上的“搜索”换成“search”
该怎么办啊
我是个新手
还请指点
谢谢了
store696@gmail.com

GG 说...

不能改~~

hover 说...

非常感谢GG
我还有个问题
就是搜索的结果 目前默认不是我的站内搜索 我该怎么做呢
谢谢

发表评论: ☆欢迎灌水☆言论自由☆交流快乐☆