Parent-Child Themes

Parent-Child Themes


A few times now we've been asked to build a Site Theme, then make just a few changes to the branding or color palette for a sub-ministry.

There are a number of ways to approach this idea, and probably the equivalent caveats with each.

The first and fastest approach is to simply clone the Theme and make the adjustments to the new Theme. However, over time, it gets harder and harder to keep each of those "sibling" themes in sync with updates, bug fixes or new features.

Another approach we've used is to create a simple Page Attribute with a "brand color" setting, which overrides the Theme color. This keeps us with just a single Theme to maintain, but that attribute appears on every Page of the site, while only being used on the sub-ministry pages that require the override. It's also clunky if there are more than just a few values that need to be customized and overwritten with the Attributes.

What I really wanted was a "master" theme that holds all of the Styles and Assets, then a "child" theme that references that parent for everything except the pieces needing to be customized. Specifically, the /Styles/_variable-overrides.less and /Styles/_css-overrides.less values could be specified in the Rock compiler, generating theme-specific files for each. This feels similar to how you'd build a Child Theme in Wordpress.

However, as I went about implementing that approach, I found that every Site in Rock needs a few literal files to function - Site.Master, every Layout file being used, and at least /Styles/_variables.less need to be literal files in the Theme folder.

So at this point, I'm still keeping all my Lava templates and script assets in my Master Theme, and referencing them using "~/Themes/Master/..." notation instead of the more convenient "~~/..." -- we'll see how it goes. I'd love to hear more thoughts or stories about approaches to this issue.

Photo of Ben Goshow Submitted by Ben Goshow, Fishhook  ·   ·  CMS
Login to add a comment...