This module automatically generates "Layouts" for Drupal's Layout Builder by discovering and mapping objects. It allows you to define layout regions using attributes, enabling you to create reusable layout configurations with minimal code.
Automates creation of Layouts, for Layout Builder, etc, discovered and mapped automatically.
Minimal object
Here, we'll set up an object to be a Layout in as little code as possible.
If your object doesn't conform exactly to this format, there are various other way to transform objects into layouts, whether you own the object code or not.
Setup and configure Pinto objects as usual.
use Drupal\pinto\Object\DrupalObjectTrait;
use Drupal\pinto_layout\Attribute\Region;
use Drupal\pinto_layout\PintoLayout\Data\RegionAttributes;
use Pinto\Slots\Build;
final class Obj {
use DrupalInvokableSlotsTrait;
public function __construct(
#[Region]
public readonly mixed $region1,
#[Region]
public readonly mixed $region2,
public RegionAttributes $regionAttributes,
) {
}
}
Associated Twig template:
<div {{ regionAttributes.containerAttributes() }}>
<div {{ regionAttributes.regionAttributes('region1') }}>
{{ region1 }}
</div>
<div {{ regionAttributes.regionAttributes('region2') }}>
{{ region2 }}
</div>
</div>
Note, this setup requires the following to be added to site settings.php:
$settings['twig_sandbox_allowed_classes'] = [
\Drupal\Core\Template\Attribute::class,
\Drupal\pinto_layout\PintoLayout\Data\RegionAttributes::class,
];
Clear container, and this object will be made available as a Layout, for use with Layout Builder.
There are other examples on how to customize these Layout objects in the example test code directory, including:
- Customizing Layout ID
- Customizing Layout Label
- Pinto objects implementing an interface, as an alternative to
#[Region]attribute, so you can make constructors private or custom. - If you do not have control over Pinto object code, you can nominate a object as a layout, by providing regions and a factory method to wire things together.
Depends on
Dependencies of the latest stable release
- Pinto: Native Components
- layout_discovery Drupal core
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.2.2 | Stable | 11 | Pinto 0.7.0 compatible version | Jan 30, 2026 | |
| 1.1.1 | Stable | 10 | Support forms and configuration. | Nov 27, 2025 | |
| 1.2.1 | Stable | 11 | Support forms and configuration. | Nov 27, 2025 | |
| 1.2.0 | Stable | 11 | Drupal 11 branch | Nov 26, 2025 | |
| 1.1.0 | Stable | 10 | Nov 26, 2025 | ||
| 1.0.0-beta3 | Pre-release | 11 | Improves flexibility of external object builds | Oct 29, 2025 | |
| 1.0.0-beta2 | Pre-release | 11 | Fix dependencies / twig engine bug | Oct 8, 2025 | |
| 1.0.0-beta1 | Pre-release | 11 | Initial feature set | Oct 7, 2025 |