Le composant inclut quelques blocs que vous pouvez afficher dans la barre latérale :
popular-tags
top-contributors
recent-replies
category-topics
custom-html
category-list
subcategory-list
upcoming-events-list*
minimal-gamification-leaderboard**
Le répertoire des utilisateurs doit être activé pour que la liste des principaux contributeurs soit remplie. Si votre liste est vide, recherchez enable user directory dans vos paramètres d’administration pour vous assurer qu’il est activé.
* Disponible uniquement lors de l’utilisation avec le plugin Calendar.
** Disponible uniquement lors de l’utilisation avec le plugin Gamification.
Vous pouvez également utiliser d’autres composants Ember comme blocs, il vous suffit d’utiliser le bon nom. Par exemple, le noyau inclut un composant Ember signup-cta, que vous pouvez utiliser tel quel dans la barre latérale. Notez que vous ne pouvez pas utiliser de composants qui attendent un ensemble de paramètres, mais vous pouvez créer votre propre composant Ember dans un thème séparé et le référencer simplement par son nom dans le paramètre blocks de la barre latérale.
Vous pouvez contrôler certaines fonctionnalités pour les blocs fournis via des paramètres.
nom
description
défaut
valeur
disponible pour
count
limite le nombre de résultats
varie
nombre
tous sauf custom-html
excerptLimit
limite la longueur de chaque extrait de réponse
150
nombre
recent-replies
id
id de catégorie
id de catégorie (category-list utilise des valeurs séparées par des virgules)
category-topics, category-list
content
contenu à afficher
html
custom-html
scopeToCategory
n’affiche que dans la catégorie ou sous-catégorie X
Utilisateurs avancés uniquement : limiter la barre latérale aux routes sélectionnées. Exemples : discovery.latest, discovery.unread, discovery.new, discovery.top, tag.show, “c/category-slug” (pour les catégories), “tag/sample-tag” (pour les balises). Lorsqu’il est vide, la barre latérale est affichée sur toutes les routes de liste.
blocks : choisissez les blocs à afficher et ajustez leur ordre
show_in_routes : décidez sur quelles routes de liste de sujets afficher la barre latérale. Par défaut, elle l’affiche sur toutes les routes de découverte sauf /categories.
Notez que le composant est livré avec un style très basique ; l’hypothèse est que les administrateurs utilisant le composant ajouteront leur propre style dans leur propre thème.
Interactions
Lorsqu’il est utilisé conjointement avec le plugin Discourse Calendar, vous pouvez ajouter un bloc de barre latérale pour vos événements à venir. Le nom du bloc est upcoming-events-list, et le format de date peut être personnalisé en suivant cette syntaxe (par exemple, MMMM D, YYYY).
Génial de voir cela comme un composant thématique #officiel ! Cela ouvre certainement un nouveau monde de personnalisations.
J’ai 2 questions :
Dans la barre latérale, je veux afficher la liste des sujets /latest de la même manière que category-topics les affiche. Est-ce possible ? recent-replies s’en rapproche (surtout si l’extrait est masqué), mais je veux vraiment inclure les sujets sans réponses.
Est-il possible d’afficher les blocs latéraux uniquement dans certaines catégories ? Ce que je veux dire, c’est que la seule route affichée est la liste des sujets de catégorie, et uniquement pour les catégories que je spécifie.
Désolé, la documentation pour cela est lacunaire (je vais la mettre à jour maintenant). Le nom du paramètre pour custom-html est content.
Nous n’avons rien de prêt à l’emploi pour la liste complète /latest, mais vous pouvez créer la vôtre et l’ajouter à la configuration en utilisant son nom. Cela devrait être très similaire aux listes de catégories/tags, juste sans filtre.
Actuellement, non, vous ne pouvez pas l’afficher uniquement sur des catégories spécifiques. Vous pouvez cependant utiliser discovery.category dans le paramètre show in routes, qui n’affichera la barre latérale que sur les routes de catégories (mais sur toutes, pas un sous-ensemble).
J’ai juste noté une limitation du composant, en particulier en ce qui concerne les blocs category-topics et subcategory-list, et c’est que l’ajout de plusieurs blocs de l’un ou l’autre de ces types avec des id différents a toujours entraîné l’affichage des sujets/sous-catégories du bloc le plus haut dans l’éditeur de lancement (je suppose).\n\nUn bug que j’ai actuellement est qu’après avoir joué avec le bloc subcategory-list pendant environ 10 à 12 fois, il a cessé de s’afficher complètement sur notre site de staging (voir la vidéo ci-dessous).\n\n
Le bloc subcategory-list ne prend aucun paramètre. Lorsqu’il est utilisé, il affiche les sous-catégories de la catégorie actuelle en fonction de la catégorie vers laquelle vous avez navigué… il n’est donc pas logique d’utiliser ce bloc plus d’une fois.
C’est aussi pourquoi le subcategory-list n’apparaît pas dans votre vidéo. Si vous êtes sur une route qui n’est pas une catégorie, ce bloc ne s’affiche pas.
Pour category-topics, dans votre vidéo, je vois le même ID utilisé deux fois : 7. J’ai effectué un test local et avec différents IDs, j’obtiens différents sujets affichés (c’est-à-dire que je ne peux pas reproduire le bug signalé).
J’ai une question concernant la barre latérale subcategory-list : y a-t-il une option pour l’afficher uniquement pour une catégorie particulière ?
Nos développeurs ont jeté un œil et il semble qu’il n’y ait pas de prise en charge de l’ID de paramètre pour subcategory-list, est-ce quelque chose que vous pourriez ajouter, s’il vous plaît ?
Actuellement, non, cette option n’existe pas. Il serait logique de l’ajouter, bien que j’imagine qu’elle devrait prendre en charge plusieurs identifiants afin que vous puissiez afficher le bloc pour une liste de catégories (A, B et C, par exemple). Je suis heureux d’examiner les PR sur le dépôt, si vos développeurs pensent pouvoir l’ajouter, ce serait formidable. (Sinon, je peux l’ajouter à une liste de fonctionnalités souhaitables dans le composant de thème.)
Voulez-vous dire a) récupérer les résultats et les mettre en cache pendant une semaine ou b) récupérer les meilleurs contributeurs de la semaine dernière à chaque chargement ? Ce dernier devrait être facile à ajouter, la mise en cache est un peu plus délicate.
Le composant a intentionnellement très peu de style afin que les consommateurs puissent ajouter leurs propres styles dans leurs propres thèmes/composants de thème.
Merci, ce PR est excellent et il est maintenant fusionné !
Je vais également travailler sous peu à l’ajout de la configurabilité du bloc des meilleurs contributeurs (ou si quelqu’un est plus rapide, je serai heureux d’examiner un PR).
Je ne suis pas sûr de trouver le code pour cela - pourriez-vous m’orienter ? J’aimerais examiner la modification de category-topics afin que l’absence d’ID vous donne toutes les catégories (et donc effectivement la liste /latest).
Ce serait formidable d’avoir cela dans tous les blocs !
Salut ! Je ne suis pas sûr que ce composant cause des erreurs. Mais une fois désactivé, plus aucune erreur n’est visible. Quelqu’un pourrait-il examiner cela pour m’aider à identifier le problème ? J’apprécierais beaucoup.
Avec ce composant activé, en visitant un certain sujet sur ordinateur, cliquer sur le logo du site dans la barre supérieure pour tenter de revenir à la page d’accueil me ramenait à un écran de chargement qui ne disparaissait jamais et générait des erreurs dans la console du navigateur (comme ci-dessous). Aucun journal d’erreurs connexe n’a été trouvé dans le chemin mysite/logs.
d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'findFiltered')
at new CategoryTopics (d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98:18)
at h.createComponent (base-component-manager.js:37:1)
at h.createComponent (ember-component-manager.js:54:1)
at C.create (manager.js:558:1)
at Object.evaluate (runtime.js:3301:1)
at Object.evaluate (runtime.js:1312:1)
at Dt.evaluateSyscall (runtime.js:5232:1)
at Dt.evaluateInner (runtime.js:5188:1)
at Dt.evaluateOuter (runtime.js:5180:1)
at Wt.next (runtime.js:6191:1)
at Wt._execute (runtime.js:6175:1)
at Wt.execute (runtime.js:6166:1)
at qt.handleException (runtime.js:5369:1)
at Kt.handleException (runtime.js:5605:1)
at Lt.throw (runtime.js:5302:1)
at Be.evaluate (runtime.js:2580:1)
at Lt._execute (runtime.js:5285:1)
at Lt.execute (runtime.js:5266:1)
at Ht.rerender (runtime.js:5634:1)
at Er.render (index.js:7578:1)
at index.js:7896:1
at It (runtime.js:5074:1)
at Rr._renderRoots (index.js:7876:1)
at Rr._renderRootsTransaction (index.js:7928:1)
at Rr._revalidate (index.js:7970:1)
at invoke (backburner.js:351:1)
at p.flush (backburner.js:241:1)
at h.flush (backburner.js:447:1)
at q._end (backburner.js:999:1)
at _boundAutorunEnd (backburner.js:648:1)
CategoryTopics @ d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe:98
createComponent @ base-component-manager.js:37
createComponent @ ember-component-manager.js:54
create @ manager.js:558
(anonymous) @ runtime.js:3301
evaluate @ runtime.js:1312
evaluateSyscall @ runtime.js:5232
evaluateInner @ runtime.js:5188
evaluateOuter @ runtime.js:5180
next @ runtime.js:6191
_execute @ runtime.js:6175
execute @ runtime.js:6166
handleException @ runtime.js:5369
handleException @ runtime.js:5605
throw @ runtime.js:5302
evaluate @ runtime.js:2580
_execute @ runtime.js:5285
execute @ runtime.js:5266
rerender @ runtime.js:5634
render @ index.js:7578
(anonymous) @ index.js:7896
It @ runtime.js:5074
_renderRoots @ index.js:7876
_renderRootsTransaction @ index.js:7928
_revalidate @ index.js:7970
invoke @ backburner.js:351
flush @ backburner.js:241
flush @ backburner.js:447
_end @ backburner.js:999
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (async)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_ensureInstance @ backburner.js:1206
scheduleOnce @ backburner.js:845
k @ index.js:522
queueRerender @ mount-widget.js:124
scheduleRerender @ widget.js:319
rerenderResult @ widget.js:365
F @ hooks.js:207
(anonymous) @ hooks.js:247
dispatch @ jquery.js:5430
_.handle @ jquery.js:5234
frame:251 Vous avez rejeté le drapeau, mais les cookies tiers sont désactivés dans votre navigateur, le drapeau reviendra la prochaine fois que vous visiterez la page.
Je vois des informations sur ce composant dans le fichier js mentionné dans la première ligne du journal d’erreurs ci-dessus.
J’ai remarqué que mon en-tête et mon pied de page disparaissent globalement lorsque j’active ceci (tout dans mon header.html et footer.html). Était-ce intentionnel ? Mais pour contourner cela, je dois utiliser le PluginAPI pour ajouter manuellement un en-tête/pied de page.