Wondering whether anything like this already exists out there already. What I want to do is allow content for static blocks and CMS pages to be defined in specific content blocks that have individual fields with the content in them.
So, when editing a CMS Page, you would have a list of N content blocks which each contain their own set of fields based on the schema definition for that particular content block.
For example, imagine a page that has a hero section at the top with a hero image + title + subtitle, then below it a simple set of paragraphs, then below that a feature image set with a grid of feature images that have image + name + description.
That would look like:
- Block (hero)
- Title: (text field)
- Subtitle: (text field)
- Image: (image upload)
- Block (paragraphs)
- Content: (textarea)
- Block Set (features)
Each type of block would need to be defined in config.xml and have a template implemented by a developer. But once that work was done, the content admin should be able to put together relatively rich pages without having to touch HTML at all.
--
This is kind of similar to how I understand the Advanced Custom Fields (w/ the Repeater add-on) plugin for Wordpress to work: http://www.advancedcustomfields.com/
--
I'm guessing maybe Widgets could help with some/all of this? Not totally sure - I'm open to using them, but it would have to be relatively easy for the content admin to manage. The way that widgets are embedded within a wysiwyg like this I don't think is super friendly, especially if your page is going to be made up entirely of 5 or 10 or 20 of them: http://www.magentocommerce.com/images/uploads/kb/tutorial-creating-a-magento-widget/widget-in-wysiwyg-mode-1.png
I do not abide WordPress, so I wouldn't use anything that links through it. WP is still significantly a blog with blog-tainted CMS grafted on. It's a really unnatural CMS if you've tried other systems built around content definition. The fact that you need a plugin for that says a huge amount. Ditto for Magento's CMS.
I really like the way Statamic handles this with YAML fieldsets for schemas: http://statamic.com/learn/control-panel/fields-and-fieldsets
Anything more complicated than that is just getting in the way. Keep the schema + template-tagged markup in the codebase, and only use the admin for raw data. Of course Statamic's data is YAML also, so that makes it really easy to generate pages without screwing around with relational DB changes. Probably a can of worms.