Nous venons de déployer une deuxième itération de notre refonte de thème. Alors que la première mise à jour était un rafraîchissement visuel construit sur la base du thème précédent Meta Branded, cette version est essentiellement un nouveau thème entièrement reconstruit. Le nouveau langage de marque avait déjà été introduit avec la version précédente, il n’y a donc pas de changement visible majeur de ce côté. Ce qui a considérablement changé avec cette mise à jour, c’est l’implémentation du thème elle-même, et ce qu’elle révèle de notre direction en matière de personnalisation de Discourse plus largement.
Je vais parcourir quelques détails d’implémentation, en commençant par les éléments les plus modestes :
Icônes Lucide
Lucide est une bibliothèque open source d’icônes modernes en traits, et nous l’avons adoptée dans plusieurs de nos projets de personnalisation. Avec cette itération, nous l’avons également intégrée au thème Meta Branded. Il n’est pas prévu de remplacer Font Awesome dans le cœur de Discourse, mais la version gratuite de Font Awesome ne propose qu’un éventail limité d’icônes en traits, insuffisant pour former un système cohérent d’icônes en traits. Le composant de thème est disponible sur Discourse Lucide Icons.
Modificateur de thème pour restreindre les palettes de couleurs
Nous avons ajouté un nouveau modificateur de thème only_theme_color_schemes qui restreint les palettes de couleurs disponibles pour un thème donné, tant pour les administrateurs que pour les utilisateurs dans leurs préférences d’interface. Meta propose plusieurs palettes sélectionnables par l’utilisateur qui entreraient en conflit avec l’identité visuelle du thème Meta Branded. Grâce à ce modificateur, seules les palettes incluses avec le thème sont proposées comme options.
PR : FEATURE: add modifier to restrict theme color schemes
Mise en page pleine largeur
Nous testons également quelques ajustements du composant Discourse Full-width pour mieux centrer le contenu principal de la page. De nombreux éléments dynamiques dans l’en-tête compliquent la configuration, et pour l’instant, cela reste expérimental et n’est disponible que sur une branche du composant.
Transformateur de valeur pour contrôler la visibilité de la bannière de bienvenue
Nous avons utilisé un nouveau transformateur de valeur welcome-banner-display-for-route pour contrôler programmatiquement sur quelles routes la bannière de bienvenue principale s’affiche. Nous l’utilisons pour nous assurer que la bannière n’apparaît que sur la page d’accueil personnalisée par défaut et non sur les pages qu’un utilisateur pourrait avoir définies comme sa page d’atterrissage personnelle.
PR : DEV: Add welcome-banner-display-for-route value transformer
Cela nous amène aux deux changements les plus importants :
Page d’accueil personnalisée via un modificateur de thème
Le modificateur de thème custom_homepage est disponible depuis près de deux ans, mais c’est la première fois que nous l’utilisons pour façonner l’expérience de la page d’accueil sur Meta lui-même. Nous introduisons une page d’atterrissage personnalisée remplie de composants en vedette. Pour le lancement initial, cela comprend des catégories mises en avant et un aperçu des derniers sujets de discussion.
Nous avons créé ces composants en vedette en utilisant notre nouvelle API Blocks expérimentale, ce qui nous amène au changement le plus important :
API Blocks : première utilisation en production
L’API Blocks est un nouveau framework pour créer des mises en page modulaires et composables dans Discourse. Elle permet aux développeurs de thèmes d’assembler des pages à partir de composants autonomes et réutilisables, qui peuvent être placés dans des zones de mise en page définies. Le thème Meta est notre premier déploiement en production de cette API.
Le framework propose un riche ensemble d’outils pour les développeurs : activez les outils de développement et vous pourrez inspecter la structure des blocs de n’importe quelle page grâce à une superposition intégrée qui visualise toutes les zones de mise en page actives et leurs composants.
Au-delà de la page d’accueil, nous utilisons également des blocs pour afficher des bannières de catégories personnalisées qui montrent les sous-catégories de chaque catégorie :
Il s’agit toujours d’un aperçu précoce du système dans un contexte de production. Nous prévoyons de publier une documentation et davantage d’exemples prochainement.
PR : DEV: Add Block API for declarative, validated UI extension points














