I just wanted to share an illustration of why the lack of nested modular blocks makes DatoCMS much harder to set up than other systems. It’s really hard to decide if a “component” (like a layout or feature) should be a model or a block, and whether to reference that component inside a Link, Modular Content, or Structured Text. There are pros and cons to each approach but none is perfect (schema cleanliness vs editor UI differences), and the decision is both confusing and inflexible (can’t be changed after setup). It makes composing more complex layouts very difficult…
Looking for a solution here too. But this can be solved, at least in part with a Field Editor Plugin. Similar to JSON Table - Plugins - DatoCMS
I’ll be making one for a project I’m working on. I’ll make it available once it’s done. But it will probably be a couple months before I am able to complete it.
The limitation I see may be around validation, and customer field editors within the plugin itself, like a Markdown editor for example. I think most things can be done in the plugin though given enough effort.
Hi guys, just wanted to do a little update here from DatoCMS team!
We are perfectly aware of this limitation, and we think about it more or less every day We are just waiting for the right moment to deal with this, and I’d say that by the end of the year we should be able to close the matter once and for all.
We are still 100% convinced that blocks are a great thing, and we are proud to be one of the few CMS (or the only one?) to have a feature so powerful:
Blocks allow you to create repeatable and reusable structures
Blocks are 100% customizable
Blocks do not count towards your plan records limit
Blocks keep your project clean, avoiding orphaned records everywhere in your project
Most importantly, on top of everything else, blocks keep content 100% structured (no random JSON, validations enforcement, possibility to reference other records/assets without workarounds, etc.). This means simple data migrations, data integrity and full control of your own content, which is what we care the most.
But… as @roger says, we also know that, without the possibility to nest them, it’s hard to decide if a “component” should be a model or a block. Even worse, a block may have to become a model in the future, simply because it might be requested within other blocks.
So. Hold tight. We’re getting there. And thanks for your support!
Thats great to hear. This will be a gamechanger for me and my team using Dato on a current new site build for a client. We need this to complete many features that are in the works. The sooner the better
That’s helpful to know it’s in the pipeline @s.verna, looking forward to seeing it. At the moment I’m really struggling to see where to use blocks compared to models (in most of my cases I seem to find that my reusable blocks that can’t be reused!!). This should address that.
If it’s a struggle to do full nesting, you could do a partial solution of inlining. A bit like subclassing an object, you could get all the fields from one block and add a field to them to form a new one.
hey @leticia no real ETA, but we are doing a final round of testing. We need to finalise the documentation and then we’ll release it. So very soon, but we don’t have deadlines. When it’s ready it will be released. Very likely in the next month or so.