[gelöst] Neue Felder nach Aktivierung des Layout Builders ausblenden
am 12.08.2025 - 17:07 Uhr in
Hallo zusammen,
ich habe vor ein paar Jahren für einen Inhaltstypen Layout Builder aktiviert und "Für jede Entität des Typs Inhalt ein eigenes Layout bereitstellen" eingestellt. Es gibt mittlerweile viele Beiträge. Jetzt habe ich paar neue Felder dem Inhaltstypen hinzugefügt und diese werden samt Labels angezeigt, was ich nicht möchte. Über "Anzeige verwalten" habe ich wegen dem Layout Builder keine Möglichkeit die Felder zu deaktivieren.
Folgendes habe ich mittels Programmierung versucht umzusetzen, aber ohne Erfolg.
- hook_entity_view_display_alter(): Keine Felder vorhanden, die ich mittels unset() löschen könnte
- hook_entity_view_alter(): Keine Felder im Array $build vorhanden, die ich mittels unset() löschen könnte
- node--inhaltstyp.twig.html: {{ content|without('field_name1', 'field_name2') }} oder {{ content.body }} bringt nichts
Kommt nur das Ausblenden mittels CSS in Frage oder habt Ihr andere Ideen? Vielen Dank für die Unterstützung.
Viele Grüße
Daniel
Hier zwei mögliche Lösungen. Ich habe mich für Lösung 1 mittels CSS entschieden.
Das Verhalten kommt daher, dass im Layout Builder pro Node ein individuelles Layout aktiviert ist. („Für jede Entität des Typs Inhalt ein eigenes Layout bereitstellen“). In diesem Modus ignoriert Drupal beim Rendern den Standard-Display mode („Anzeige verwalten“) und stattdessen wird für jede Node eine gespeicherte Layout-Konfiguration aus der layout_builder-Speicherung geladen.
<?php
// Lösung 1
function theme_preprocess_field(&$variables) {
if (in_array($variables['field_name'], ['field_name1', 'field_name2', 'field_name3'])) {
$variables['attributes']['class'][] = 'display-none';
}
}
// Lösung 2
use Drupal\layout_builder\SectionComponent;
function MYMODULE_entity_view(array &$build, \Drupal\Core\Entity\EntityInterface $entity, \Drupal\Core\Entity\Display\EntityViewDisplayInterface $display) {
if ($entity->getEntityTypeId() === 'node' && $entity->bundle() === 'inhaltstyp') {
if (isset($build['#layout_builder'])) {
foreach ($build['#layout_builder']['sections'] as &$section) {
foreach ($section->getComponents() as $uuid => $component) {
$configuration = $component->get('configuration');
if (!empty($configuration['context_mapping']['entity']) && strpos($configuration['id'], 'field_block:node:inhaltstyp:field_name1') === 0) {
$section->removeComponent($uuid);
}
}
}
}
}
}
?>- Anmelden oder Registrieren um Kommentare zu schreiben

Neue Kommentare
vor 1 Tag 10 Stunden
vor 2 Tagen 5 Stunden
vor 2 Tagen 23 Stunden
vor 1 Woche 9 Stunden
vor 1 Woche 12 Stunden
vor 1 Woche 4 Tagen
vor 1 Woche 4 Tagen
vor 1 Woche 4 Tagen
vor 4 Wochen 1 Tag
vor 4 Wochen 2 Tagen