Add theme component functionality to allow more convenient template editing

Right now, if you want to make additional customisations to a template on top of a theme, you have to edit your copy of the theme.

I am guessing that you would also need to keep making those edits each time the base theme is updated, by downloading the base theme again, editing it, and re-uploading your own copy.

E.g. if you want to hide the subscribe buttons on the Casper theme, you would need to edit HBS files in the Casper zip.

And here are other cases where if you want to override templates, you need to edit the files accepting that they’ll be overridden with each update again.

Same with editing email templates:

And Casper: How to move text up into main image? - #2 by Stromfeldt

I am aware that Ghost has code injection but these appear to apply only to the header and footer.

I know that Discourse, for example, has theme component functionality which allows you to override templates. You copy the contents of a whole template into a theme component, edit or remove parts, and those changes will remain intact when the theme component is used with a theme. The theme can be updated independently of the theme component.

Allowing people to use theme components would make it more convenient, at least, to make changes that they may not want to have from Ghost core themes and others’ themes.

I downloaded “Dawn” and changed the theme name and everything related to it. I have no idea if doing so means that it will not be updated when the original theme is updated or not, but it might be worth looking into.