layout_builder_ipe
The Layout Builder IPE module provides frontend In-Place-Editing (IPE) for Layout Builder, similar to what Panels IPE used to do in Drupal 7.
Base functionality
On full view pages of a content entity that uses Layout Builder and allows to customise each entity, a "Customize" link will be displayed at the bottom of the page. Clicking that link will replace the content area with the layout builder interface, so that modifications can be done directly on the page. This replaces the need for navigating to the layout tab of the entity.
Confirmation forms for "Discard changes" and "Revert to default" will open in modal windows instead of displaying on their own page.
When used for page manager pages, this allows to edit page variants in the frontend theme using the frontend styles for content previews, which is not currently possible otherwise, see issue #3202600.
Additional features
- Allows to hide the local tasks while editing a layout using IPE
- Features additions to the base Layout Builder UI that allow to position blocks at a specified position. This is considered experimental and probably breaks other Layout Builder contrib modules that modify the functionality of the "Add block" button.
- Allows to override the default EntityChangedConstraint to have a smarter logic to determine if an entity can be saved or not (by default only the updated time is considered). This is considered experimental and probably breaks things in more complex setups.
- Non-concurrent editing. Use one editing session per user to keep work-in-progress config isolated.
- Content locking: Only one editing session per content entity. Content locks can be broken by users who have the "Break locks on Layout Builder IPE" permission
Recommended modules
Layout Builder IPE should work with all content entities that have full page displays, as well as with the Page Manager module for pages which use a Layout Builder variant type.
It also supports Gin Layout Builder and has been tested with Layout Builder Modal.
Known issues
Due to a bug in Drupal core there might be issues using this module on Drupal 10.3 with javascript aggregation enabled. The patch from #3467860: Ensure consistent ordering when calculating library asset order should solve that problem. See #3477283: Doesn't work when aggregating javascript files.