It would be nice to be able to override a single template without keeping a private copy of the entire template directory.
a setup option like
templatedirs => [ "my/dir", "/usr/share/ikiwiki/templates" ]
ought to do the trick.
Now that I look at the source, I see that ikiwiki already falls back to the global dir when it cannot find a template. For me, this is good enough. And it is even documented in the man page. Sigh. I guess this could be considered done.
I have a use case for this, a site composed of blogs and wikis, templates divided in three categories : common, blog and wiki. The only solution I found is maintaining hard links, being able to have multiple template dirs would obviously be better. -- Changaco
underlay used to allow adding extra templatedirs, but Joey removed that functionality when he made templates search the wiki's own
templates
directory.You can get a 3-level hierarchy like this:
- instance-specific overrides: $srcdir/templates
- common to the entire site: a directory that is the value of all instances'
templatedir
parameters- common to every ikiwiki in the world: /usr/share/ikiwiki/templates (implicitly searched)
(by "instance" I mean an instance of ikiwiki - a .setup file, basically.)
For a more complex hierarchy you'd need the old underlay functionality, i.e. you'd need to (ask Joey to) revert the patch that removed it. For instance, if anyone has a hierarchy like this, then they need the old functionality back in order to split the template search path for the things marked
(???)
:every ikiwiki in the world (/usr/share/ikiwiki/templates) \--- your site (???) \--- your blogs (???) \--- travel blog ($srcdir/templates) \--- code blog ($srcdir/templates) \--- your wikis (???) \--- travel wiki ($srcdir/templates) \--- code wiki ($srcdir/templates)
This looks pretty hypothetical to me, though... --smcv
The reason I removed it is because the same functionality of having multiple template directories is still present. Just put them in the templates/ subdirectory of multiple underlay directories instead. --Joey
Thanks, I didn't realize this was possible. Problem solved. -- Changaco
We can consider this done, then. For reference, the solution to the hierarchy I mentioned above would be:
all your sites have $your_underlay as an underlay the blogs and wikis all have $blog_underlay or $wiki_underlay (as appropriate) as a higher priority underlay every ikiwiki in the world (/usr/share/ikiwiki/templates) \--- your site ($your_underlay/templates, or templatedir) \--- your blogs ($blog_underlay/templates) \--- travel blog ($srcdir/templates) \--- code blog ($srcdir/templates) \--- your wikis ($wiki_underlay/templates) \--- travel wiki ($srcdir/templates) \--- code wiki ($srcdir/templates)
--smcv