nti.nikola_chameleon support themes that extend themes. In fact, with a well designed and documented base theme, nti.nikola_chameleon makes it easy to customize as much or as little as you’d like.
Extending a theme is just like creating a theme.
The only difference is that you need to specify the
that you’re extending by name. For example, here’s the theme meta file
bootstrap3-chamaleon theme, which extends the
[Theme] engine = nti.nikola_chameleon author = NextThought author_url = license = Apache2 based_on = Bootstrap 3 <https://getbootstrap.com/> tags = bootstrap parent = base-chameleon [Family] family = bootstrap3 [Nikola] bootswatch = True
From that point on, you can override and customize the necessary pieces of the theme. Specifically how you do that will depend on the theme you’re extending.
If you have a
*.tmpl.pt with the same name as one from the parent
theme, your file will replace that file when it is used as a
template name by Nikola and when it is used as
a view name for the purposes of using macros.
(Make sure you define the necessary macros!) This is a little bit
blunt, so we don’t usually recommend replacing entire files (or using
file views to find macro names for that matter).
Any macros you define with the same name (and specificity) as macros
defined by the parent theme will replace the parent theme macros. For
example, any macros defined in
*.macro.pt files in your theme will
override such macros defined in
*.macro.pt files in the parent
theme (because macros defined that way all have the same, very low,
You can override a macro of a given name for only some kinds of objects with an appropriate definition in your theme.zcml.
Extending and Replacing Viewlets¶
Adding to or replacing viewlets defined in the parent theme is the same as doing so in a single theme: just pay attention to the names and the specificity of your viewlet declarations.