Entwicklung von Discourse-Plugins - Teil 2 - Verbindung zu einem Plugin-Outlet

Yes, and presumably you can apply to every available Theme so this can’t be switched off? (to address @sarahann concern about this approach).

I could use display: none but it might now be as secure as we need it to be. And I figured it would be helpful to have a discussion on how to remove / change Discourse UI templates.

2 „Gefällt mir“

It’s tricky to do properly, unfortunately. For a big customer of ours who needs functionality removed, my approach has been to hide the elements with CSS and remove the controller side actions by using add_to_class to overwrite the methods with an error in plugin.rb.

9 „Gefällt mir“

I have a same problem. I’m working on plugin with topic, and I have to change the html structures but it’s impossible with only CSS. So I was tried to overwrite template but changes never applied.
So do you have find any solution for that?

You can override any template in the application if you like (although outlets are always preferred!). How were you doing it? did you confirm the name is exactly the same as the template you are replacing?

3 „Gefällt mir“


I tried to override the “list/topic-list-item.raw.hbs” template, but even though I removed all of the content in template, the topic items still appearing as original, any changing in override template never worked.
Please help me what I was wrong.

See: https://github.com/SamSaffron/discourse-simple-theme for an example of how it is done.

4 „Gefällt mir“

Hello,
When I run the command git grep “plugin-outlet” – “*.hbs” in my Linux Terminal, nothing shows up. Any ideas why? Thanks for your help!

Caveat: This is a sysadmin answer, not a plugin developer answer, and I can’t guess what you might have done before you did your git command.

Did you add it to git? What about

 grep -r plugin-outlet .
2 „Gefällt mir“

Building on Jay’s shoulders here, you can of course focus on the specific file type:

grep -r "plugin-outlet" --include \*.hbs

3 „Gefällt mir“

Is there anything you need to consider differently if the plugin outlet looks like this?

{{plugin-outlet name="users-top" connectorTagName="div" args=(hash model=model)}}

do the connectorTagName and args attributes mean that plugin developers have particular constraints or extra accesses when using these outlets?

Yes you are meant to work with the API that the outlets establish.

In the users-top you are passed a model which you can use, and the connector will be rendered with a div in this case.

2 „Gefällt mir“

Ich habe {{plugin-outlet}} nicht gefunden. Ich habe einige Komponenten mit demselben Namen gefunden. Sind sie dieselben?

grafik

1 „Gefällt mir“

Ich glaube, der Code von Discourse hat sich geändert und die Anleitung ist möglicherweise veraltet.

Ich suche nach diesem Beispiel:

Ich habe stattdessen Folgendes gefunden:

https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/app/templates/topic.hbs#L80

Und mit dieser erstaunlichen Theme-Komponente (deprecated) Plugin outlet locations theme component sehe ich diesen Outlet, wo er sein sollte:

Um Ihre Frage zu beantworten: Ich vermute, es ist dasselbe, aber mit einer neuen Syntax.

3 „Gefällt mir“

Ich habe auch dieses Tag gefunden. Könnte jemand bestätigen, dass sie alle gleich sind?

{{~raw-plugin-outlet name="topic-list-after-title"}}

Die aktuellste Referenz zu Plug-in-Outlets finden Sie hier:

Ich werde versuchen, den OP in den nächsten Tagen hier zu aktualisieren.

5 „Gefällt mir“

OP mit der neuen Syntax und einem Link zur vollständigen Dokumentation aktualisiert

6 „Gefällt mir“

Ich denke, der Befehl sollte auf Folgendes aktualisiert werden:

git grep "<PluginOutlet" -- "*.gjs"

Dieser Link besagt „veraltet“ (deprecated).

Bearbeitung: Ich habe den Link gefunden, um einen PR unter dem obersten Beitrag zu erstellen, also habe ich einen PR erstellt.

1 „Gefällt mir“

Ersetzt durch:

https://meta.discourse.org/t/introducing-discourse-developer-toolbar/346215?u=merefield

2 „Gefällt mir“