Getting started with implementing customizations by creating custom plugins


(se oli tonnin seteli) #1

So I’ve finally had the time to look into modifying Discourse, and as some of these modifications are getting a bit cumbersome and possibly dangerous to implement by using replace or copying files in app.yml, which I’ve managed so far, but I think the preferred method of creating custom plugins would make more sense to me certainly at some point…

For example, I’m not exactly sure how would one go about overriding particular behaviour that is not provided by a built-in plugin (but for other thing like a component or module?) especially if I understood correctly that builtin plugins should be removed before adding a custom one.

I know this is kind of a “So I heard about this thing called music, how do I make music myself?” -type of question, but currently I’m really baffled by the terminology and their relation and could use a brief overview of what affects what and where does it all come from.

Or (probably) even better, if someone could briefly assess if I’m on the right track if I intend to launch a virtual dev environment running recommended ubuntu + vanilla docker install and dig the innards with an IDE such as Rubymine?


(Robin Ward) #2

Right now we unfortunately don’t have a beginner’s guide to extending Discourse or anything like that. I’d like to provide something like that when I have a little extra time.

Until then the best way to learn how plugins work is to browse our discourse repo on github and see how various plugins work.

To answer your question about setting up development environments, I suggest you search for “development environment” topics for the platform of your choice, you’ll likely find a guide.


(se oli tonnin seteli) #3

This was my intention for now. I am hoping that I find something that overrides default behaviour to see how the existing behaviour is dealt with.