Sviluppo di plugin per Discourse - Parte 2 - Connettersi a un 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 Mi Piace

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 Mi Piace

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 Mi Piace


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: GitHub - discourse/discourse-simple-theme: Sam's simple discourse theme for an example of how it is done.

4 Mi Piace

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 Mi Piace

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

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

3 Mi Piace

C’è qualcosa da considerare diversamente se il plugin outlet appare così?

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

Gli attributi connectorTagName e args significano che gli sviluppatori di plugin hanno vincoli particolari o accessi aggiuntivi quando utilizzano questi outlet?

Sì, è previsto che tu lavori con l’API che gli outlet stabiliscono.

In users-top ti viene passato un model che puoi utilizzare, e il connettore verrà renderizzato con un div in questo caso.

2 Mi Piace

Non ho trovato {{plugin-outlet}}. Ho trovato alcuni componenti con lo stesso nome. Sono uguali?

grafik

1 Mi Piace

Penso che il codice di Discourse sia cambiato e che la guida potrebbe essere obsoleta.

Sto cercando questo esempio:

Ho trovato questo invece:

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

E usando questo fantastico componente tema (deprecated) Plugin outlet locations theme component posso vedere questo outlet dove dovrebbe essere:

Per rispondere alla tua domanda, la mia ipotesi è che sia lo stesso, ma con una nuova sintassi.

3 Mi Piace

Ho trovato anche questo tag. Qualcuno può confermare che siano tutti uguali?

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

Il riferimento più aggiornato sulle prese plug-in è qui:

Cercherò di aggiornare l’OP qui nei prossimi giorni.

5 Mi Piace

OP aggiornato con la nuova sintassi e un link alla documentazione completa

6 Mi Piace

Penso che il comando dovrebbe essere aggiornato in:

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

Quel link dice “deprecato”.

Modifica: Ho trovato il link per creare una PR sotto il post principale, quindi ho creato una PR.

2 Mi Piace

Sostituito da:

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

3 Mi Piace