HEXO Local Search 配置

日期:2018年11月24日
天气:晴

今天照常:

  1. 成功克制了自己吃日料的欲望,没有浪费过多的时间
  2. 去了区块链的讲座,有个业界大佬叫做 PZ,听了一个半小时,感觉还是围绕着币在讲。目前只要扯上区块链,就完全跳不出币的元素。甚至还有在怂恿现场的观众买币。最后没有喝到奶茶,有点亏。
  3. 雨课堂居然有网页版,这个可以说是很舒服了,直接可以打印课件生成 PDF,之前还很难受的一页一页保存,简直傻的一批。
  4. 在电路课上成功完成了博客的搜索功能的配置。说简单也简单,然而最主要是明白其中的原理。

HEXO 的本地搜索功能配置

配置 HEXO 全局设置

首先要安装一个重要的依赖 hexo-generator-search

1
$ npm install hexo-generator-search --save

然后修改 _config.yml 文件使 hexo 开启搜索功能

1
2
3
4
search:
path: search.xml
field: post
content: true

配置到这个程度之后,在执行hexo g的时候就会在 public 目录下自动生成一个叫做search.xml的文件,这个就是搜索功能的关键所在。

配置主题

设置 melody.yml 文件中的 local search 项目为 true,具体配置如下:

1
2
3
4
5
local_search:
enable: true # or false
labels:
input_placeholder: Search for Posts
hits_empty: "We didn't find any results for the search: ${query}" # if there are no result

其中,input_placeholder是没有输入时显示的默认文本,可以自定义,hits_empty是搜索到没有结果时候显示的内容。

改坑

对照插件和主题官方 document 设置之后,在站点上只显示搜索按钮和能够弹出搜索框,输入内容之后却没有出现搜索结果,这让人实在苦恼。

以为是主题的锅,所以找了很多用 melody 主题的博客,有的和我一样没有结果,有的有搜索结果。这令我十分费解,高概率出现问题的话,觉得这肯定是官方文档的教程出现错误了。

在一番冥思苦想之后,决定去看看 melody 的 issue 列表。结果真的让我喜出望外(有人也遇到了和我一样的问题)。

问题原帖:Local Search Failed #116

Molunerfinn commented on Jul 12

误改

在看到这张图之后,我立即就明白了。站点的运行实际上也是一个目录在跑,如果定位一个文件用了相对地址的话,那么在其他的路径下就很可能找不到它。

具体就是:

  • search.xml是一个相对路径,只有在包含了这个文件的目录下,才可以准确找到它。
  • /search.xml是一个绝对路径,无论在站点的那个地方都可以找到它。

所以将 _config.yml 里面的

1
2
3
4
search:
path: search.xml
field: post
content: true

改为

1
2
3
4
search:
path: /search.xml
field: post
content: true

就大功告成了。

真 - 改法

在修改成功后的 _config.yml 中有这样一段

1
2
3
4
5
6
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: https://blog.chensmallx.top
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

原来是这样的:

1
2
3
4
5
6
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://blog.chensmallx.top
root: /
permalink: :year/:month/:day/:title/
permalink_defaults:

区别就在于 http 和 https 的区别上。

在启用了 ssl 的站点上还设置站点域名为 http 的话,会导致 search.xml 这样的文件被链接到 http 协议上,而没有经过 https,这样自然就无法加载了。

Author: SmallXeon
Link: https://hexo.chensmallx.top/2018/11/24/post-everyday-2018-11-24/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
一些推广链接
几个便宜量大的小✈场: FASTLINK, YToo, 论坛邀请注册: ,
便宜量大但是稳定性不足的VPS: , 价格略贵但好用的VPN: , ,