Кастомизация сборки HTML

Чтобы привести внешний вид HTML-документации в соответствие с вашим фирменным стилем, необходимо создать тему оформления HTML. Для начала достаточно создать шаблон для рендеринга страниц, при необходимости приложив к нему готовые статические файлы. Затем для более тонкого управления внешним видом элементов можно включить в тему плагин на языке Python. Также возможна автоматическая компиляция стилей из файлов SASS.

Собирака загружает файлы из темы оформления, указанной в настройке web.theme. Все файлы, кроме шаблона для рендеринга страниц, опциональны.

Документация, которую вы читаете сейчас, собрана с темой sobiraka2025. Можете найти её в исходниках Собираки и изучить как пример, когда будете разрабатывать собственную тему оформления.

Шаблон для рендеринга страниц #

Файл web.html используется как шаблон при рендеринге каждой страницы документации. Это единственный файл, обязательный для любой темы оформления.

Для превращения шаблона в конечную HTML-страницу используется шаблонизатор Jinja. Руководство по синтаксису шаблонизатора можно найти на его официальном сайте: Template Designer Documentation.

Шаблону доступен набор переменных и функций, описанных в разделе API для шаблонов. В частности, при разработке новой темы настоятельно рекомендуется подставлять в тег <head> содержимое переменной head: она может содержать скрипты и стили, необходимые для работы поиска по документации.

В Собираке отключена поддержка стандартного синтаксиса комментариев внутри шаблона Jinja, чтобы избежать коллизии с идентификаторами заголовков в Markdown. Чтобы добавить комментарий внутрь шаблона, используйте синтаксис со сдвоенными фигурными скобками: {{# Комментарий #}}.

Статические файлы #

Директория _static должна содержать файлы, которые необходимы для правильного отображения темы в браузере. Чаще всего к таким файлам относятся стили, скрипты, изображения и шрифты.

В директорию с готовой документацией будет вложена полная копия директории _static. Относительный путь к ней будет доступен шаблону через переменную STATIC. Например, {{STATIC}}/logo.svg преобразуется в путь наподобие ../_static/logo.svg.

Плагин для обработки страниц #

В файле extension.py может быть определён обработчик страниц — код на Python для дополнительной обработки содержимого перед рендерингом. В ряде случаев это позволяет снять часть ответственности со скриптов, выполняющихся в браузере, и перенести их логику в код, выполняющийся в момент сборки.

Класс плагина должен наследоваться от класса WebProcessor. Плагин имеет почти неограниченные возможности в рамках обработки отдельной страницы, см. API для обработчиков.

Пример. Предположим, что по задумке дизайнера горизонтальные и вертикальные изображения должны быть по-разному оформлены.

Добавив соответствующие проверки в код на Python, разработчик темы может добавить каждому блоку подходящий класс на этапе сборки документации. Аналогичный код в браузере пользователя не смог бы выполняться до загрузки изображений.

Файлы стилей SASS #

Некоторые темы оформления (в том числе фирменная тема sobiraka2025) используют препроцессор SASS и его языки SASS или SCSS для генерации стилей. Собирака запускает генерацию в рамках процесса сборки документации. Обратите внимание, что необходимая для этого команда sass не входит в Собираку и должна быть установлена отдельно.

Исходный файл стиля должен располагаться по адресу sass/web.sass или sass/web.scss в директории темы. При необходимости он может подключать другие файлы с помощью SASS-директивы @use. Сгенерированный стиль будет размещён по адресу _static/theme.css в выходной директории.

Тема может включать в себя несколько вариантов оформления в поддиректории _flavors. Для выбора нужного варианта следует указать его название в настройке pdf.theme.flavor. Разработчик темы должен подключить выбранный пользователем вариант с помощью конструкции @use 'flavor'. Какие именно SASS-переменные и миксины возможно переопределить таким способом, зависит от конкретной темы.

Также возможно добавление файлов SASS/SCSS из директории проекта. Файлы, указанные в pdf.theme.customization, участвуют в генерации стиля _static/theme.css наравне с собственными файлами темы. Из файлов, указанных в pdf.custom_styles, генерируются дополнительные CSS-стили.

Теги <link> со ссылками на все собранные стили CSS будут автоматически включены в переменную head, которую рекомендуется подключить в HTML-шаблон, см. API для шаблонов.