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)