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**
Das Benutzerverzeichnis muss aktiviert sein, damit die Liste der Top-Beiträger gefüllt wird. Wenn Ihre Liste leer ist, suchen Sie in Ihren Admin-Einstellungen nach enable user directory, um sicherzustellen, dass es aktiviert ist.
* Nur verfügbar, wenn es mit dem Kalender-Plugin verwendet wird.
** Nur verfügbar, wenn es mit dem Gamification-Plugin verwendet wird.
Sie können auch andere Ember-Komponenten als Blöcke verwenden; Sie müssen lediglich den korrekten Namen verwenden. Beispielsweise enthält das Kernpaket eine signup-cta-Ember-Komponente, die Sie so in der Seitenleiste verwenden können. Beachten Sie, dass Sie keine Komponenten verwenden können, die eine Reihe von Parametern erwarten. Sie können jedoch eine eigene Ember-Komponente in einem separaten Theme erstellen und sie in der blocks-Einstellung der Seitenleiste nur über ihren Namen referenzieren.
Sie können einige Funktionen der bereitgestellten Blöcke über Parameter steuern.
name
description
default
value
available for
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
Kategorien-ID
Kategorien-ID (category-list verwendet kommagetrennte Werte)
category-topics, category-list
content
anzuzeigender Inhalt
HTML
custom-html
scopeToCategory
zeigt nur in Kategorie oder Unterkategorie X
Kategorien-ID
popular-tags
excludedTags
Liste der auszuschließenden Tags
Tag-Namen
popular-tags
displayInSpecificCategories
Liste der Kategorien, in denen das Widget angezeigt werden soll
alle
kommagetrennte Zahlen
popular-tags
id
Leaderboard-ID
Zahl
minimal-gamification-leaderboard
tag
welcher Tag angezeigt werden soll
Tag-Name
tag-topics
period
Zeitraum 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 Beiträger
Zeichenkette (likes_received oder likes_given)
top-contributors
period
Zeitraum für Top-Beiträger
yearly
all, yearly, quarterly, monthly, weekly, daily
top-contributors
upcomingDays
Veranstaltungen, die vor dem angegebenen Wert gestartet wurden
Nur für fortgeschrittene Benutzer: Begrenzung der 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: Legen Sie fest, auf welchen Themenlisten-Routen die Seitenleiste angezeigt werden soll. Standardmäßig wird sie auf allen Entdeckungs-Routen außer /categories angezeigt.
Beachten Sie, dass die Komponente nur sehr einfaches Styling mitbringt. Die Annahme ist, dass Administratoren, die die Komponente verwenden, ihr eigenes Styling in ihrem eigenen Theme hinzufügen.
Interaktionen
In Kombination mit dem Discourse Calendar-Plugin können Sie einen Seitenleistenblock für Ihre bevorstehenden Veranstaltungen hinzufügen. Der Blockname lautet upcoming-events-list, und das Datumsformat kann gemäß dieser Syntax angepasst werden (z. B. MMMM D, YYYY).
Großartig, das als #offizielle Theme-Komponente zu sehen! Es eröffnet sicherlich eine neue Welt der Anpassungen.
Ich habe 2 Fragen:
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.
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.
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).
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).
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).
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?
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.
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).
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!
Hallo! Ich bin mir nicht sicher, ob diese Komponente Fehler verursacht. Aber sobald sie deaktiviert ist, werden keine weiteren Fehler mehr angezeigt. 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.
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.