Shared blocks on every News Item: has anyone solved this?

Every news item on our sites ends with the same set of blocks: a latest-news carousel and often a form or call to action. When we want to change one of them, we have to open every old news item and change it there. Ain't nobody got time for that!

What I've found so far:

  • Content-type layouts only set the defaults for new items. Existing items keep their own copies.
  • Volto slots (aboveContent / belowContent with ContentTypeCondition) do the right thing on the page, but they're set up in code. Every change means a release.
  • Classic portlets did exactly this, but Volto doesn't support them.

What I'm thinking of building: a control panel. An admin picks a content type, builds the block there with its normal editor, chooses above or below the content, and manages exclusions (single items or whole folders) in the same place. The page renders it through Volto's existing slots. (I have quite literally just described the old Portlets interface)

Before I move on this:

  • Has someone already done this, or something close?
  • Is there a reason it's a bad idea that I'm not seeing?
  • Has anyone got a form block (volto-form-block) working outside the page's own blocks? It submits to /@submit-form, which looks for the block on that page.

If you've hit the same problem, I'd love to hear how you handled it, and I'd be happy to collaborate on it.