Поиск в блоге

Я считаю, что поиск по блогу - “must-have feature”. К сожалению, в выбранной мною простенькой теме hexo-light поиска не предусмотрено. Поэтому, нужно либо использовать сервисы типа Гугл или Яндекс, либо автоматически создавать индексный файл (xml или json) каждый раз при перегенерации блога и реализовать поиск на клиенте с помощью javascript. Я решил идти по второму пути.

Для генерации индекса выбран плагин для hexo: hexo-generator-searchdb. Устанавливается он с помощью:

npm install hexo-generator-searchdb

Конфигурирование делается в _config.yml блога:

search:
path: search.json
field: post
content: true
format: html

Следующим шагом нужно создать страницу для поиска. Делается это так:

hexo new page "search"

В source каталоге создастся подкаталог search и в нем index.md. Содержание надо сделать наподобие такого:

---
title:
date: 2022-02-14 17:31:44
type: search
layout: search
---

Я добавил layout search в тему hexo-theme-light-plus. title лучше оставить пустым, тогда в качестве заголовка страницы поиска будет использоваться локализованная строка “search”.

Скрипт для поиска лежит в js/local-search.js. Я его сделал на основе вот этого. Убрал “popup”. Сделал постраничный показ результатов поиска (по 10 на страницу). Настройки в самом local-search.js:

const CONFIG = {
root : '/',
path : 'search.json',
localsearch : {
trigger : 'auto',
top_n_per_article : 1,
unescape : false,
preload : true,
results_per_page : 10
}
};

В общем, получилось так: поиск.