Dans le cadre de notre quête continue de standardisation des systèmes de rendu dans la base de code de Discourse, nous remplaçons l’implémentation de la liste des sujets.
Auparavant, cela utilisait une approche “raw handlebars” (.hbr), et pouvait être personnalisé via des remplacements de modèles et des raw-plugin-outlets. La nouvelle implémentation de la liste des sujets utilise des composants Glimmer modernes, et a été construite à partir de zéro pour être personnalisable de manière durable.
La nouvelle implémentation est maintenant disponible derrière le paramètre glimmer_topic_list_mode.
disabled: utilise la liste des sujets “raw handlebars” héritée.auto: détectera la compatibilité de vos plugins et thèmes actuels. Si certains sont incompatibles, il utilisera le système hérité ; sinon, il utilisera la nouvelle implémentation.enabled: utilisera la nouvelle implémentation de la liste des sujets. Si vous avez des plugins ou des thèmes incompatibles, votre site risque d’être endommagé.
Nous avons déjà mis à jour la plupart de nos thèmes et plugins officiels pour qu’ils soient compatibles avec le nouveau menu. Cependant, si vous utilisez des plugins, des thèmes ou des composants de thème tiers qui personnalisent la liste des sujets, leur mise à jour sera nécessaire.
Des avertissements seront imprimés dans la console du navigateur, identifiant la source de l’incompatibilité.
Calendrier de déploiement
Ce sont des estimations approximatives sujettes à modification
T4 2024 :
implémentation principale terminée
mise à jour des thèmes/plugins officiels (en cours)
activé sur Meta
publication des conseils de mise à niveau
T1 2025 :
-
mise à jour des thèmes/plugins officiels -
glimmer_topic_list_modepar défaut surauto; messages de dépréciation dans la console activés -
les dépréciations déclencheront une bannière d’avertissement pour les administrateurs pour les problèmes restants -
les plugins et thèmes tiers devraient être mis à jour
-
1er mars - activation de la nouvelle liste des sujets pour tous les sites. La valeur par défaut du paramètre du site sera changée en enabled, mais il sera toujours possible de revenir àdisabled.
T2 2025
après le 1er avril - suppression définitive du mode hérité et du code associé.
Qu’est-ce que cela signifie pour moi ?
Si votre plugin ou thème contient des fichiers ‘raw handlebars’ (nommés .hbr ou .raw.hbs), ils devront être mis à jour pour être compatibles avec la nouvelle version. Les fichiers .hbs réguliers pour les composants/routes Ember ne sont pas affectés par ce changement.
Des mises à jour seront également nécessaires si vous utilisez modifyClass sur component:topic-list ou component:topic-list-item.
Si votre site a l’une de ces personnalisations incompatibles, des messages d’avertissement seront imprimés dans la console du développeur du navigateur, y compris des informations sur le thème/plugin qui en est la cause.
Quels sont les remplacements ?
Certains des anciens raw-plugin-outlets ont été convertis en Plugin Outlets réguliers. Ceux-ci peuvent être mis à jour de manière 1:1.
Les personnalisations plus avancées devront être évaluées au cas par cas. La nouvelle liste des sujets dispose d’un certain nombre de nouvelles API pour une personnalisation facile et robuste. Pour en savoir plus, consultez :
Voici quelques exemples :
-
discourse-assignintroduit une nouvelle colonne à une liste de sujets spécifique. -
discourse-calendarutilise l’un des nouveaux plugin outlets pour afficher le badge de date de l’événement. -
discourse-solvedutilise un nouveauvalueTransformerpour remplacer lemodifyClassprécédent.
Qu’en est-il des autres personnalisations ?
Si votre personnalisation ne peut pas être réalisée à l’aide des nouvelles API que nous avons introduites, veuillez nous en informer en créant un nouveau sujet Dev pour en discuter.
Je suis un auteur de plugin/thème. Comment mettre à jour un thème/plugin pour prendre en charge l’ancienne et la nouvelle liste de sujets pendant la transition ?
Les nouveaux plugin outlets sont rendus dans les anciennes et les nouvelles implémentations de la liste des sujets. Donc : lorsque vous avez implémenté le nouveau, supprimez simplement l’ancien connecteur raw-plugin-outlet.
Pour les personnalisations basées sur DAG qui remplacent les template-overrides ou les outlets non modernisés, vous devrez maintenir les deux implémentations pendant la période de transition.
Une fois que votre thème/plugin prend en charge les anciennes et les nouvelles implémentations, vous pouvez ajouter ce commentaire magique en haut de tous vos fichiers .hbr :
{{!-- has-modern-replacement --}}
Cela supprimera les messages de dépréciation et permettra d’utiliser la nouvelle implémentation lorsqu’elle est en mode “auto”.


