Idea summary
What is the problem to solve?
As a content editor, I want to be able to create pieces of content which can be embedded on different pages.
Example: I create a node type called 'Hero', I add content to this hero, which goes through its own review process to be published. These nodes then are placed on another page via panels, panelizer, or the new layout hotness.
Currently, there is no way to do this without using the entity_blocks module or creating your own custom block plugin.
Who is this for?
Content authors, site managers, (advanced) site builders, frontend developers, site owners.
Result: what will be the outcome?
By placing this in core, it'll give content editors built in functionality to embed reusable blocks or 3rd party content.
How can we know the desired result is achieved?
By seeing people using the layouts system in core and embedded these content blocks on landing pages.
Original Details
Behold, this contrib module:
https://www.drupal.org/project/entity_block β
This is a module that provides a single block plugin which, via a deriver, allows one to display any viewable entity type in a block. You choose the entity to display using an autocompleting text field, and can select the view mode to use on a per-block basis. I think this functionality should be merged into the core Block module.
I discussed briefly with @tim.plunkett on IRC, and although there is no technical reason not to do this, he pointed out that you can cover most of this use case with the Block Content module. I think this approach presents two major advantages over Block Content, though:
1. You don't have to create a new block type, and indeed a new entity reference field, for every entity type you'd like to display in blocks. You can just instantiate the appropriate derivative, and off you go. It requires less configuration infrastructure (which might mean better performance).
2. You can choose which view mode to use for each block. Using Block Content, you'd be choosing the view mode for all blocks of that type, and that's the only view mode that could be used. This approach would allow you to define two separate blocks which show the same entity in two different view modes, respectively. That'd be quite difficult with Block Content and involve a lot of extra infrastructure and configuration.
I think it is quite a common use case to want to just display entities in blocks which can then be positioned freely around the page. I'd like to know if other people think this would be valuable for core to provide, and if there is enough buy-in, I am happy to produce a patch.