Wann sollte man ein Plugin oder eine Theme-Komponente verwenden?

Ich muss kleine Änderungen an einigen Ansichten vornehmen:
Z.B.:

Muss ich für jede Änderung ein Plugin erstellen? Auch wenn es nur sehr klein ist, wie z. B. nur CSS?
Vielen Dank für Ihre Hilfe.

1 „Gefällt mir“

Nein, Plugins werden nur benötigt, wenn Sie das Backend ändern möchten.

Wenn es sich nur um eine lokale Änderung handelt, können Sie zu Admin → Anpassen → Thema gehen und Änderungen in einer neuen Themenkomponente eingeben und diese dann zu Ihrem aktuellen Thema hinzufügen.

Schauen Sie sich https://meta.discourse.org/c/documentation/theme-developers/127 an, insbesondere:

8 „Gefällt mir“

Danke!
Wenn ich also ein Label ändern oder einen Tooltip hinzufügen muss, muss ich ein Theme erstellen, aber wenn ich eine neue Spalte zu einer Seite hinzufügen muss (z. B. zur Themenliste), muss ich ein Plugin erstellen?

Der Unterschied ist dieser:

  • Wenn Sie die API ändern müssen, z. B. Daten in einer .json-Route, Änderungen an der Autorisierung oder der Backend-Verarbeitung von Daten, benötigen Sie ein Plugin.
  • Für viele Frontend-Änderungen, die keine unterschiedlichen Daten benötigen, reicht ein TC aus. Das heißt, viele präsentationsbezogene Änderungen oder jede Logik in JavaScript, die nicht sensibel ist.
5 „Gefällt mir“

Und ein Graubereich (der hier, glaube ich, nicht zutrifft) ist, wenn Sie Daten benötigen, die nicht verfügbar sind (wie benutzerdefinierte Felder des Benutzers), könnten Sie entweder AJAX verwenden, um diese Daten bei Bedarf mit JavaScript abzurufen, oder ein Plugin haben, das die Daten zum Serializer hinzufügt.

5 „Gefällt mir“

ok danke. In der Anleitung verstehe ich nicht, wie ich ein TC lokal einrichten und importieren kann, es gibt nur ein Beispiel für ein Remote-Gerät.

Ich würde vorschlagen, dieses wunderbare Werkzeug zu verwenden, um TC einfach lokal zu erstellen:

2 „Gefällt mir“

Es sei denn, Sie haben eine sehr kleine CSS-Änderung, empfehle ich die Verwendung eines Remote-Themes oder des CLI-Tools.

Aber wenn Sie auf „Theme installieren“ klicken, können Sie ein Theme (oder eine Theme-Komponente, wenn Sie dies auf der Komponentenseite tun) erstellen.

Innerhalb der Kategorie-Themenliste muss ich eine neue Spalte mit der Spalte „created_at“ hinzufügen und das Datum von „tiny“ auf erweitert ändern (z. B. DD/MM/YYYY HH:MM)

Wenn Sie neue Dinge zu einer Vorlage hinzufügen möchten, würde ich mit GitHub - discourse/discourse-theme-skeleton: Template for Discourse themes beginnen, aber ich weiß nicht, wie ich dort eine Spalte hinzufügen kann. Ich schätze, es gibt einige JavaScript-Magie, die Sie tun könnten, aber das ist nicht mein Fachgebiet.

Sie wissen, dass Sie diese Informationen sehen können, wenn Sie mit der Maus darüber fahren, oder?

Siehe auch Plugin-Outlet-Standorte Theme-Komponente, aber dort gibt es kein Plugin-Outlet.

2 „Gefällt mir“

Du hast diese Plugin-Outlets: topic-list-after-columns und topic-list-header-after.

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/list/topic-list-item.hbr#L90

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/raw-templates/topic-list-header.hbr#L27

Gut bemerkt. Es schien falsch, dass es dort keinen Auslass gab. Ich schätze, die Theme-Komponente zeigt ihn einfach nicht an.

1 „Gefällt mir“

Die Plugin-Outlet-Locations-Themenkomponente zeigt derzeit keine Roh-Outlets an.

Diese Themenkomponente zeigt Ihnen, wie Sie eine Spalte hinzufügen: GitHub - discourse/discourse-add-category-column

3 „Gefällt mir“