在 Typecho 上使用本地搜索

Author Avatar
黎明余光 2017年09月16日
  • 在其它设备中阅读本文章

本地搜索大概是最炫酷的了吧,但是似乎没找到 Typecho 的类似 hexo-generator-search 的项目,那就自己动手咯

想法


最初是在主题的 issue 里看到的(typecho-theme-material#10),感觉这想法很伟大,但 似乎都认为这是静态博客的东西,Typecho 上好像没人干过这事,就自己写生成咯
然而并看不懂 Typecho 插件开发文档,只能集成在主题里,设置可能要麻烦点

踩坑

参考 viosey 写的归档页,似乎能来改改,然后就感到了 Typecho 的历史大坑
tags 的输出,官方好像只给了 <?php $this->tags(',', true, 'none'); ?> 这么一种获取方法,然而它直接输出的是一堆 <a> 标签,明显不能用... 那就只能抛弃 tags 的输出了...

瞎写

最终实现的 page-search.php 长这样

因为 <![CDATA[]] 会导致搜索爆炸,就不在这贴代码了
https://github.com/LiMingYuGuang/typecho-theme-material/blob/master/page-search.php

不知道 PHP 能不能像 json_encode 那样生成 XML,就直接暴力输出了

用法

创建一个独立页面,建议选择隐藏,模板选择 文章索引
然后在设置中填入,e.g.
snipaste_20170916_100732.png

效果

回首页自己试啊

本文链接:https://blog.lim-light.com/archives/local-search-for-typecho.html
本文采用 CC BY-NC-SA 3.0 CN 协议进行许可,阅读 相关说明

    Jrotty
    Jrotty  2017-12-16, 13:37

    本地搜索限制下高度,在让其可滚动比较好嘛,例如max-height: 600px;overflow-y: auto;

    Jrotty
    Jrotty  2017-10-09, 08:48

    typecho 的 tag 的文档就这么一句
    <?php $this->tags(',', true, 'none'); ?>
    说明:(',', true, 'none') 第一个单引号间的逗号代表标签与标签的间隔用逗号隔开,true 是标签以超链接形式输出flase则只输出文字,none 为该文章没有标签时显示的提示信息可为空。

      黎明余光
      黎明余光  2017-10-10, 22:26

      能取消超链接的话,有空去改一下
      不得不说我没找到这句话,就看到那个主题开发里压根没说明的那句ヽ(ー_ー )ノ

        Jrotty
        Jrotty  2017-10-11, 08:06

        可以取消连接的,官方的那个文档写的也不全哈,我起初也不知道的

    Jojo
    Jojo  2017-09-30, 09:50

    dalao厉害。。。٩(๑´∀`๑)ง做成swiftype那种弹出来的感觉更不错。