| Zusammenfassung | Schaltfläche oder Text überall hinzufügen | |
| Repository | https://github.com/literatecomputing/discourse-custom-components | |
| Installationsanleitung | So installieren Sie ein Theme oder eine Theme-Komponente | |
| Neu bei Discourse Themes? | Anfänger-Leitfaden zur Verwendung von Discourse Themes |
Diese Theme-Komponente installieren
Fügt an jedem Plugin-Outlet einen Link-Button oder beliebigen Text hinzu. (Ignorieren Sie die Wasserzeichen in den Bildern – ich habe diese Screenshots auf einer Staging-/Testseite aufgenommen.)
Um zu sehen, wo sich die Plugin-Outlets befinden, verwenden Sie Introducing Discourse developer toolbar, um sie zu finden. Wenn Sie nicht wissen, was ein Plugin-Outlet ist, können Sie sich Using Plugin Outlet Connectors from a Theme or Plugin ansehen, aber diese Komponente ermöglicht es Ihnen, mit einigen Einschränkungen, Text in jedem Plugin-Outlet einzufügen, ohne programmieren zu müssen oder wirklich zu verstehen, was ein Plugin-Outlet ist.
Ich begann mit der Entwicklung dieses Plugins für jemanden, der einen „Klicken Sie auf diesen Button, um zu abonnieren, damit Sie PMs senden können“-Button auf Benutzerprofilen und Benutzerkarten anzeigen wollte. Er wollte, dass der Button angezeigt wird, wenn der Benutzer keine PMs senden konnte. Da ich nicht immer so klug bin, wie ich gerne denke, habe ich die Komponente so geschrieben, dass sie Gruppen verwendet, um zu bestimmen, ob der Button angezeigt wird. Ein Problem mit diesem Ansatz war, dass sich Mitarbeiter nicht in der Abonnenten-Gruppe befanden, sodass ihnen der „Sie müssen abonnieren“-Button angezeigt wurde, obwohl sie PMs senden konnten. Außerdem war die Gruppe ausgeblendet, sodass sie sowieso nicht in einer Theme-Komponente verwendet werden konnte. Ich habe diese Theme-Komponente neu geschrieben, um currentUser.can_send_private_messages zu verwenden, um zu bestimmen, ob der Button angezeigt werden soll.
Für wen ist das gedacht?
Wenn Sie einen Button mit einem Link darin oder beliebigen Text einfügen möchten, der für bestimmte Gruppen angezeigt oder ausgeblendet wird, können Sie diese an jedem Plugin-Outlet einfügen. Sie möchten einen „Sie müssen abonnieren“-Link-Button zwischen jeder Nachricht einfügen, außer für diejenigen, die keine Mitglieder sind? Das erledigt diese Komponente. Sie möchten beliebige HTML an einem Plugin-Outlet einfügen, nur um zu sehen, wie es aussehen würde? Das erledigt diese Komponente.
Wie es Entwicklern hilft
Dieses Theme enthält einige einfache Beispiele dafür, wie man:
- das Objects type for theme setting verwendet
api.renderInOutletverwendet (wie hier beschrieben), um eine Glimmer-Komponente an einem Outlet einzufügen, das durch eine Einstellung gesteuert wird, anstatt eine Datei im Verzeichnisconnectorszu erstellen- eine einfache Glimmer-Komponente schreibt, die auf
currentUserzugreift - Eine Komponente in eine andere (Inline-)Vorlage einbindet, um Daten daran übergeben zu können
- Beliebigen HTML aus einer Theme-Einstellung frei von den Einschränkungen von Markdown anzeigt – Sicher, vielleicht
aber wenn Sie dies innerhalb eines <template> in einer .gjs-Datei versuchen, funktioniert es etwas anders (wie {{htmlSafe component.text}})



