日期:2018年11月24日
天气:晴
今天照常:
- 成功克制了自己吃日料的欲望,没有浪费过多的时间
- 去了区块链的讲座,有个业界大佬叫做 PZ,听了一个半小时,感觉还是围绕着币在讲。目前只要扯上区块链,就完全跳不出币的元素。甚至还有在怂恿现场的观众买币。最后没有喝到奶茶,有点亏。
- 雨课堂居然有网页版,这个可以说是很舒服了,直接可以打印课件生成 PDF,之前还很难受的一页一页保存,简直傻的一批。
- 在电路课上成功完成了博客的搜索功能的配置。说简单也简单,然而最主要是明白其中的原理。
HEXO 的本地搜索功能配置
配置 HEXO 全局设置
首先要安装一个重要的依赖 hexo-generator-search
1 | $ npm install hexo-generator-search --save |
然后修改 _config.yml 文件使 hexo 开启搜索功能
1 | search: |
配置到这个程度之后,在执行hexo g
的时候就会在 public 目录下自动生成一个叫做search.xml
的文件,这个就是搜索功能的关键所在。
配置主题
设置 melody.yml 文件中的 local search 项目为 true,具体配置如下:
1 | local_search: |
其中,input_placeholder
是没有输入时显示的默认文本,可以自定义,hits_empty
是搜索到没有结果时候显示的内容。
改坑
对照插件和主题官方 document 设置之后,在站点上只显示搜索按钮和能够弹出搜索框,输入内容之后却没有出现搜索结果,这让人实在苦恼。
以为是主题的锅,所以找了很多用 melody 主题的博客,有的和我一样没有结果,有的有搜索结果。这令我十分费解,高概率出现问题的话,觉得这肯定是官方文档的教程出现错误了。
在一番冥思苦想之后,决定去看看 melody 的 issue 列表。结果真的让我喜出望外(有人也遇到了和我一样的问题)。
误改
在看到这张图之后,我立即就明白了。站点的运行实际上也是一个目录在跑,如果定位一个文件用了相对地址的话,那么在其他的路径下就很可能找不到它。
具体就是:
search.xml
是一个相对路径,只有在包含了这个文件的目录下,才可以准确找到它。/search.xml
是一个绝对路径,无论在站点的那个地方都可以找到它。
所以将 _config.yml 里面的
1 | search: |
改为
1 | search: |
就大功告成了。
真 - 改法
在修改成功后的 _config.yml 中有这样一段
1 | # URL |
原来是这样的:
1 | # URL |
区别就在于 http 和 https 的区别上。
在启用了 ssl 的站点上还设置站点域名为 http 的话,会导致 search.xml 这样的文件被链接到 http 协议上,而没有经过 https,这样自然就无法加载了。