emlog整合谷歌自定义搜索
其实谷歌自定义搜索很久以前就想用了,苦于没时间折腾,也没什么先例。后来看到搜搜用上谷歌的搜索了,很强大,和emlog自带的搜索比起来强大N倍!当然,前提是谷歌收录你~再后来就去折腾别的了,把搜索放一边去了,因为发现站内会用搜索的不多就先放放了。前几天又看到Ray Chow的一篇文章:《WordPress 整合 Google Ajax 搜索》,我仔细研究了一下,貌似可以移植到emlog上,而且还挺简单的。昨天自己摸索了一晚上,边做客服边码代码,在本地测试竟然成功了!那个鸡冻啊~最后整合了下样式表就拿来用了,现在本站的搜索就是谷歌的自定义搜索了,在搜索页面还是ajax搜索的哦~搜索结果直接随输入框动态显示,帅!
总结了一下,然后放出方法来了,适用于emlog用户,wp的童鞋请转向Ray Chow那里。
一、申请 Google 自定义搜索
点击此处创建属于你博客的自定义搜索引擎,要搜索的网站可填入www.example.com/*(www.example.com 为您的网站);在“外观”选项中,选择托管“搜索元素”、“两栏”布局并保存。还有一些其他选项敬请自行设置好,我不一一列举。
二、修改搜索框
你可以利用emlog知道的搜索框进行改造,一般是在侧边栏的。修改成如下形式:
<form id="searchform" action="<?php echo BLOG_URL; ?>search/"> <input type="text" value="" name="q" id="s" /> <input type="submit" value="搜一下" id="searchsubmit"/> </form>
我默认大家是跟我一样的格式,如果不一致,那么请自行修改相关参数!否则可能达不到预期效果!
三、建立搜索结果页
在你博客的根目录新建一个名为search的文件夹,注意search为第二步form的action的路径,请保持一致!然后在此目录下新建一个名为index.php的文件,文件内容如下:
<?php
/**
* 搜索
*/
require_once '../common.php';
define('TEMPLATE_URL', TPLS_URL.$nonce_templet.'/');//前台模板URL
define('TEMPLATE_PATH', TPLS_PATH.$nonce_templet.'/');//前台模板路径
$blogtitle = '搜索 '.$_GET['q'];//页面标题,可自行修改,参数'q'文本框input的name一致
include getViews('header');//加载头部文件
include getViews('search');//加载搜索结果页,这个在后面一步讲到
cleanPage(true);//清除注释并完成url优化(伪静态用)
?> 需要注意的地方我都标注了,请注意查看。
新建一个名为search.php的文件,内容有好多,且听我慢慢废话。
<?php if(!defined('EMLOG_ROOT')) {exit('error!');} ?>//下面是自定义搜索的代码,请自行修改成你自己的!
<div id="cse" style="width: 100%;">Loading</div>//id必须注意
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
google.load('search', '1', {language : 'zh-CN'});
google.setOnLoadCallback(function() {
var customSearchControl = new google.search.CustomSearchControl('014039152445023026385:svfhiphjeeq');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
var search = '<?php echo $_GET['q']; ?>';//注意q与上面文本输入框的name属性一致!
options.setInput(document.getElementById('s')); // 传递输入元素
document.getElementById('searchform').setAttribute('onSubmit',"document.getElementById('s').select(); return false;"); // 按下搜索按钮选中搜索框,并阻止表单提交
document.getElementById('s').value = search; // 设置搜索框的内容
options.setAutoComplete(true);//自动完成,不需要此功能可去除此句,建议留下
customSearchControl.draw('cse', options);//cse为上面div的id
customSearchControl.execute(search);
}, true);
</script>
<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
<?php
include getViews('side');//加载边栏
include getViews('footer');//加载底部
?> 将search.php上传到你所用的模板模板,切记不要传到search文件夹下!
至此,你的emlog已经结合了谷歌的自定义搜索了,写得比较急,如有不对,敬请留言指出!具体样式和一些自定义的东西可自行修改,要看效果,敬请使用本站右上角的搜索框!
此方法适用于emlog3.5.X
127#回复
2011-01-30 20:28