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

Relearn

Тема для движка Hugo

Версия9.2.1 (2026-10-11)
Проверено2026-10-17
Готовность для мультиязычного проекта
вики 85 % проверено 20 из 31
сайт 90 % проверено 21 из 34
как считается
Мнение автораможно рассмотреть Можно рассмотреть. С языками лучшая, но поиск не ищет по-украински — придётся менять поиск. (2026-10-17)
Ценабесплатно
ЛицензияMIT
Репозиторийhttps://github.com/McShelby/hugo-theme-relearn
Демоhttps://mcshelby.github.io/hugo-theme-relearn
CSSСвои стили темы, без фреймворков; 10 готовых цветовых схем
Версия Hugo0.166 и новее (проверено на 0.168; 9.1.0 — на 0.165)
JavaScriptСвой JavaScript; поиск — Lunr
Node.jsНе нужен
Переводы интерфейсаИнтерфейс переведён на 27 языков, в том числе ru и pt-BR; украинский есть, но под кодом ua

Поиск в боковом меню: подсказки при вводе и отдельная страница результатов. На Lunr, включён сразу.

Где работаетв браузере посетителя (JavaScript)
На чём построенLunr — небольшая библиотека на JavaScript, ищет прямо в браузере. Вторым вариантом в теме есть Orama, но он помечен как экспериментальный.
Откуда берёт текстыТексты статей — отдельный файл на язык (у тестовой вики русский — 135 КБ). Грузится сразу на каждой странице, а не когда открывают поиск. Выдаёт только статьи на языке страницы.
ЯзыкиПонимает формы слов для английского, русского и португальского: «серверами» найдёт «серверов». Украинский не поддерживает: статьи на uk в поиск не попадают совсем. Orama по-русски и по-украински не нашёл ничего.
Что можно настроить в темеВыключить поиск и сменить движок (Lunr или Orama) — настройкой. Свой шаблон индекса (например, искать только по названиям) и своя страница поиска — настройкой плюс свой файл. Pagefind — только своим кодом.
Проверено2026-10-17

Плюсы

  • Сделана для документации: боковое меню по разделам, хлебные крошки, переход к следующей странице.
  • Меню языков и hreflang ведут только на существующие переводы; есть x-default, код pt-br правильный.
  • Переключатель языков ставится вверх или вниз бокового меню настройкой, без правки шаблонов.
  • Верхняя панель настраивается так же, как меню: какие кнопки и где показывать.
  • Боковое меню гибко настраивается: порядок, раскрытые разделы, скрытые страницы, свои меню.
  • Много мест для своего кода: head, подвал, до и после заголовка, над и под статьёй, меню.
  • Поиск выдаёт только статьи на языке страницы и понимает формы слов для en, ru, pt.
  • Много блоков: подсказки, вкладки, раскрывающиеся блоки, карточки, Mermaid, формулы.

Минусы

  • Поиск не ищет по-украински: статьи на uk в него не попадают. Настройкой не исправить.
  • Тексты для поиска грузятся на каждой странице (ru — 135 КБ), даже если поиском не пользуются.
  • Украинский перевод интерфейса не подключается сам: в теме он назван ua, а не uk.
  • Оглавление — кнопкой в верхней панели, поверх страницы; колонки сбоку нет.
  • Нет canonical и блока «шаги».
  • По умолчанию ссылки с index.html на конце — нужно выключить настройкой.
  • Переключатель языков в верхнюю панель настройкой не поставить — только своим шаблоном.
  • Готовится версия 10 (ещё не вышла): уберёт всё, о чём 9.x предупреждает при сборке. Когда выйдет — перепроверить.

Общее впечатление

Тема для документации. Меню языков и hreflang — лучшие из проверенных тем: правильные сразу, а переключатель ставится куда нужно настройкой.

Главный минус для сайта на украинском — поиск: украинские статьи в него не попадают, и настройкой это не исправить. Оглавление открывается кнопкой поверх страницы, а не колонкой сбоку.

Что пришлось доработать

Переводы интерфейса для en, uk, ru, pt-BR

ПроблемаНа /uk/ интерфейс темы английский: украинский перевод в теме лежит в файле ua.toml, а язык сайта — uk.
Что сделаноКопия файла темы i18n/ua.toml в i18n/uk.toml проекта.
Файлыi18n/uk.toml
Объём работынебольшой
Требованиеml-ui-strings

Корректный canonical

ПроблемаНа страницах нет canonical.
Что сделаноОдна строка в заготовке для своего кода в head.
Файлыlayouts/partials/custom-header.html
Объём работынебольшой
Требованиеseo-canonical
<link rel="canonical" href="{{ .Permalink }}">

Корректный canonical

ПроблемаВсе ссылки и hreflang по умолчанию заканчиваются на index.html — у страницы два адреса.
Что сделаноНастройка в hugo.toml.
Файлыhugo.toml
Объём работынебольшой
Требованиеseo-canonical
[params]
  disableExplicitIndexURLs = true

Переключатель языков вверху меню

ПроблемаПереключатель языков по умолчанию внизу бокового меню.
Что сделаноНастройкой перенесён наверх меню, под поиск.
Файлыhugo.toml
Объём работынебольшой
[params]
  sidebarheadermenus = [
    { type = 'custom', elements = [ { type = 'languageswitcher', icon = 'globe' } ] },
    { type = 'divider' },
  ]
  sidebarmenus = [ { type = 'page' } ]
  sidebarfootermenus = []

Результаты по требованиям с этой темой

Многие результаты задаёт сам Hugo, и они одинаковы для всех тем: языковые адреса, работа без базы данных, генерация страниц из данных. От темы зависят меню языков, hreflang, поиск и места для своего кода — их нужно проверять у каждой темы отдельно. Значок в пунктирной рамке — результат перенесён из проверки с другой темой этого движка. Наведите на значок, чтобы увидеть подробности.

ТребованиеРезультатОт чего зависитПримечание
Мультиязычность
Материал можно начать на неосновном языке ml-author-any-langдадвижокстраница только на ru (/ru/o-proekte/) собирается без заглушки en
Переключатель языков показывает только существующие переводы ml-switcher-existingдатемав меню языков только существующие переводы статьи; на статье только на ru — один русский. Место меняется настройкой: внизу бокового меню или вверху, под поиском. В верхнюю панель настройкой не ставится (тема выдаёт ошибку) — только своим шаблоном элемента
hreflang только на существующие переводы ml-hreflang-existing проверить ↗датемаhreflang только на существующие переводы, на саму страницу и x-default; код языка из locale (pt-br) — верно
Нет автостраниц с контентом основного языка ml-no-fallback-pages проверить ↗датемастатья только на ru существует только на ru и не попадает в меню других языков
Основной язык в корне, остальные с префиксом ml-default-rootдадвижокdefaultContentLanguageInSubdir = false: en в корне, ru на /ru/
Атрибут lang в нужном формате ml-html-langдатемаhtml lang = ru, для португальского pt-br
Переводы интерфейса для en, uk, ru, pt-BR ml-ui-stringsдоработкатемаинтерфейс переведён на ru и pt-BR, но украинский файл в теме назван ua, а язык сайта — uk, поэтому на /uk/ интерфейс английский. Исправлено копией файла i18n/ua.toml в i18n/uk.toml проекта. Кнопка «Home» в меню не переведена ни на ru, ни на uk
Контент доступен для автоматического перевода ИИ ml-ai-translatableдадвижокстатьи — обычные Markdown-файлы; в рабочем проекте их переводит скрипт через Gemini
Статьи, навигация и поиск
Управление боковым меню sidebar-controlдатемабоковое меню — дерево разделов; настройками: порядок, раскрыть или свернуть разделы, скрыть страницу, свои меню сверху и снизу
Оглавление статьи toc-controlдатемаоглавление — кнопкой в верхней панели, открывается поверх страницы, а не колонкой сбоку; на странице выключается disableToc
Таксономии (теги, рубрики, свои классификаторы) taxonomiesдатематеги и категории со страницами списков
Поиск по сайту site-searchнеттемаLunr в браузере; тексты — отдельный файл на язык (ru — 135 КБ), грузится на каждой странице сразу. Выдаёт только статьи на языке страницы. Украинский Lunr не поддерживает: статьи на uk в поиск не попадают вообще (тема сама предупреждает при сборке). Второй движок темы, Orama, по-русски и по-украински не нашёл ничего — в 9.2.1 так же, как в 9.1.0
Гибкость поиска search-replaceableдоработкатемазамена: настройкой — только на второй движок Orama (экспериментальный); свой шаблон индекса и своя страница поиска — настройкой плюс свой файл; Pagefind — только своим кодом. Языки: формы слов понимает для en, ru, pt; украинский не ищет. Где искать: только через свой шаблон индекса
Подсветка кода code-highlightдатемаподсвечивает сам Hugo при сборке, кнопка «копировать»
Пошаговые инструкции content-stepsнеттемаблока «шаги» нет; есть подсказки, вкладки, раскрывающиеся блоки, карточки, кнопки, Mermaid, формулы
Свой код в шаблоны без правки темы (Inject Partials) theme-inject-partialsдатемазаготовки: в head, в подвале, до и после заголовка, над и под статьёй, до и после меню, низ меню, комментарии
Генерация страниц из данных (pSEO) data-pagesдадвижокmodule.mounts: data/products → content/cms, data/*.yaml → hugo.Data, без копирования
SEO
Корректный canonical seo-canonical проверить ↗доработкатемаcanonical на страницах нет; добавлен одной строкой в заготовку custom-header.html. Ещё: по умолчанию ссылки с index.html на конце — выключается настройкой disableExplicitIndexURLs
Микроразметка schema.org seo-schemaдатемамикроразметка в HTML (не JSON-LD): Article и BreadcrumbList
Хранение и окружение
Работает без сервера БД no-dbдадвижокSSG, контент в Markdown и YAML
Работает в окружении Nginx + PHP-FPM 8.5 runtime-phpдадвижокPHP не нужен: Nginx отдаёт статику