Post

NLO vs Chirpy : journal des différences

Une liste objective des différences entre le thème NLO et le thème jekyll-chirpy original. Le message est mis à jour au fur et à mesure de la progression de la migration et du développement du sujet.

NLO vs Chirpy : journal des différences

Logo NLO Cet article documente les différences techniques spécifiques par rapport au thème original. Un élément est ajouté une fois implémenté et vérifié.

Liste de contrôle des différences

  • Graphique de contribution GitHub aux statistiques personnelles (accueil + barre latérale) avec mise à jour automatique via workflow
  • Panneau d’administration local pour l’édition de contenu, basé sur jekyll-admin, avec fork d’interface utilisateur à l’intérieur du projet
  • Connexion rapide au panneau d’administration local via un bouton séparé dans la barre latérale (développeur uniquement)
  • Branding de la barre latérale étendue : différents avatars pour le clair/foncé + choix du style de cadre
  • Mode multilingue en lang avec sélecteur de langue et drapeaux dans la barre latérale
  • Préfixes d’URL de paramètres régionaux courts (/ru/, /fr/) au lieu de longs (/ru-RU/, /fr-FR/)
  • Filtrage du contenu par langue de publication (language/lang dans le front matter)

1) Statistiques personnelles des contributions GitHub

Ce qui est ajouté :

  • Affichez le graphique de contribution GitHub à deux endroits : sur la page principale et dans la barre latérale.
  • Séparez les SVG pour les thèmes clairs et sombres.

Où est-il configuré :

  • _config.yml -> nlo.github_chart.
  • Clés :
    • home_image
    • home_image_dark
    • sidebar_image
    • sidebar_image_dark

Comment il se met à jour automatiquement :

  • Flux de travail : .github/workflows/update-githubchart.yml
  • Lancement planifié : 0 3 * * * (quotidiennement) et manuellement via workflow_dispatch.
  • Génération : tools/generate-githubchart.sh
  • Lorsque des modifications sont apportées, les fichiers suivants sont validés :
    • assets/img/githubchart.svg
    • assets/img/githubchart-sidebar.svg
    • assets/img/githubchart-dark.svg
    • assets/img/githubchart-sidebar-dark.svg

2) Panneau d’administration local (pour le développement uniquement)

Sur quoi est-il basé :

  • Fonctionnalité d’édition de base : gem jekyll-admin.
  • L’interface utilisateur est forkée dans le dépôt, dans le dossier admin/, pour les personnalisations NLO.

Comment cela marche-t-il:

  • Le plugin _plugins/jekyll-admin-fork.rb monte :
    • /admin -> UI locale à partir de admin/
    • /_api -> API à partir de JekyllAdmin::Server
  • Fichiers d’interface personnalisés :
    • admin/index.html
    • admin/nlo-admin.css
    • admin/nlo-admin.js

Lancement local :

1
bash tools/run.sh --admin

URL :

1
http://127.0.0.1:4000/admin

Pourquoi pas en production :

  • La fonction admin est destinée au circuit de développement local.
  • La gemme jekyll-admin est connectée en tant que dépendance de développement (Gemfile, groupe :development).
  • Un site de production public ne doit rester qu’une couche de contenu sans boucle ouverte éditeur/API.

3) Améliorations UX de la barre latérale et de l’éditeur

Ce qui est ajouté :

  • sidebar a ajouté un bouton ADMIN bien visible dans le bloc de navigation inférieur (affiché uniquement dans development).
  • Le bloc avatar dans la barre latérale a été augmenté d’environ 30 % pour un meilleur équilibre visuel.
  • Pour l’avatar, des sources distinctes sont utilisées pour les thèmes clairs et sombres :
    • nlo.branding.avatar_light
    • nlo.branding.avatar_dark
  • Le paramètre de cadre d’avatar est inclus dans la configuration (nlo.branding.avatar_frame) et prend en charge les styles :
    • round
    • discord
  • Dans un thème sombre, le cadre de l’avatar est assombri pour correspondre au ton général de l’interface.

Ce qui a été modifié dans le panneau d’administration :

  • Les paramètres GitHub Chart Palette et Avatar Frame sont intégrés dans la page Configuration comme des éléments normaux.
  • Les deux blocs de paramètres sont affichés sur une seule ligne sur le bureau (deux colonnes) et sur les écrans étroits, ils sont repliés sur une seule colonne.
  • Une info-bulle explicative a été ajoutée pour le champ author :
    • si vous spécifiez une clé de _data/authors.yml, l’auteur est affiché sous forme de lien vers le profil ;
    • si la clé n’est pas trouvée, la valeur author est affichée en texte brut.

4) Changement multilingue et linguistique

Ce qui est ajouté :

  • lang en _config.yml prend désormais en charge plusieurs langues séparées par des virgules :
    • exemple : lang: en, ru-RU, fr-FR
  • Si une langue est spécifiée, le sélecteur de langue ne s’affiche pas.
  • Si plusieurs langues sont spécifiées :
    • jusqu’à 3 drapeaux de langues sont affichés ;
    • si la quantité est supérieure, le compact select s’affiche automatiquement.
  • La signature du sélecteur est localisée (Site version) via les fichiers de paramètres régionaux.
  • Les drapeaux sont stockés localement dans assets/img/flags/.
  • En title, les drapeaux affichent le nom lisible de la langue (plutôt qu’un code technique comme ru-RU).

Techniquement:

  • La normalisation des langues et la détection de la langue active sont implémentées dans _includes/lang.html.
  • L’interface utilisateur du sélecteur est implémentée dans _includes/lang-switch.html et est construite comme premier élément de la barre de navigation latérale (visuellement sous la forme HOME).
  • Ajout d’une transparence douce (opacity: 0.7) et d’une mise en évidence de la langue active (survol/actif -> opacity: 1) aux drapeaux.

5) URL de langue et visibilité du contenu

Ce qui a changé dans l’URL :

  • Le changement de langue utilise désormais des préfixes courts :
    • http://127.0.0.1:4000/ru/
    • http://127.0.0.1:4000/fr/
  • Pour les pages d’accueil localisées, des permaliens courts sont spécifiés :
    • ru-RU/index.md -> /ru/
    • fr-FR/index.md -> /fr/
  • Le détecteur de langue dans _includes/lang.html comprend désormais à la fois le code régional complet et l’alias du préfixe court.

Ce qui a changé dans le contenu :

  • Ajout de language en avant-première aux publications (par exemple language: en, language: ru-RU).
  • Les messages sont affichés uniquement pour la langue actuelle de l’interface.
  • Les publications sans language/lang sont considérées comme du contenu à default_lang (rétrocompatible).

Où le filtrage fonctionne :

  • Accueil (home)
  • Archives (archives)
  • Listes de catégories/tags (categories, tags)
  • Pages d’une catégorie/balise spécifique
  • Barre latérale : dernières mises à jour et balises de tendance
  • Articles connexes dans l’article

Quelle est la prochaine étape

Les nouvelles différences arrivent dans cet article au fil de leur implémentation, gardant la liste transparente et vérifiable.

This post is licensed under CC BY 4.0 by the author.