Before I continue, I'd like input on what sorts of fields we'd like to be able to customize. It's possible to change later, but migrations are always time-consuming so it would be good to have something we can agree on for the time being. Right now, this is what I have:
class BundledLayoutDocument(WebPageDocument):
bundle_name = models.CharField(_('bundle name'), max_length=255)
layout_title = models.CharField(_('layout title'), max_length=255, blank=True)
I'm thinking bundle_name would be a drop-down list of installed bundles. layout_title is what you might substitute at the beginning of <title> for example. We can have fields which are FileDocument pointers.
I'm open to all suggestions for what fields to have, and what to name them (and what to name the classes).
As for where we store the bundles, I'm thinking each module (including cms) would have a folder called something like bundledlayouts, with one or more html files (which store Django template code). When a webmaster is choosing a bundled layout, they would see a drop-down list of all html files in all modules combined, and can choose one. Each html file would be able to reference static resources in its module's static folder.