Blocs de la barre latérale droite

|||
-|-|-|
:discourse2: | Résumé | Blocs de la barre latérale droite affiche une barre latérale à droite des listes de sujets avec une liste configurable de blocs.
| :eyeglasses: | Aperçu | Aperçu sur le créateur de thèmes Discourse
:hammer_and_wrench: | Lien du dépôt | https://github.com/discourse/discourse-right-sidebar-blocks
:open_book:|Nouveau aux thèmes Discourse ?| Guide pour débutants sur l’utilisation des thèmes Discourse

Installer ce composant de thème

Fonctionnalités

Le composant comprend 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**

:information_source: L’annuaire des utilisateurs doit être activé pour que la liste des meilleurs contributeurs soit remplie. Si votre liste est vide, recherchez enable user directory dans vos paramètres d’administration pour vous assurer qu’elle est activée.

* Uniquement disponible lorsqu’il est utilisé avec le plugin Calendar.
** Uniquement disponible lorsqu’il est utilisé avec le plugin Gamification.

Vous pouvez également utiliser d’autres composants Ember comme blocs, il vous suffit d’utiliser le nom correct. Par exemple, le cœur inclut un composant Ember signup-cta, et vous pouvez l’utiliser dans la barre latérale tel quel. 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 des 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 affiche uniquement dans la catégorie ou sous-catégorie X id de catégorie popular-tags
excludedTags liste des tags exclus noms de tags popular-tags
displayInSpecificCategories liste des catégories où afficher le widget toutes nombres séparés par des virgules popular-tags
id id du classement nombre minimal-gamification-leaderboard
tag quel tag afficher id du tag tag-topics
period période de temps des sujets principaux weekly all, yearly, quarterly, monthly, weekly, daily top-topics
title titre du bloc varie chaîne de caractères tag-topics, category-list, top-contributors
excludedGroupNames exclut les groupes spécifiés noms de groupes top-contributors
order trie les contributeurs Chaîne de caractères (likes_received ou likes_given) top-contributors
period période de temps pour les meilleurs contributeurs yearly all, yearly, quarterly, monthly, weekly, daily top-contributors
upcomingDays événements commencés avant la valeur fournie 180 nombre upcoming-events-list
timeFormat Format de la date/heure de l’événement LT format momentjs upcoming-events-list

Paramètres

Nom Description
blocks
show in routes Utilisateurs avancés uniquement : limite 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 tags).
Lorsqu’il est vide, la barre latérale s’affiche 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 s’affichera sur toutes les routes de découverte, à l’exception de /categories.

Traduction Défaut
top_contributors.heading Meilleurs contributeurs
top_contributors.view_all Voir tout
popular_tags.heading Tags populaires
popular_tags.view_all Voir tout
recent_replies.heading Réponses récentes
subcategory_list.heading Sous-catégories
top_topics.heading Sujets principaux
category_list.heading Catégories

Captures d’écran

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 la date peut être personnalisé en suivant cette syntaxe (par exemple, MMMM D, YYYY).

:discourse2: Hébergé par nous ? Les composants de thème sont disponibles pour utilisation sur nos plans Standard, Business et Enterprise.

60 « J'aime »

Que dois-je ajouter dans le paramètre « name » si j’utilise du HTML personnalisé ?

1 « J'aime »

Génial de voir cela comme un composant thématique #officiel ! Cela ouvre certainement un nouveau monde de personnalisations.

J’ai 2 questions :

  1. 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.

  2. 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.

1 « J'aime »

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).

3 « J'aime »

Merci, est-il possible d’inclure la barre latérale dans chaque sujet également ?

4 « J'aime »

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

2 « J'aime »

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é).

4 « J'aime »

Salut, un immense merci pour ce super plugin !

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 ?

2 « J'aime »

Et concernant le bloc top-contributors : y a-t-il un moyen de récupérer les résultats pour une période d’une semaine ?

2 « J'aime »

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.

3 « J'aime »

@pmusaraj pouvez-vous ajouter

padding: 3px 4px 3px 4px

pour les popular-tags ?

Merci.

1 « J'aime »

Salut @pmusaraj, merci beaucoup pour votre réponse !

Notre développeur a partagé les PRs ici, veuillez y jeter un œil : Implement the `displayInCategories` parameter which allows to specify a list of categories where the `subcategories-list` block is displayed by d521bb85 · Pull Request #10 · discourse/discourse-right-sidebar-blocks · GitHub

La deuxième variante serait parfaite ! Nous devons en effet afficher la liste des meilleurs contributeurs de la semaine dernière. Merci beaucoup !

4 « J'aime »

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).

3 « J'aime »

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 !

2 « J'aime »

@pmusaraj Génial ! Merci beaucoup pour votre aide, j’ai hâte d’utiliser le bloc des meilleurs contributeurs :slight_smile:

1 « J'aime »

Salut ! Je ne suis pas sûr que ce composant cause des erreurs. Mais une fois désactivé, plus aucune erreur n’est visible. :thinking: 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.

// lignes 96-103 de d6ca234baf8d2d5e65f414f31e198fe956d9a939.js?__ws=www.bfsu.cafe
      const filter = "c/" + categoryId;
      this.category = _category.default.findById(categoryId);
      this.store.findFiltered("topicList", {
        filter
      }).then(result => {
        const results = result.topic_list.topics;
        results.forEach(topic => {
          topic.url = "".concat((0, _getUrl.default)("/t/")).concat(topic.slug, "/").concat(topic.id);
1 « J'aime »

Ah, oui, désolé pour ça. Ça devrait être corrigé maintenant, il vous suffit de récupérer la dernière mise à jour du composant de thème.

3 « J'aime »

Merci ! Ça fonctionne très bien maintenant.

3 « J'aime »

Salut @pmusaraj, désolé si j’ai l’air insistant - je voulais juste savoir s’il y avait une ETA concernant cette implémentation.

Ce serait un ajout génial :slight_smile:

Merci beaucoup !

3 « J'aime »

Merci pour cet excellent composant !

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.

2 « J'aime »