• 正文概述
  • 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 =  itemattr' data-url '); //获取目标页面URL 
            $pjax({url  url,
                容器 '#pjax-container ',
                片段 '#pjax-container ',
                超时 8000,}); //发起一次PJAX请求
        }
    }

    可能的问题

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

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

    $ sql  =  ' SET GLOBAL max_allowed_pa​​cket = 4294967295; ' ; 
    $ db - > query($ sql);

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

    mysql > SET GLOBAL max_allowed_pa​​cket = 4294967295 ;

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

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

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

    本站所提供的主题和插件等资源及信息均搜集自互联网,我们无法保证所提供资源的安全性、可用性、可靠性、稳定性,用户在下载后及使用前需对其进行安全检测和漏洞分析,因使用本站提供的资源所导致的任何损失(包括但不限于:服务器被入侵、服务器感染木马病毒、网站被挂马、网站内容或文件被篡改、服务器被留下后门、服务器数据丢失、网站数据丢失等)全部由用户自行承担,本站不承担任何法律责任及连带责任。
    79UI网 » Typecho-Plugin-ExSearch:高能玩法!将内容静态化,使搜索在前端进行。

    发表评论