Hugo Book
Тема для движка Hugo
| Версия | ветка main от 2026-09-10 |
|---|---|
| Проверено | 2026-10-17 |
| Готовность для мультиязычного проекта | вики 90 % проверено 19 из 31 сайт 94 % проверено 20 из 34 как считается |
| Мнение автора | можно рассмотреть Можно рассмотреть. С языками лучше всех, но боковое меню и место переключателя языков придётся переписывать. (2026-10-17) |
| Цена | бесплатно |
| Лицензия | MIT |
| Репозиторий | https://github.com/alex-shpak/hugo-book |
| Демо | https://book.alxs.dev |
| CSS | Свои стили темы, без фреймворков; свой CSS — в assets/styles/custom.css |
| Версия Hugo | 0.158 и новее |
| JavaScript | Немного своего JavaScript; поиск — MiniSearch |
| Node.js | Не нужен |
| Переводы интерфейса | Интерфейс переведён на 29 языков, в том числе uk, ru, pt и pt-BR |
Поиск по сайту
Поиск работает в браузере, на MiniSearch.
| Где работает | в браузере посетителя (JavaScript) |
|---|---|
| На чём построен | MiniSearch — небольшая библиотека на JavaScript, ищет прямо в браузере посетителя. |
| Откуда берёт тексты | Тексты статей лежат отдельным файлом на каждый язык и скачиваются, только когда человек нажимает на поле поиска. В рабочей вики русский файл — 139 КБ. |
| Языки | Ищет на любом языке, но формы слов не понимает — только начало слова. |
| Что можно настроить в теме | Выключить поиск — настройкой. Убрать страницу из поиска — параметром bookSearchExclude. Выбрать, что искать (только названия или весь текст), нельзя: всегда название и весь текст. Другой поиск — только переделав шаблоны. |
| Проверено | 2026-10-17 |
Плюсы
- Меню языков показывает только существующие переводы — одной настройкой
BookTranslatedOnly = true. - hreflang ставится только на существующие переводы.
- 9 заготовок для своего кода (head, меню, до и после статьи, оглавление, подвал) — тему не нужно править.
- Оглавление справа, на странице выключается параметром
bookToC: false. - Есть блоки «шаги», подсказки, вкладки, раскрывающиеся блоки, диаграммы Mermaid.
- Интерфейс переведён на uk, ru, pt.
- Поиск грузит тексты, только когда человек начинает искать — страницы лёгкие.
Минусы
- Переключатель языков стоит в боковом меню под поиском — переставить можно только копией шаблона меню.
- Боковое меню — дерево разделов: статью можно скрыть или свернуть раздел, но убрать меню на странице нельзя. Для вики меню придётся переписать.
- Нет хлебных крошек и разметки Schema.org — делаются своим кодом.
- hreflang без ссылки страницы на саму себя и без x-default; португальский помечен pt, а не pt-BR.
- В поиске нельзя выбрать, что искать, — всегда весь текст.
Общее впечатление
На этой теме работает вики dieg.net. Тема лежит в проекте обычными файлами, без сабмодуля.
С языками Hugo Book справляется лучше Hextra и Lotus Docs: меню и hreflang не ссылаются на несуществующие переводы. Главные минусы — боковое меню и место переключателя языков: их не настроить параметрами, только переписать шаблоны.
Что пришлось доработать
Микроразметка schema.org
| Проблема | В теме нет разметки Schema.org. |
|---|---|
| Что сделано | В рабочей вики разметка добавлена через заготовку inject/head.html: Organization, Person, WebSite и TechArticle. |
| Файлы | layouts/partials/docs/inject/head.html layouts/partials/docs/schema_json.htm |
| Объём работы | небольшой |
| Требование | seo-schema |
Хлебные крошки
| Проблема | В теме нет хлебных крошек. |
|---|---|
| Что сделано | В рабочей вики сделаны своим кодом через заготовку inject/content-before.html. |
| Файлы | layouts/partials/docs/inject/content-before.html |
| Объём работы | небольшой |
Результаты по требованиям с этой темой
Многие результаты задаёт сам Hugo, и они одинаковы для всех тем: языковые адреса, работа без базы данных, генерация страниц из данных. От темы зависят меню языков, hreflang, поиск и места для своего кода — их нужно проверять у каждой темы отдельно. Значок в пунктирной рамке — результат перенесён из проверки с другой темой этого движка. Наведите на значок, чтобы увидеть подробности.
| Требование | Результат | От чего зависит | Примечание |
|---|---|---|---|
| Мультиязычность | |||
Материал можно начать на неосновном языке ml-author-any-lang | да | движок | страница только на ru (/ru/o-proekte/) собирается без заглушки en |
Переключатель языков показывает только существующие переводы ml-switcher-existing | да | тема | с настройкой BookTranslatedOnly = true в меню языков только существующие переводы; на статье только на ru список пустой |
hreflang только на существующие переводы ml-hreflang-existing проверить ↗ | доработка | тема | hreflang только на существующие переводы — верно; но страница не ссылается сама на себя, нет x-default, португальский помечен pt, а не pt-BR. Исправляется своим кодом в inject/head.html |
Нет автостраниц с контентом основного языка ml-no-fallback-pages проверить ↗ | да | тема | статья только на ru существует только на ru |
Основной язык в корне, остальные с префиксом ml-default-root | да | движок | defaultContentLanguageInSubdir = false: en в корне, ru на /ru/ |
Атрибут lang в нужном формате ml-html-lang | да | тема | html lang = ru, en, uk, pt-br |
Переводы интерфейса для en, uk, ru, pt-BR ml-ui-strings | да | тема | интерфейс темы переведён, в том числе uk, ru, pt и pt-BR |
Контент доступен для автоматического перевода ИИ ml-ai-translatable | да | движок | статьи — обычные Markdown-файлы; в рабочем проекте их переводит скрипт через Gemini |
| Статьи, навигация и поиск | |||
Управление боковым меню sidebar-control | доработка | тема | меню — дерево разделов; на странице: bookHidden — скрыть, bookCollapseSection — свернуть, bookFlatSection — без вложенности; убрать меню на странице нельзя. Переключатель языков стоит в меню под поиском — переставить только копией шаблона меню |
Оглавление статьи toc-control | да | тема | оглавление справа; на странице выключается параметром bookToC: false — проверено |
Таксономии (теги, рубрики, свои классификаторы) taxonomies | да | тема | есть шаблоны страниц тегов и терминов; по коду темы |
Поиск по сайту site-search | да | тема | MiniSearch в браузере; тексты статей — отдельный файл на язык (ru — 139 КБ), скачивается, когда человек нажимает на поле поиска |
Гибкость поиска search-replaceable | доработка | тема | замена: поиск выключается настройкой BookSearch, другой — только копией шаблонов; языки: любые, формы слов не понимает; где искать: всегда название и весь текст, страницу можно исключить параметром bookSearchExclude |
Подсветка кода code-highlight | да | тема | подсвечивает сам Hugo при сборке, кнопка «копировать» |
Пошаговые инструкции content-steps | да | тема | шорткод steps; ещё hint, tabs, details, columns, mermaid, katex |
Свой код в шаблоны без правки темы (Inject Partials) theme-inject-partials | да | тема | 9 заготовок: head, body, menu-before, menu-after, content-before, content-after, toc-before, toc-after, footer; в рабочей вики через них сделаны JSON-LD, хлебные крошки, баннеры и ссылка на карту сайта |
Генерация страниц из данных (pSEO) data-pages | да | движок | module.mounts: data/products → content/cms, data/*.yaml → hugo.Data, без копирования |
| SEO | |||
Микроразметка schema.org seo-schema | доработка | тема | в теме разметки нет; в рабочей вики добавлены Organization, Person, WebSite и TechArticle в JSON-LD через inject/head.html |
| Хранение и окружение | |||
Работает без сервера БД no-db | да | движок | SSG, контент в Markdown и YAML |
Работает в окружении Nginx + PHP-FPM 8.5 runtime-php | да | движок | PHP не нужен: Nginx отдаёт статику |