@jensens: Thanks for your answer; this
ptf explanation is interesting.
I'm not yet sure I want something more permanent already; I'm currently splitting up my monolithic old-style Zope product to eggs, then I'll take on the migration of my Archetypes-based types to Dexterity and finally switch my Plone 4.3 site to Plone 5, probably directly to 5.1.
z3c.jbot allows me to do, is: inject templates (and images, etc.) into existing skin layers defined elsewhere, right? I do have my own skin layers already which I can use.
Here are my considerations, comments welcome:
If I'm sure my overridden templates will work for the whole range of possible package versions, I can use the
z3c.jbot solution or my own skin layer; the latter has the advantage of unchanged filenames (handy for file comparisons), while in case of
z3c.jbot the filenames contain the package names as well.
If I'm less sure, I could stick with the
zcml:condition, I could create a
.vcheck.mangled_package_name module for every optional
package_name package which will be imported if the
package_name package is present, and will raise a suitable exception if the version would not match my whitelist.
If this is the case, I'd check whether the overridden templates of that package have changed since the last version, and link my existing template to the new version as well (if unchanged) or create a new version of my override template which is suitable for the new version.