Browse Source

3374193: Adding theme manager for active theme

merge-requests/34/head
mark-casias 2 years ago committed by Ivan
parent
commit
f6fe28bed5
  1. 16
      src/View/RegionViewBuilder.php
  2. 2
      twig_tweak.services.yml

16
src/View/RegionViewBuilder.php

@ -7,7 +7,9 @@ use Drupal\Core\Cache\CacheableMetadata;
use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Controller\TitleResolverInterface; use Drupal\Core\Controller\TitleResolverInterface;
use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface;
use Drupal\Core\Extension\ThemeHandlerInterface;
use Drupal\Core\Routing\RouteObjectInterface; use Drupal\Core\Routing\RouteObjectInterface;
use Drupal\Core\Theme\ThemeManagerInterface;
use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\RequestStack;
/** /**
@ -43,6 +45,13 @@ class RegionViewBuilder {
*/ */
protected $titleResolver; protected $titleResolver;
/**
* The theme manager.
*
* @var \Drupal\Core\Theme\ThemeManagerInterface
*/
protected $themeManager;
/** /**
* Constructs a RegionViewBuilder object. * Constructs a RegionViewBuilder object.
*/ */
@ -50,12 +59,14 @@ class RegionViewBuilder {
EntityTypeManagerInterface $entity_type_manager, EntityTypeManagerInterface $entity_type_manager,
ConfigFactoryInterface $config_factory, ConfigFactoryInterface $config_factory,
RequestStack $request_stack, RequestStack $request_stack,
TitleResolverInterface $title_resolver TitleResolverInterface $title_resolver,
ThemeManagerInterface $theme_manager
) { ) {
$this->entityTypeManager = $entity_type_manager; $this->entityTypeManager = $entity_type_manager;
$this->configFactory = $config_factory; $this->configFactory = $config_factory;
$this->requestStack = $request_stack; $this->requestStack = $request_stack;
$this->titleResolver = $title_resolver; $this->titleResolver = $title_resolver;
$this->themeManager = $theme_manager;
} }
/** /**
@ -71,10 +82,9 @@ class RegionViewBuilder {
* A render array to display the region content. * A render array to display the region content.
*/ */
public function build(string $region, string $theme = NULL): array { public function build(string $region, string $theme = NULL): array {
$blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([ $blocks = $this->entityTypeManager->getStorage('block')->loadByProperties([
'region' => $region, 'region' => $region,
'theme' => $theme ?: $this->configFactory->get('system.theme')->get('default'), 'theme' => $theme ?: $this->themeManager->getActiveTheme()->getName(),
]); ]);
$view_builder = $this->entityTypeManager->getViewBuilder('block'); $view_builder = $this->entityTypeManager->getViewBuilder('block');

2
twig_tweak.services.yml

@ -11,7 +11,7 @@ services:
twig_tweak.region_view_builder: twig_tweak.region_view_builder:
class: Drupal\twig_tweak\View\RegionViewBuilder class: Drupal\twig_tweak\View\RegionViewBuilder
arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver'] arguments: ['@entity_type.manager', '@config.factory', '@request_stack', '@title_resolver', '@theme.manager']
twig_tweak.entity_view_builder: twig_tweak.entity_view_builder:
class: Drupal\twig_tweak\View\EntityViewBuilder class: Drupal\twig_tweak\View\EntityViewBuilder

Loading…
Cancel
Save