NLO vs Chirpy: Diff Log
Объективный список отличий темы NLO от оригинального jekyll-theme-chirpy. Пост обновляется по мере миграции и развития темы.
NLO vs Chirpy: Diff Log
Этот пост фиксирует конкретные технические отличия от оригинальной темы. Формат простой: добавляем пункт, когда он реализован и проверен.
Чеклист различий
- Личная статистика GitHub contribution graph (home + sidebar) с автообновлением через workflow
- Локальная админка для редактирования контента, основанная на
jekyll-admin, с форком UI внутри проекта - Быстрый вход в локальную админку через отдельную кнопку в sidebar (только dev)
- Расширенное брендирование sidebar: разные аватары для light/dark + выбор стиля рамки
- Мультиязычный режим в
langс переключателем языков и флагами в sidebar - Короткие URL-префиксы локалей (
/ru/,/fr/) вместо длинных (/ru-RU/,/fr-FR/) - Фильтрация контента по языку поста (
language/langво front matter)
1) Личная статистика контрибутов GitHub
Что добавлено:
- Отображение GitHub contribution chart в двух местах: на главной странице и в sidebar.
- Отдельные SVG для светлой и темной темы.
Где настраивается:
_config.yml->nlo.github_chart.- Ключи:
home_imagehome_image_darksidebar_imagesidebar_image_dark
Как обновляется автоматически:
- Workflow:
.github/workflows/update-githubchart.yml - Запуск по расписанию:
0 3 * * *(ежедневно) и вручную черезworkflow_dispatch. - Генерация:
tools/generate-githubchart.sh - При изменениях коммитятся файлы:
assets/img/githubchart.svgassets/img/githubchart-sidebar.svgassets/img/githubchart-dark.svgassets/img/githubchart-sidebar-dark.svg
2) Локальная админка (только для разработки)
На чем основано:
- Базовый функционал редактирования: гем
jekyll-admin. - UI форкнут внутрь репозитория в папку
admin/для кастомизации под NLO.
Как это работает:
- Плагин
_plugins/jekyll-admin-fork.rbмонтирует:/admin-> локальный UI изadmin//_api-> API отJekyllAdmin::Server
- Файлы кастомного интерфейса:
admin/index.htmladmin/nlo-admin.cssadmin/nlo-admin.js
Локальный запуск:
1
bash tools/run.sh --admin
URL:
1
http://127.0.0.1:4000/admin
Почему не в проде:
- Функция админки предназначена для локального контура разработки.
- Гем
jekyll-adminподключен как development dependency (Gemfile, группа:development). - Публичный production-сайт должен оставаться только контентным слоем без открытого editor/API контура.
3) Sidebar и UX-улучшения редактора
Что добавлено:
- В
sidebarдобавлена заметная кнопкаADMINв нижнем блоке навигации (показывается только вdevelopment). - Блок аватара в sidebar увеличен на ~30% для лучшего визуального баланса.
- Для аватара используются отдельные источники под светлую и тёмную темы:
nlo.branding.avatar_lightnlo.branding.avatar_dark
- Настройка рамки аватара вынесена в конфиг (
nlo.branding.avatar_frame) и поддерживает стили:rounddiscord
- В тёмной теме рамка аватара затемнена под общий тон интерфейса.
Что изменено в админке:
- Настройки
GitHub Chart PaletteиAvatar Frameвстроены в страницуConfigurationкак обычные пункты. - Оба блока настроек отображаются в одну строку на десктопе (две колонки), а на узких экранах складываются в одну колонку.
- Для поля
authorдобавлен tooltip-пояснитель:- если указать ключ из
_data/authors.yml, автор выводится как ссылка на профиль; - если ключ не найден, значение
authorотображается как обычный текст.
- если указать ключ из
4) Мультиязычность и переключатель языка
Что добавлено:
langв_config.ymlтеперь поддерживает несколько языков через запятую:- пример:
lang: en, ru-RU, fr-FR
- пример:
- Если указан один язык, селектор языка не отображается.
- Если указано несколько языков:
- до 3 языков отображаются флаги;
- при большем количестве автоматически показывается компактный
select.
- Подпись селектора локализуется (
Site version) через locale-файлы. - Флаги хранятся локально в
assets/img/flags/. - В
titleу флагов показывается человекочитаемое имя языка (а не технический код вродеru-RU).
Технически:
- Нормализация языков и выбор активного языка вынесены в
_includes/lang.html. - UI селектора реализован в
_includes/lang-switch.htmlи встроен первым пунктом в sidebar-навигацию (визуально какHOME). - Для флагов добавлена мягкая прозрачность (
opacity: 0.7) и выделение активного языка (hover/active ->opacity: 1).
5) Языковые URL и видимость контента
Что изменено в URL:
- Переключение языка теперь использует короткие префиксы:
http://127.0.0.1:4000/ru/http://127.0.0.1:4000/fr/
- Для локализованных home-страниц заданы короткие permalink:
ru-RU/index.md->/ru/fr-FR/index.md->/fr/
- Детектор языка в
_includes/lang.htmlтеперь понимает и полный код локали, и короткий alias префикса.
Что изменено в контенте:
- В посты добавлен
languageво front matter (напримерlanguage: en,language: ru-RU). - Посты показываются только для текущего языка интерфейса.
- Посты без
language/langсчитаются контентомdefault_lang(обратная совместимость).
Где работает фильтрация:
- Главная (
home) - Архивы (
archives) - Списки категорий/тегов (
categories,tags) - Страницы конкретной категории/тега
- Боковая панель: последние обновления и trending tags
- Related posts внутри статьи
Что дальше
Следующие отличия будем добавлять в этот же пост по мере реализации, чтобы сохранять прозрачный и проверяемый список изменений.
This post is licensed under CC BY 4.0 by the author.