威尔源码网

Typecho-Plugin-ExSearch:高能玩法!将内容静态化,使搜索在前端进行。

Typecho 中没有单独的搜索页,绝大多数主题的所谓「搜索页」只是为搜索框单独写了一个样式,具体的搜索还是靠页面跳转。我对 Typecho 的搜索从来没有满意过,因此这次我想办法将其增强。

Typecho-Plugin-ExSearch:高能玩法!将内容静态化,使搜索在前端进行。

使用

  • 下载本仓库(master分支):

  • 解压文件夹,并将文件夹重命名为ExSearch

  • 上传至插件目录,在后台启用

  • 保存一次插件设置,并点击重建索引。

在主题中,在任何可点击的元素上加上class="search-form-input",点击即可唤起搜索框。

自定义钩

默认的,点击搜索结果时会直接跳转至对应的页面,但是若你的主题使用了AJAX或者PJAX技术,你可能需要使用自定义的钩子来处理点击事件(例如发起一次PJAX操作)。在页面中插入一个函数如下:

<script>
function ExSearchCall(item){
    // your code
}
</script>

其中,item是一个JQuery对象。举例:

功能 ExSearchCall(项目){     如果(项目&&  项。长度){         $('的.ins闭')。click(); //关闭搜索框
        让 url =  item。attr(' data-url '); //获取目标页面URL 
        $。pjax({url : url,
            容器: '#pjax-container ',
            片段: '#pjax-container ',
            超时: 8000,}); //发起一次PJAX请求
    }
}

可能的问题

在SQLite数据库下可能有问题,请知悉。若你做出了修复,欢迎提出拉请求。

如果你的站点内容过多导致建立索引失败,请在Plugin.php第136行左右的位置,取消下面两行的注释:

$ sql  =  ' SET GLOBAL max_allowed_packet = 4294967295; ' ; $ db - > query($ sql);

注意,这需要高级权限你也可以手动对数据库执行:

mysql > SET GLOBAL max_allowed_packet = 4294967295 ;

我需要为 Typecho 添加搜索实时响应、高亮与预览功能。泽泽的搜索插件通过 hack Typecho 的内部方法实现了高亮与过滤功能,但是仍然不能实现实时响应。其实也能理解,如果跟随输入实时响应的话,数据库的压力大大增加,而且网络压力也大大增加。必须另辟蹊径。

我在为什么每个人都应该有自己的 Wiki 中提到自己启用了 Wikitten 这个 Hexo 主题作为自己的 Wiki 站点主题。其中很重要的一个原因就是它舒服到无以复加的搜索体验。Hexo 这样无后端的博客为我提供了新的思路:将内容静态化,使搜索在前端进行。这样不仅降低了数据库压力,节省了网络请求数,同时也不用与 Typecho 的内部方法作斗争。唯一的缺点是对内容过多的站点来说需要传输一定数量的内容到前端,但这通过缓存静态化与前端长缓存也能缓解。

最终的结果便是这个插件。


隐藏资源

您需要留言评论后,刷新页面才能查看此资源!

本文链接:http://www.wller.cn/post/1756.html

版权声明:
1、本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有!
2、若您需要使用非免费的软件、源码或服务,请购买正版授权并合法使用!
3、本站发布的内容若侵犯到您的权益,请联系站长删除,我们将及时处理!
4、本站所有资源均是收集而来,资源均不包含安装服务和技术支持!且不知道能不能用,请谨慎下载
5、免费源码均来自网络收集,不保证完整性和可用性
6、本站不提供任何技术支持,源码搬运其他网络站点,站长不会这种技术,请自行测试
7、免费源码适合有基础的用者,需要创建数据及修改模板标签、调试修改路径等调试工作
8、欢迎前往http://www.wller.cn 购买虚拟主机,本站所有源码及模板均支持。
9、注意:本站不提供任何技术,资源收集网络,如有侵权,联系我删除。

发表评论