PaperMod
Тема для движка Hugo
| Версия | обновлена в рабочем проекте 2026-09-19 |
|---|---|
| Проверено | 2026-10-17 |
| Готовность для мультиязычного проекта | вики 82 % проверено 19 из 31 сайт 88 % проверено 20 из 34 как считается |
| Мнение автора | не выберу Для вики не выберу — нет бокового меню, оглавление только сверху. Для каталога и блога подходит. (2026-10-17) |
| Цена | бесплатно |
| Лицензия | MIT |
| Репозиторий | https://github.com/adityatelange/hugo-PaperMod |
| Демо | https://adityatelange.github.io/hugo-PaperMod/ |
| CSS | Свои стили темы; свой CSS — в assets/css/extended/ |
| Версия Hugo | 0.146 и новее; на 0.165 есть предупреждения об устаревших функциях |
| JavaScript | Немного своего JavaScript; поиск — Fuse.js |
| Node.js | Не нужен |
| Переводы интерфейса | Интерфейс переведён на 47 языков, в том числе uk, ru, pt |
Поиск по сайту
Поиск на отдельной странице, на Fuse.js. Включается вручную: вывод JSON в настройках и страница поиска.
| Где работает | в браузере посетителя (JavaScript) |
|---|---|
| На чём построен | Fuse.js — небольшая библиотека на JavaScript, ищет в браузере приблизительно, прощает опечатки. |
| Откуда берёт тексты | Тексты статей — отдельный файл на язык, грузится только на странице поиска (у тестовой вики русский — 142 КБ). Сами страницы лёгкие. |
| Языки | Ищет на любом языке. Ищет приблизительно, поэтому прощает опечатки; правил форм слов не знает. |
| Что можно настроить в теме | Где искать — настраивается (params.fuseOpts.keys: название, описание, текст), точность — порогом threshold. Страницу можно убрать из поиска параметром searchHidden. Другой поиск — только копией шаблонов. |
| Проверено | 2026-10-17 |
Плюсы
- Разметка Schema.org из коробки: BlogPosting, BreadcrumbList, WebPage, Organization.
- Хлебные крошки включаются настройкой
ShowBreadCrumbs. - hreflang ставится только на существующие переводы и на саму страницу.
- Лёгкие страницы: тексты для поиска грузятся только на странице поиска.
- В поиске настраивается, где искать, и прощаются опечатки.
- 4 заготовки для своего кода: в head, в подвале, после статьи, комментарии.
- Интерфейс переведён на uk, ru, pt.
Минусы
- Это тема для блога: бокового меню нет — для вики навигацию придётся делать самому.
- Оглавление только сверху статьи, сворачиваемым блоком, не сбоку.
- Меню языков в шапке всегда ведёт на главные других языков, даже если у статьи перевода нет.
- В hreflang португальский помечен pt, а не pt-BR, нет x-default; поправить можно только копией head.html.
- Нет блока «шаги».
- Поиск выключен, пока не настроишь вывод JSON и не создашь страницу поиска.
- Предупреждения об устаревших функциях Hugo.
Общее впечатление
На PaperMod работает каталог antidetecthub.com на 7 языках. Тема лежит в проекте файлами, сайт собирает Cloudflare Pages.
Для каталога и блога тема хороша: лёгкие страницы, разметка Schema.org и хлебные крошки из коробки, понятный поиск. Для вики не подходит без большой доработки: нет бокового меню, оглавление только сверху, нет блока «шаги».
Что пришлось доработать
hreflang только на существующие переводы
| Проблема | В hreflang португальский помечен pt вместо pt-BR, нет x-default. |
|---|---|
| Что сделано | В рабочем проекте antidetecthub.com — своя копия head.html, в ней изменены 4 строки. |
| Файлы | layouts/partials/head.html |
| Объём работы | небольшой |
| Требование | ml-hreflang-existing |
<link rel="alternate" hreflang="{{ or .Language.Locale .Lang }}" href="{{ .Permalink }}">
{{- if .Language.IsDefault }}
<link rel="alternate" hreflang="x-default" href="{{ .Permalink }}">
{{- end }}
Результаты по требованиям с этой темой
Многие результаты задаёт сам Hugo, и они одинаковы для всех тем: языковые адреса, работа без базы данных, генерация страниц из данных. От темы зависят меню языков, hreflang, поиск и места для своего кода — их нужно проверять у каждой темы отдельно. Значок в пунктирной рамке — результат перенесён из проверки с другой темой этого движка. Наведите на значок, чтобы увидеть подробности.
| Требование | Результат | От чего зависит | Примечание |
|---|---|---|---|
| Мультиязычность | |||
Материал можно начать на неосновном языке ml-author-any-lang | да | движок | страница только на ru (/ru/o-proekte/) собирается без заглушки en |
Переключатель языков показывает только существующие переводы ml-switcher-existing | доработка | тема | меню языков в шапке всегда ведёт на главные других языков, даже со статьи, которой на них нет; существующие переводы статьи тема показывает отдельно, строкой «Переводы» под заголовком |
hreflang только на существующие переводы ml-hreflang-existing проверить ↗ | доработка | тема | hreflang только на существующие переводы и на саму страницу — верно; но португальский помечен pt, а не pt-BR, и нет x-default. В рабочем проекте исправлено 4 строками в своей копии 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, ru, pt-BR ml-ui-strings | да | тема | интерфейс темы переведён, в том числе uk, ru, pt |
Контент доступен для автоматического перевода ИИ ml-ai-translatable | да | движок | статьи — обычные Markdown-файлы; в рабочем проекте их переводит скрипт через Gemini |
| Статьи, навигация и поиск | |||
Управление боковым меню sidebar-control | нет | тема | бокового меню нет — это тема для блога |
Оглавление статьи toc-control | да | тема | оглавление сверху статьи, сворачиваемым блоком (не сбоку); ShowToc, TocOpen, на странице ShowToc: false |
Таксономии (теги, рубрики, свои классификаторы) taxonomies | да | тема | теги и рубрики выводятся в статье, есть страницы списков; в рабочем проекте отключены |
Поиск по сайту site-search | доработка | тема | Fuse.js на отдельной странице поиска; нужно включить вывод JSON и создать страницу поиска. Тексты — отдельный файл на язык (ru — 142 КБ), грузится только на странице поиска |
Гибкость поиска search-replaceable | доработка | тема | замена: только копией шаблонов; языки: любые, Fuse.js ищет приблизительно и прощает опечатки; где искать: настраивается (params.fuseOpts.keys — название, описание, текст) |
Подсветка кода code-highlight | да | тема | подсвечивает сам Hugo при сборке, кнопка «копировать» (ShowCodeCopyButtons) |
Пошаговые инструкции content-steps | нет | тема | блока «шаги» нет; есть collapse, figure, rawhtml |
Свой код в шаблоны без правки темы (Inject Partials) theme-inject-partials | да | тема | 4 заготовки: extend_head, extend_footer, extend_post_content, comments; hreflang и шапку ими не поправить — нужна копия head.html и header.html |
Генерация страниц из данных (pSEO) data-pages | да | движок | module.mounts: data/products → content/cms, data/*.yaml → hugo.Data, без копирования |
| SEO | |||
Микроразметка schema.org seo-schema | да | тема | в теме есть JSON-LD: BlogPosting, BreadcrumbList, WebPage, Organization |
| Хранение и окружение | |||
Работает без сервера БД no-db | да | движок | SSG, контент в Markdown и YAML |
Работает в окружении Nginx + PHP-FPM 8.5 runtime-php | да | движок | PHP не нужен: Nginx отдаёт статику |