Discourse Bars 🍻 🍸 (ein Sidebar-Framework)

:eyeglasses: Ăśbersicht

Eine Theme-Komponente, mit der Sie Komponenten[1] auf oberen und seitlichen Leisten anordnen können.

  • Geben Sie eine Reihe von „Widgets“ eindeutig fĂĽr Route und Position an.
  • UnterstĂĽtzt Setups fĂĽr jede der folgenden Optionen: Entdeckung[2], Thema, Tag[3], Kategorie[3:1], Kategorien[3:2] ODER Tag-Schnittmenge[4]
  • „Leisten“ können entweder sein: oben, links, rechts ODER alternative rechte Position.
  • Jede Leiste kann eingeklappt oder geschlossen werden (Browser aktualisieren, um das SchlieĂźen zurĂĽckzusetzen). Sie können standardmäßig minimiert werden.
  • Behandelt die offizielle Seitenleiste. Wenn Sie jedoch eine Seitenleiste mit linker Leiste verwenden möchten, wird der Dropdown-Modus der offiziellen Seitenleiste empfohlen.
  • Es enthält vorhandene Beispiel-Einstellungen, die einige groĂźe Buchstaben zeigen, teilweise als Demo und teilweise, damit Sie Beispiel-Einstellungen sehen können. Löschen Sie diese und ersetzen Sie sie durch Ihre eigenen Komponentennamen.
  • Wird mit einer Komponente geliefert: bars-custom-html (siehe voreingestellte Beispiel-Einstellungen) – aber Komponenten aus vielen vorhandenen Theme-Komponenten & Plugins sind kompatibel.
  • Mobile UnterstĂĽtzung ist noch nicht implementiert.

:link: Schnelle Links

Gefällt Ihnen diese Theme-Komponente? Bitte :star: sie auf GitHub ! :pray:

Kostenloses Beispiel:

Beim ersten Laden:

:warning: Einige wichtige Dinge, die Sie ĂĽber diese TC beachten sollten!

  • Diese Theme-Komponente richtet sich hauptsächlich an Entwickler und Administratoren mit technischem Verständnis der Theme-Entwicklung. Wenn Sie nicht ausreichend technisch versiert sind und Hilfe bei der Implementierung von Seitenleisten mit Leisten benötigen, können Sie mich oder einen Entwickler unter Marketplace engagieren.

  • Diese Theme-Komponente soll ein Framework zur UnterstĂĽtzung von Seitenleisten bieten. Sie bietet nicht und soll keine endgĂĽltige visuelle Ausarbeitung bieten, die Sie in Ihrem Theme mit zusätzlichem CSS hinzufĂĽgen mĂĽssen. Sie leistet jedoch viel Arbeit fĂĽr Sie und gibt Ihnen weniger Dinge, ĂĽber die Sie nachdenken mĂĽssen, und vielleicht sogar die Möglichkeit, Dinge zu tun, zu denen Sie vorher keine Möglichkeit hatten … :sweat_smile:

KomponentenĂĽberlegungen

  • Sie mĂĽssen einen Komponentennamen angeben. Der Komponentename ist tatsächlich derselbe wie der Dateiname im Verzeichnis component des Themes, TC oder Plugins ohne die Endung.

    • Der Komponentename ist nicht der Name der Theme-Komponente (die viele Ember Glimmer-Komponenten enthalten könnte), sondern der Name der tatsächlichen Ember-Komponentendatei :sweat_smile: , also z. B.:

    also layouts-tag-list

  • Sie können aus einer vorhandenen Theme-Komponente oder einem Plugin stammen. Vorhandene Komponenten funktionieren möglicherweise. Beispiele sind:

  • Es erfordert einige Fachkenntnisse, um Komponenten zu erstellen

    • Aber versuchen Sie, Ihre eigene Komponente in einer anderen Theme-Komponente zu erstellen, und stellen Sie sicher, dass beide in demselben Theme aktiv sind.
  • Komponenten mĂĽssen ihre eigenen Daten beziehen (sie können keine Plugin-Outlet-Pass-Through-Modelle verwenden, leider aufgrund der spezifischen Plugin-Outlets, die verwendet werden mĂĽssen, um Dinge auf diese Weise anzuordnen)

    • Out-of-the-Box können Sie nur vorhandene JSON-API-Daten von z. B. Discourse Core oder von einem vorhandenen Plugin verwenden. Wenn Sie spezielle Daten benötigen, die Sie nicht aus aktuellen APIs beziehen können, können Sie mich oder jemanden unter Marketplace engagieren, um Ihnen zu helfen.
  • Möglicherweise mĂĽssen Sie die Seitenleiste und die Komponentengrenzen nach Geschmack gestalten. (Auch hier gilt: Wenn Sie Hilfe benötigen, erwägen Sie die Beauftragung eines Entwicklers).

    • Strategischer Einsatz von Schatten und Rahmen kann Dinge wirklich gut aussehen lassen – seien Sie kĂĽnstlerisch!

Warum

  • Mit der Aktualisierung von Discourse Core auf Ember 5 funktionierte der Trick Pavilion’s Plugin Layouts, um das Discourse-Layout hervorragend zu manipulieren, nicht mehr. Es gab nun keine einfache Möglichkeit mehr, eine Seitenleiste auf einer Themenroute ĂĽber eine relativ einfache Benutzeroberfläche fĂĽr Endbenutzer anzuzeigen.

  • DarĂĽber hinaus fĂĽhrte Ember Glimmer-Komponenten ein, mit denen sich viel besser arbeiten lieĂź. (Layouts verwendeten die Widgets API, die zugunsten von Glimmer-Komponenten veraltet ist).

  • SchlieĂźlich stellte das Discourse Core-Team einen neuen JSON-Editor fĂĽr Theme-Komponenten-Einstellungen bereit, der die Bereitstellung komplexerer Einstellungen ermöglichte :+1: :rocket:

  • Anstatt das Layout-Plugin zu reparieren (TCs gab es damals, als Layouts entwickelt wurden, noch nicht), war es sinnvoll, es als Theme-Komponente neu zu erstellen, da wir die meisten Dinge, die wir brauchen, nur im Frontend erreichen können.

  • Treten Sie ein in „Bars“ :beers: :cocktail: Prost!!

Bekannte Probleme

  • Die obere Leiste klebt nicht (ich werde die entsprechende Einstellung möglicherweise entfernen, wenn ich sie nicht lösen kann).

Credits


  1. Der Begriff „Entdeckung“ (Route) bezieht sich auf die Hauptseiten der Themenliste (z. B. „Neueste“, „Neu“), auf denen Sie verfügbare Themen durchsuchen können, bevor Sie auf ein bestimmtes Thema klicken und sich damit befassen. ↩︎

  2. Technisch gesehen auch eine „Entdeckungs“-Route, aber wir trennen diese in unterschiedliche Namen, damit Sie sie unterschiedlich behandeln können, wenn Sie möchten. ↩︎

  3. Siehe hier für weitere Details. Damit dies optional bleibt (nicht alle Installateure von Bars möchten eine benutzerdefinierte Homepage), fügt Bars den erforderlichen Modifikator nicht in about.json hinzu. Sie müssen diesen daher im übergeordneten Theme oder einer anderen TC hinzufügen, um ihn zu aktivieren. ↩︎ ↩︎ ↩︎

  4. Siehe das Tag Intersection Plugin ↩︎

47 „Gefällt mir“

Wow, das ist cool! Gute Arbeit, Robert. :rocket: Danke, dass du das gemacht und verfĂĽgbar gemacht hast! :slight_smile:

Gegabelt!

11 „Gefällt mir“

Ich stehe noch ganz am Anfang, was das HinzufĂĽgen von benutzerdefinierten Widgets angeht, aber: Ich wĂĽrde mir eine Option wĂĽnschen, Widgets in einer nicht scrollenden FuĂźzeile in der mobilen Ansicht hinzuzufĂĽgen.
Wäre dies mit einer zukünftigen Version dieser Komponente möglich?

4 „Gefällt mir“

Derzeit sind keine zusätzlichen „Bars“ geplant, aber vielleicht, sobald sich die Dinge beruhigt haben und der TC eindeutig stabil ist …

… PR oder Sponsoring sind ebenfalls immer willkommen :+1:

5 „Gefällt mir“

Das sieht fantastisch aus – Danke! Könnten Sie bitte ein Beispiel dafür geben, wie die Einstellungen für die Einbindung des Tag-Listen-Widgets in eine der Seitenleisten aussehen?

Zum Beispiel, laut der Anleitung sollte dies funktionieren…

Aber die linke Seitenleiste zeigt immer noch nur das große A…

3 „Gefällt mir“

Zwei Dinge:

Erstens, hier sind ähnliche Einstellungen von StarZen:

Der Komponentenname ist tatsächlich derselbe wie der Dateiname in der Komponente (ich werde das zum OP hinzufügen)

https://starzen.space

Zweitens, es ist wirklich albern, aber man muss auf Speichern klicken und auf das Häkchen tippen, nachdem man auf Speichern geklickt hat.

Es ist ein doppeltes Speichern! :man_facepalming:

Das ist die Natur der aktuellen Theme-Einstellungen von Core, nicht von Bars. Ich werde vielleicht eine Notiz dazu im OP hinzufĂĽgen.

5 „Gefällt mir“

Ja, ich habe das doppelte Speichern gemacht :slight_smile:

Trotzdem muss ich etwas ĂĽbersehen, denn das Ergebnis ist dasselbe. Gibt es noch etwas, das ich zur VerfĂĽgung stellen kann, um zu helfen?

1 „Gefällt mir“

Teile deine Einstellungen-JSON (Schaltfläche unten in TC).

3 „Gefällt mir“
[
	{
		"setting": "bar_components",
		"value": "[{\"component_name\":\"layouts-tag-list-widget\",\"route\":\"discovery\",\"position\":\"left\"},{\"component_name\":\"big-b\",\"route\":\"discovery\",\"position\":\"left\"},{\"component_name\":\"big-c\",\"route\":\"discovery\",\"position\":\"right-alt\"},{\"component_name\":\"big-d\",\"route\":\"discovery\",\"position\":\"right-alt\"},{\"component_name\":\"big-e\",\"route\":\"discovery\",\"position\":\"top\"},{\"component_name\":\"big-f\",\"route\":\"discovery\",\"position\":\"top\"},{\"component_name\":\"big-c\",\"route\":\"topic\",\"position\":\"right\"},{\"component_name\":\"big-d\",\"route\":\"topic\",\"position\":\"right\"},{\"component_name\":\"big-e\",\"route\":\"topic\",\"position\":\"top\"},{\"component_name\":\"big-a\",\"route\":\"categories\",\"position\":\"left\"},{\"component_name\":\"big-c\",\"route\":\"category\",\"position\":\"left\"},{\"component_name\":\"big-b\",\"route\":\"tag\",\"position\":\"right\"}]"
	},
	{
		"setting": "left_sidebar_width",
		"value": 300
	},
	{
		"setting": "right_sidebar_width",
		"value": 300
	},
	{
		"setting": "sticky_sidebars",
		"value": true
	},
	{
		"setting": "sidebar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_height",
		"value": 800
	},
	{
		"setting": "scrolly_sidebars",
		"value": false
	},
	{
		"setting": "top_bar_height",
		"value": 150
	},
	{
		"setting": "top_bar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_gap",
		"value": 5
	},
	{
		"setting": "rightalt_sidebar_gap",
		"value": 5
	}
]

Ihr component_name ist immer noch falsch, siehe mein Beispiel und Sie möchten vielleicht den Rest löschen.

Hmm… OK, ich habe alle bis auf die erste gelöscht und den Namen so geändert, dass er mit Ihrem übereinstimmt (obwohl der Komponentenname vom TC kommt GitHub - merefield/discourse-tc-bars-tag-list-component: The Tag List Widget allows you to display tags from Discourse in a sidebar using Pavilion's Custom Layouts Plugin. - wo finde ich, dass der richtige Komponentenname layouts-tag-list ist?)

Das Ändern des Komponentennamens im Modal scheint ihn jedoch nicht in den Einstellungen-JSON zu ändern oder die restlichen Elemente zu entfernen, selbst nach einem doppelten Speichern…

[
	{
		"setting": "bar_components",
		"value": "[{\"component_name\":\"layouts-tag-list-widget\",\"route\":\"discovery\",\"position\":\"left\"},{\"component_name\":\"big-b\",\"route\":\"discovery\",\"position\":\"left\"},{\"component_name\":\"big-c\",\"route\":\"discovery\",\"position\":\"right-alt\"},{\"component_name\":\"big-d\",\"route\":\"discovery\",\"position\":\"right-alt\"},{\"component_name\":\"big-e\",\"route\":\"discovery\",\"position\":\"top\"},{\"component_name\":\"big-f\",\"route\":\"discovery\",\"position\":\"top\"},{\"component_name\":\"big-c\",\"route\":\"topic\",\"position\":\"right\"},{\"component_name\":\"big-d\",\"route\":\"topic\",\"position\":\"right\"},{\"component_name\":\"big-e\",\"route\":\"topic\",\"position\":\"top\"},{\"component_name\":\"big-a\",\"route\":\"categories\",\"position\":\"left\"},{\"component_name\":\"big-c\",\"route\":\"category\",\"position\":\"left\"},{\"component_name\":\"big-b\",\"route\":\"tag\",\"position\":\"right\"}]"
	},
	{
		"setting": "left_sidebar_width",
		"value": 300
	},
	{
		"setting": "right_sidebar_width",
		"value": 300
	},
	{
		"setting": "sticky_sidebars",
		"value": true
	},
	{
		"setting": "sidebar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_height",
		"value": 800
	},
	{
		"setting": "scrolly_sidebars",
		"value": false
	},
	{
		"setting": "top_bar_height",
		"value": 150
	},
	{
		"setting": "top_bar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_gap",
		"value": 5
	},
	{
		"setting": "rightalt_sidebar_gap",
		"value": 5
	}
]

Wie ich oben erklärt habe (und nun im OP näher erläutert habe), ist der Komponentenname nicht der Name der Theme Component (die viele Ember Glimmer Components enthalten könnte), sondern der Name der tatsächlichen Ember Component:

also layouts-tag-list

Dies ist ein nützliches Missverständnis, ich werde es im OP weiter verdeutlichen, indem ich dieses Beispiel verwende.

Ich bin mir nicht sicher, warum Ihre Einstellung hartnäckig ist :man_shrugging:

Versuchen Sie, die Theme Component zu löschen und erneut hinzuzufügen und den gleichen Vorgang durchzuführen.

Oder aktualisieren Sie einfach Ihren Browser?

Danke fĂĽr die Arbeit @merefield!

Wie unterscheiden sich Discourse Bars funktional von „Right Sidebar Blocks“ mit benutzerdefiniertem HTML, abgesehen davon, dass der Standort nicht nur rechts sein muss?

Bars ist der spirituelle Nachfolger von Pavilions Layouts, das vor RSB kam.

Aber im Vergleich zu RSB, hauptsächlich Multi-Route- und Multi-Position-Unterstützung (Bars zielt darauf ab, die Nützlichkeit und Flexibilität von Layouts zu reproduzieren), ist die entscheidende Ergänzung die Unterstützung von Topic-Routen. Außerdem unterstütze ich derzeit keine params … Ich bin noch auf keinen Anwendungsfall gestoßen. Ich bündele auch keine Komponenten außer den großen Demo-Buchstaben – das ist beabsichtigt und soll eher ein Admin/Entwickler-Framework sein (ähnlich wie Layouts).

Die Roadmap könnte auch ehrgeiziger sein – wenn ich eine Finanzierung erhalte, füge ich möglicherweise die mobile Funktionalität hinzu, die Layouts hatte – jeder kann mich kontaktieren, um diese Arbeit zu sponsern.

2 „Gefällt mir“

OK, ich habe sowohl die Bars TC als auch die Layouts-Tag-Liste TC gelöscht und neu installiert (ich habe versucht, sie einzeln und zusammen zu entfernen und wieder hinzuzufügen), aber die Ergebnisse sind alle gleich. Und ich habe jedes Mal aktualisiert, wie ich es zuvor auch getan habe. Ich habe auch meinen Browser-Cache gelöscht. :face_with_monocle:

Ich kann Ihr Problem mit festsitzenden Einstellungen nicht reproduzieren. Ich habe gerade eine linke Seitenleiste hinzugefĂĽgt und entfernt.

Ich wäre an weiteren Berichten über dasselbe interessiert.

Vielen Dank für Ihre investierte Zeit – ich werde es später heute auf einigen meiner anderen Discourse-Instanzen versuchen und mich erneut melden.

1 „Gefällt mir“

Ich habe jetzt auch alle Plugins entfernt, neu erstellt (und keine anderen TCs oder Themes installiert), und es ist eine frische Installation von letzter Nacht.

Falls es hilfreich ist, habe ich festgestellt, dass bei denselben Einstellungen wie oben die linke Seitenleiste zwar nirgendwo sonst angezeigt wird, aber auf der /latest-Route erscheint (wenn auch nur der Titel „Tags“, ohne Tags anzuzeigen).





Und hier ist die Einstellungs-JSON…

[
	{
		"setting": "bar_components",
		"value": "[{\"component_name\":\"layouts-tag-list\",\"route\":\"discovery\",\"position\":\"left\"}]"
	},
	{
		"setting": "left_sidebar_width",
		"value": 300
	},
	{
		"setting": "right_sidebar_width",
		"value": 300
	},
	{
		"setting": "sticky_sidebars",
		"value": true
	},
	{
		"setting": "sidebar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_height",
		"value": 800
	},
	{
		"setting": "scrolly_sidebars",
		"value": false
	},
	{
		"setting": "top_bar_height",
		"value": 150
	},
	{
		"setting": "top_bar_sticky_top_position",
		"value": 60
	},
	{
		"setting": "sidebar_gap",
		"value": 5
	},
	{
		"setting": "rightalt_sidebar_gap",
		"value": 5
	}
]

Sie müssen das selbst debuggen – überprüfen Sie Ihre Konsole, das Theme-CSS usw.

Bei mir funktioniert es:

Ich kann mich nicht erinnern, ob Layouts Tag List Tag Groups benötigt … könnte sein!

4 „Gefällt mir“

Ja, das Aktivieren von Tag-Gruppen in den Einstellungen (und das anschlieĂźende Erstellen einiger Tag-Gruppen) hat die Tags erscheinen lassen.

Das Festlegen der Route fĂĽr das Komponentenelement auf discovery zeigt jedoch immer noch nur die linke Leiste auf den Listen /latest, /new und /top an.

Könnten Sie so freundlich sein und mir eine Liste aller verfügbaren „Routen“ zeigen, die hier verwendet werden können?

Vielen Dank nochmals!

2 „Gefällt mir“