Перейти к содержимому
Hugo Book

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
Версия Hugo0.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 отдаёт статику