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

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