Benutzerdefinierte Komponenten - Button oder Text an beliebiger Plugin-Ausgabe hinzufügen

| | | |\n|— | — | —|\n|:information_source: | Zusammenfassung | Schaltfläche oder Text überall hinzufügen|\n|:hammer_and_wrench: | Repository | https://github.com/literatecomputing/discourse-custom-components|\n|:question: | Installationsanleitung | So installieren Sie ein Theme oder eine Theme-Komponente|\n|:open_book: | Neu bei Discourse Themes? | Anfängerleitfaden zur Verwendung von Discourse Themes|\n\n\u003c!-- Füllen Sie „repoName“ und „repoURL“ für die Schaltfläche zur automatischen Installation aus –\u003e\n\n[wrap=theme-install-button repoName=“Custom Components“ repoUrl=“https://github.com/literatecomputing/discourse-custom-components“]\nInstallieren Sie diese Theme-Komponente\n[/wrap]\n\n\u003c!-- Beschreiben Sie dieses Theme/diese Komponente in ein oder zwei Sätzen –\u003e\n\nFügen Sie einen Link-Button oder beliebigen Text an jedem Plugin-Outlet hinzu. (Ignorieren Sie die Wasserzeichen in den Bildern – ich habe diese Screenshots auf einer Staging-/Testseite gemacht.)\n\n\u003c!-- Fügen Sie Screenshots hinzu (falls zutreffend) –\u003e\n\n

\n\n\n\n\n\n\u003c!-- Fügen Sie weitere Details hinzu und erklären Sie die Einstellungen (falls zutreffend) –\u003e\n\nIch habe dieses Plugin für jemanden entwickelt, der auf Benutzerprofilen und Benutzerkarten eine Schaltfläche „Klicken Sie auf diese Schaltfläche, um sich anzumelden, damit Sie PMs senden können“ anzeigen wollte. Sie wollten, dass die Schaltfläche angezeigt wird, wenn der Benutzer keine PMs senden kann. Da ich nicht immer so clever bin, wie ich gerne denke, habe ich die Komponente mit Gruppen geschrieben, um zu bestimmen, ob die Schaltfläche angezeigt wird. Ein Problem bei diesem Ansatz war, dass Mitarbeiter nicht zur Abonnentengruppe gehörten, sodass sie die Schaltfläche „Sie müssen abonnieren“ erhielten, obwohl sie PMs senden konnten. Außerdem war die Gruppe versteckt, 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 die Schaltfläche angezeigt werden soll.\n\n### Für wen ist das?###\n\nWenn Sie eine Schaltfläche mit einem Link darin oder einen 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 Link-Button „Sie sollten abonnieren“ zwischen jeder Nachricht einfügen, außer bei denen, die keine Mitglieder sind? Das erledigt das. Sie möchten beliebige HTML-Elemente an einem Plugin-Outlet anbringen, nur um zu sehen, wie es aussieht? Das erledigt das.\n\n### Wie es Entwicklern hilft###\n\nDieses Theme enthält einige einfache Beispiele, wie man:\n- die Objects type for theme setting verwendet\n- api.renderInOutlet verwendet (wie hier beschrieben), um eine Glimmer-Komponente an einem Outlet anzubringen, das von einer Einstellung gesteuert wird, anstatt eine Datei im Verzeichnis connectors zu erstellen\n- eine einfache Glimmer-Komponente schreibt, die auf currentUser zugreift\n- Eine Komponente in einer anderen (Inline-)Vorlage verpackt, um Daten an sie zu übergeben\n- Beliebige HTML-Elemente aus einer Theme-Einstellung ohne die Einschränkungen von Markdown anzeigt – Sicher, vielleicht \n[quote=„Discourse, post:1, topic:82557“]\nSie können hier den Ember-Helper html-safe verwenden, und er wird das HTML anstelle des Textes rendern.\n[/quote]\n\naber wenn Sie versuchen, dies innerhalb einer \u003ctemplate\u003e innerhalb einer .gjs-Datei zu tun, funktioniert es etwas anders (wie {{htmlSafe component.text}})

15 „Gefällt mir“

Leerzeichen machen den Text nicht fett.


Tolles Bauteil!

5 „Gefällt mir“

Wäre es möglich, Platzhalter zu den Button-URLs hinzuzufügen, z. B. damit die URL die Themen-ID enthält, auf der sich der Benutzer befindet?

Ich bin mir nicht ganz sicher. Wenn Sie ein Budget haben, werde ich es mir ansehen.

Was würde Ihr Button tun, wenn er die Topic-ID hätte?

Wenn Sie es herausfinden und einen PR machen möchten, werde ich ihn wahrscheinlich akzeptieren.

Ich bin ziemlich sicher, dass die Antwort nein ist, aber dass Sie den hier beschriebenen Workaround verwenden könnten

2 „Gefällt mir“

Hallo @pfaffman

Wir möchten eine solche Schaltfläche zu jedem Thema für Mitglieder unserer Benutzergruppe für Geschäftskonten hinzufügen.
Die Schaltfläche würde dann das Erstellen einer neuen privaten Nachricht auslösen, die die aktuelle URL enthält, auf der sich der Benutzer befindet.

Auf diese Weise können unsere Geschäftskunden uns Anfragen senden, um bestimmte Themen anzuheften, hervorzuheben oder zu “sponsern”.

1 „Gefällt mir“

Wie Sie wissen, können Sie eine URL erstellen, die einen neuen Topic-Composer öffnet. Sie könnten diese URL zu dem Link machen, der von der Theme-Komponente hinzugefügt wird.

Ich glaube nicht, dass dies ohne das Hinzufügen von Code zur Theme-Komponente möglich ist (aber vielleicht doch?). Vielleicht hat jemand eine Idee dazu und bietet diese Lösung hier (oder im anderen Topic) an. Wenn nicht, können Sie mich kontaktieren oder in Marketplace mit einer Beschreibung dessen, was Sie benötigen, und einem Budget posten.

3 „Gefällt mir“