Rechte Seitenleisten-Blocks

|||
-|-|-|
:discourse2: | Zusammenfassung | Rechtsseitige Blöcke zeigt eine Seitenleiste rechts von Themenlisten mit einer konfigurierbaren Liste von Blöcken.
| :eyeglasses: | Vorschau | Vorschau im Discourse Theme Creator
:hammer_and_wrench: | Repository-Link | https://github.com/discourse/discourse-right-sidebar-blocks
:open_book:|Neu bei Discourse Themes?| Anfängerleitfaden zur Verwendung von Discourse Themes

Diese Theme-Komponente installieren

Funktionen

Die Komponente enthält einige Blöcke, die Sie in der Seitenleiste anzeigen können:

  • popular-tags
  • top-contributors
  • recent-replies
  • category-topics
  • custom-html
  • category-list
  • subcategory-list
  • upcoming-events-list*
  • minimal-gamification-leaderboard**

:information_source: Das Benutzerverzeichnis muss aktiviert sein, damit die Liste der Top-Beitragenden gefüllt wird. Wenn Ihre Liste leer ist, suchen Sie in Ihren Admin-Einstellungen nach enable user directory, um sicherzustellen, dass sie aktiviert ist.

* Nur verfügbar, wenn mit dem Kalender Plugin verwendet.
** Nur verfügbar, wenn mit dem Gamification Plugin verwendet.

Sie können auch andere Ember-Komponenten als Blöcke verwenden, Sie müssen nur den richtigen Namen verwenden. Zum Beispiel enthält Core eine signup-cta Ember-Komponente, und Sie können sie in der Seitenleiste wie gewohnt verwenden. Beachten Sie, dass Sie keine Komponenten verwenden können, die eine Reihe von Parametern erwarten, aber Sie können Ihre eigene Ember-Komponente in einem separaten Theme erstellen und sie einfach nach ihrem Namen in der blocks-Einstellung der Seitenleiste referenzieren.

Sie können einige Funktionen der bereitgestellten Blöcke über Parameter steuern.

Name Beschreibung Standard Wert Verfügbar für
count Begrenzt die Anzahl der Ergebnisse variiert Zahl alle außer custom-html
excerptLimit Begrenzt die Länge jedes Antwort-Auszugs 150 Zahl recent-replies
id Kategorie-ID Kategorie-ID (category-list verwendet durch Kommas getrennte Werte) category-topics, category-list
content Angezeigte Inhalte HTML custom-html
scopeToCategory Nur in Kategorie oder Unterkategorie X anzeigen Kategorie-ID popular-tags
excludedTags Liste der ausgeschlossenen Tags Tagnamen popular-tags
displayInSpecificCategories Liste der Kategorien, in denen das Widget angezeigt werden soll alle durch Kommas getrennte Zahlen popular-tags
id Leaderboard-ID Zahl minimal-gamification-leaderboard
tag Welcher Tag angezeigt werden soll Tag-ID tag-topics
period Zeitrahmen der Top-Themen weekly all, yearly, quarterly, monthly, weekly, daily top-topics
title Titel des Blocks variiert Zeichenkette tag-topics, category-list, top-contributors
excludedGroupNames Schließt angegebene Gruppen aus Gruppennamen top-contributors
order Sortiert die Mitwirkenden Zeichenkette (likes_received oder likes_given) top-contributors
period Zeitrahmen für Top-Mitwirkende yearly all, yearly, quarterly, monthly, weekly, daily top-contributors
upcomingDays Ereignisse, die vor dem angegebenen Wert begonnen haben 180 Zahl upcoming-events-list
timeFormat Format des Ereignisdatums / der Uhrzeit LT momentjs-Format upcoming-events-list

Einstellungen

Name Beschreibung
blocks
show in routes Nur für fortgeschrittene Benutzer: Begrenzen Sie die Seitenleiste auf die ausgewählten Routen.
Beispiele: discovery.latest, discovery.unread, discovery.new, discovery.top, tag.show, “c/category-slug” (für Kategorien), “tag/sample-tag” (für Tags).
Wenn leer, wird die Seitenleiste auf allen Listenrouten angezeigt.

blocks: Wählen Sie die anzuzeigenden Blöcke und passen Sie deren Reihenfolge an.

show_in_routes: Entscheiden Sie, auf welchen Themenlistenrouten die Seitenleiste angezeigt werden soll. Standardmäßig wird sie auf allen Discovery-Routen außer /categories angezeigt.

Übersetzung Standard
top_contributors.heading Top-Mitwirkende
top_contributors.view_all Alle anzeigen
popular_tags.heading Beliebte Tags
popular_tags.view_all Alle anzeigen
recent_replies.heading Neueste Antworten
subcategory_list.heading Unterkategorien
top_topics.heading Top-Themen
category_list.heading Kategorien

Screenshots

Beachten Sie, dass die Komponente nur sehr grundlegende Stile enthält. Es wird davon ausgegangen, dass Administratoren, die die Komponente verwenden, ihre eigenen Stile in ihrem eigenen Theme hinzufügen.

Interaktionen

In Verbindung mit dem Discourse Calendar Plugin können Sie einen Seitenleistenblock für Ihre anstehenden Ereignisse hinzufügen. Der Blockname ist upcoming-events-list, und das Datumsformat kann nach dieser Syntax angepasst werden (z. B. MMMM D, YYYY).

:discourse2: Von uns gehostet? Theme-Komponenten sind für unsere Standard-, Geschäfts- und Enterprise-Pläne verfügbar.

60 „Gefällt mir“

Was sollte ich im Parameter „name“ hinzufügen, wenn ich benutzerdefiniertes HTML verwende?

1 „Gefällt mir“

Großartig, das als #offizielle Theme-Komponente zu sehen! Es eröffnet sicherlich eine neue Welt der Anpassungen.

Ich habe 2 Fragen:

  1. Ich möchte in der Seitenleiste die /latest-Themenliste so anzeigen, wie category-topics sie anzeigt. Ist das möglich? recent-replies kommt dem schon ziemlich nahe (besonders wenn der Auszug ausgeblendet ist), aber ich möchte wirklich auch Themen ohne Antworten einbeziehen.

  2. Ist es möglich, die Seitenblöcke nur in bestimmten Kategorien anzuzeigen? Was ich meine ist, dass nur die Route angezeigt wird, die die Kategorie-Themenliste ist, und das nur für die von mir angegebenen Kategorien.

1 „Gefällt mir“

Entschuldigung, die Dokumentation hierfür ist mangelhaft (ich werde sie jetzt aktualisieren). Der Name des Parameters für custom-html ist content.

Wir haben nichts Fertiges für die vollständige /latest-Liste, aber Sie können Ihre eigene erstellen und sie mit ihrem Namen zur Konfiguration hinzufügen. Sie sollte der Kategorie-/Tag-Liste sehr ähnlich sein, nur ohne Filter.

Derzeit nicht, Sie können sie nicht nur in bestimmten Kategorien anzeigen. Sie können jedoch discovery.category in der Einstellung show in routes verwenden, die die Seitenleiste nur auf Kategorie-Routen anzeigt (aber auf allen, nicht auf einer Teilmenge).

3 „Gefällt mir“

Vielen Dank, ist es möglich, die Seitenleiste auch in jedem Thema einzuschließen?

4 „Gefällt mir“

Ich habe gerade eine Einschränkung der Komponente festgestellt, insbesondere bei den Blöcken category-topics und subcategory-list, und zwar, dass das Hinzufügen mehrerer Blöcke dieser Typen mit unterschiedlichen id immer dazu führte, dass sie die Themen/Unterkategorien des obersten Blocks im Launch-Editor (vermutlich) anzeigen.

Ein Fehler, den ich gerade habe, ist, dass nach dem Herumspielen mit dem subcategory-list-Block etwa 10-12 Mal, er auf unserer Staging-Website überhaupt nicht mehr angezeigt wird (siehe Video unten).

2 „Gefällt mir“

Der Block subcategory-list nimmt überhaupt keinen Parameter entgegen. Wenn er verwendet wird, zeigt er die Unterkategorien der aktuellen Kategorie an, basierend darauf, zu welcher aktuellen Kategorie Sie navigiert sind … daher macht es keinen Sinn, diesen Block mehr als einmal zu verwenden.

Deshalb wird die subcategory-list in Ihrem Video auch nicht angezeigt. Wenn Sie sich auf einer Nicht-Kategorie-Route befinden, wird dieser Block nicht angezeigt.

Für category-topics sehe ich in Ihrem Video dieselbe ID zweimal verwendet: 7. Ich habe einen lokalen Test durchgeführt und mit verschiedenen IDs werden unterschiedliche Themen angezeigt (d. h. ich kann den gemeldeten Fehler nicht reproduzieren).

4 „Gefällt mir“

Hallo, vielen Dank für dieses großartige Plugin!

Ich habe eine Frage zur subcategory-list Seitenleiste: Gibt es eine Option, sie nur für eine bestimmte Kategorie anzuzeigen?

Unsere Entwickler haben sich das angesehen, und es scheint keine Parameter-ID-Unterstützung für subcategory-list zu geben. Könnten Sie das bitte hinzufügen?

2 „Gefällt mir“

Und bezüglich des top-contributors-Blocks: Gibt es eine Möglichkeit, die Ergebnisse für einen Zeitraum von einer Woche abzurufen?

2 „Gefällt mir“

Derzeit nein, diese Option gibt es nicht. Es wäre sinnvoll, sie hinzuzufügen, obwohl ich mir vorstellen könnte, dass sie mehrere IDs unterstützen sollte, damit Sie den Block für eine Liste von Kategorien (z. B. A, B und C) anzeigen können. Ich bin gerne bereit, PRs im Repo zu überprüfen. Wenn Ihre Entwickler der Meinung sind, dass sie dies hinzufügen können, wäre das großartig. (Andernfalls kann ich es zu einer Liste von “nice-to-haves” in der Theme-Komponente hinzufügen.)

Meinen Sie a) die Ergebnisse abzurufen und für eine Woche zu cachen oder b) die Top-Beitragenden der letzten Woche bei jeder Ladung abzurufen? Letzteres sollte einfach hinzuzufügen sein, Caching ist etwas kniffliger.

3 „Gefällt mir“

@pmusaraj können Sie\n\n> padding: 3px 4px 3px 4px\n\nfür die beliebten Tags hinzufügen?\n\nDanke.

1 „Gefällt mir“

Hallo @pmusaraj, vielen Dank für deine Antwort!

Unser Entwickler hat die PRs hier geteilt, bitte schau sie dir an: 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

Die zweite Variante wäre perfekt! Wir müssen tatsächlich die Liste der Top-Beitragenden der letzten Woche anzeigen. Vielen Dank!

4 „Gefällt mir“

Die Komponente hat absichtlich sehr wenig Styling, damit die Benutzer ihre eigenen Stile in ihren eigenen Themes/Theme-Komponenten hinzufügen können.

Danke, diese PR ist großartig und wurde jetzt zusammengeführt! Ich werde auch bald daran arbeiten, die Konfigurierbarkeit für den Top-Contributors-Block hinzuzufügen (oder wenn jemand anderes schneller ist, freue ich mich über eine PR).

3 „Gefällt mir“

Ich bin mir nicht sicher, wo ich den Code dafür finden kann – könnten Sie mich bitte dorthin leiten? Ich würde gerne die Kategorie-Themen modifizieren, sodass das Fehlen einer ID alle Kategorien ergibt (und somit effektiv die /latest-Liste).

Das wäre großartig, wenn das in allen Blöcken vorhanden wäre!

2 „Gefällt mir“

@pmusaraj Großartig! Vielen Dank für deine Hilfe, ich freue mich darauf, den Top-Beitrags-Block zu verwenden :slight_smile:

1 „Gefällt mir“

Hallo! Ich bin mir nicht sicher, ob diese Komponente Fehler verursacht. Aber sobald sie deaktiviert ist, werden keine weiteren Fehler mehr angezeigt. :thinking: Könnte sich das jemand ansehen, um mir bei der Fehlersuche zu helfen? Ich wäre Ihnen sehr dankbar.

Wenn sie aktiviert ist, würde mich beim Besuch eines bestimmten Themas auf dem Desktop das Klicken auf das Website-Logo in der oberen Leiste, um zur Homepage zurückzukehren, zu einem nie verschwindenden Ladebildschirm führen und Fehler in der Browserkonsole auslösen (wie unten). Keine zugehörigen Fehlerprotokolle im Pfad mysite/logs zu sehen.

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
(anonym) @ 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
(anonym) @ 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 (asynchron)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (asynchron)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (asynchron)
n @ backburner.js:28
flush @ index.js:46
_scheduleAutorun @ backburner.js:1218
_end @ backburner.js:1009
_boundAutorunEnd @ backburner.js:648
Promise.then (asynchron)
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
(anonym) @ hooks.js:247
dispatch @ jquery.js:5430
_.handle @ jquery.js:5234
frame:251 Sie haben das Flag abgelehnt, aber Drittanbieter-Cookies sind in Ihrem Browser deaktiviert, sodass das Flag beim nächsten Besuch der Seite wieder angezeigt wird.

Ich sehe Informationen über diese Komponente in der JS-Datei, die in der ersten Zeile des obigen Fehlerprotokolls erwähnt wird.

// Zeile 96-103 von 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 „Gefällt mir“

Ah, ja, Entschuldigung dafür. Es sollte jetzt behoben sein, Sie müssen nur das neueste Update der Theme-Komponente abrufen.

3 „Gefällt mir“

Danke! Funktioniert jetzt super.

3 „Gefällt mir“

Hallo @pmusaraj, entschuldige, wenn ich aufdringlich wirke – ich wollte nur wissen, ob es einen Zeitplan für diese Implementierung gibt.

Es wäre eine großartige Ergänzung :slight_smile:

Vielen Dank!

3 „Gefällt mir“

Vielen Dank für diese großartige Komponente!

Mir ist aufgefallen, dass meine gesamte Kopf- und Fußzeile global verschwindet, wenn ich diese aktiviert habe (alles in meiner header.html und footer.html). War das beabsichtigt? Aber um dies zu umgehen, muss ich die PluginAPI verwenden, um manuell eine Kopf- und Fußzeile hinzuzufügen.

2 „Gefällt mir“