From b874c2b47603c28cac49a866d8da99a3b2a91a36 Mon Sep 17 00:00:00 2001 From: Juan Olalla Date: Fri, 11 Aug 2023 21:53:10 +0200 Subject: [PATCH 1/2] Add drupal_block_by_id() function --- src/TwigTweakExtension.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/TwigTweakExtension.php b/src/TwigTweakExtension.php index d007798..9d10ae5 100644 --- a/src/TwigTweakExtension.php +++ b/src/TwigTweakExtension.php @@ -65,6 +65,7 @@ class TwigTweakExtension extends AbstractExtension { new TwigFunction('drupal_view', 'views_embed_view'), new TwigFunction('drupal_view_result', 'views_get_view_result'), new TwigFunction('drupal_block', [self::class, 'drupalBlock']), + new TwigFunction('drupal_block_by_id', [self::class, 'drupalBlockById']), new TwigFunction('drupal_region', [self::class, 'drupalRegion']), new TwigFunction('drupal_entity', [self::class, 'drupalEntity']), new TwigFunction('drupal_entity_form', [self::class, 'drupalEntityForm']), @@ -141,12 +142,22 @@ class TwigTweakExtension extends AbstractExtension { } /** - * Builds the render array for a block. + * Builds the render array for a block identified by plugin. */ public static function drupalBlock(string $id, array $configuration = [], bool $wrapper = TRUE): array { return \Drupal::service('twig_tweak.block_view_builder')->build($id, $configuration, $wrapper); } + /** + * Builds the render array for the block identified by id. + */ + public static function drupalBlockById($id, array $configuration = [], bool $wrapper = TRUE) { + $storage = \Drupal::entityTypeManager()->getStorage('block'); + $plugin_id = $storage->load($id)->toArray()['plugin']; + $configuration['id'] = $id; + return \Drupal::service('twig_tweak.block_view_builder')->build($plugin_id, $configuration, $wrapper); + } + /** * Builds the render array of a given region. */ From c8960ab30a736868e60c41760a63ec7ccbb638d7 Mon Sep 17 00:00:00 2001 From: Juan Olalla Date: Sat, 12 Aug 2023 00:17:01 +0200 Subject: [PATCH 2/2] Load block configuration by default --- src/TwigTweakExtension.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TwigTweakExtension.php b/src/TwigTweakExtension.php index 9d10ae5..633e17c 100644 --- a/src/TwigTweakExtension.php +++ b/src/TwigTweakExtension.php @@ -153,9 +153,9 @@ class TwigTweakExtension extends AbstractExtension { */ public static function drupalBlockById($id, array $configuration = [], bool $wrapper = TRUE) { $storage = \Drupal::entityTypeManager()->getStorage('block'); - $plugin_id = $storage->load($id)->toArray()['plugin']; - $configuration['id'] = $id; - return \Drupal::service('twig_tweak.block_view_builder')->build($plugin_id, $configuration, $wrapper); + $block = $storage->load($id)->toArray(); + $configuration = array_merge($block['settings'], $configuration); + return \Drupal::service('twig_tweak.block_view_builder')->build($block['plugin'], $configuration, $wrapper); } /**