diff --git a/modules/ui_patterns_blocks/ui_patterns_blocks.module b/modules/ui_patterns_blocks/ui_patterns_blocks.module index d0474e0..4b436e3 100644 --- a/modules/ui_patterns_blocks/ui_patterns_blocks.module +++ b/modules/ui_patterns_blocks/ui_patterns_blocks.module @@ -5,21 +5,30 @@ * UI Patterns Blocks custom add-ons. */ +use Drupal\Core\Plugin\Context\EntityContext; + /** * Implements hook_plugin_filter_TYPE__CONSUMER_alter(). */ function ui_patterns_blocks_plugin_filter_block__layout_builder_alter(array &$definitions, array $extra) : void { - foreach ($definitions as $id => $definition) { - if ($definition['provider'] === 'ui_patterns_blocks' && - (!array_key_exists("context_definitions", $definition) || - !is_array($definition['context_definitions']) || - !array_key_exists("entity", $definition['context_definitions']))) { - // In Layout builder, - // we remove all blocks defined by ui_patterns_blocks - // which do not declare entity in context_definitions. - unset($definitions[$id]); + // If the section storage has an entity context. + $sectionStorageContexts = $extra['section_storage']->getContexts(); + if (!empty($sectionStorageContexts['display']) && $sectionStorageContexts['display'] instanceof EntityContext) { + foreach ($definitions as $id => $definition) { + if ($definition['provider'] === 'ui_patterns_blocks' && + (!array_key_exists("context_definitions", $definition) || + !is_array($definition['context_definitions']) || + !array_key_exists("entity", $definition['context_definitions']))) { + // In Layout builder, + // we remove all blocks defined by ui_patterns_blocks + // which do not declare entity in context_definitions. + unset($definitions[$id]); + } } } + else { + ui_patterns_blocks_remove_entity_ui_patterns_blocks($definitions); + } } /** @@ -27,14 +36,21 @@ function ui_patterns_blocks_plugin_filter_block__layout_builder_alter(array &$de */ function ui_patterns_blocks_plugin_filter_block_alter(array &$definitions, array $extra, ?string $consumer) : void { if ($consumer !== 'layout_builder') { - foreach ($definitions as $id => $definition) { - if ($definition['provider'] === 'ui_patterns_blocks' && array_key_exists("context_definitions", $definition) - && array_key_exists("entity", $definition['context_definitions'])) { - // In all User interfaces except Layout builder, - // we remove blocks defined by ui_patterns_blocks - // which declare entity in context_definitions. - unset($definitions[$id]); - } + ui_patterns_blocks_remove_entity_ui_patterns_blocks($definitions); + } +} + +/** + * Remove entity SDC component blocks. + */ +function ui_patterns_blocks_remove_entity_ui_patterns_blocks(array &$definitions) { + foreach ($definitions as $id => $definition) { + if ($definition['provider'] === 'ui_patterns_blocks' && array_key_exists("context_definitions", $definition) + && array_key_exists("entity", $definition['context_definitions'])) { + // In all User interfaces except Layout builder, + // we remove blocks defined by ui_patterns_blocks + // which declare entity in context_definitions. + unset($definitions[$id]); } } }