layout_builder_kit-8.x-1.x-dev/src/Plugin/Block/LBKImage/LBKImageEventSubscriber.php

src/Plugin/Block/LBKImage/LBKImageEventSubscriber.php
<?php

namespace Drupal\layout_builder_kit\Plugin\Block\LBKImage;

use Drupal\Core\Logger\LoggerChannelFactoryInterface;
use Drupal\core_event_dispatcher\Event\Theme\ThemeEvent;
use Drupal\core_event_dispatcher\ThemeHookEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * Class LBKImageEventSubscriber.
 *
 * @package Drupal\layout_builder_kit
 */
class LBKImageEventSubscriber implements EventSubscriberInterface {

  /**
   * Logger Factory service.
   *
   * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
   */
  protected $loggerFactory;

  /**
   * LBKImageEventSubscriber constructor.
   */
  public function __construct(LoggerChannelFactoryInterface $loggerFactory) {
    $this->loggerFactory = $loggerFactory;
  }

  /**
   * {@inheritdoc}
   */
  public static function getSubscribedEvents() {
    $events = [];

    // TODO: the hardcoded string isn't correct but ThemeHookEvents::THEME isn't
    // available when we need it. See https://www.drupal.org/project/layout_builder_kit/issues/3282326
    // $events[ThemeHookEvents::THEME][] = ['themeEvent'];
    $events['hook_event_dispatcher.theme'][] = ['themeEvent'];
    return $events;
  }

  /**
   * Theme event.
   *
   * @param \Drupal\core_event_dispatcher\Event\Theme\ThemeEvent $event
   *   The event.
   */
  public function themeEvent(ThemeEvent $event) {
    $modulePath = \Drupal::service('extension.list.module')->getPath('layout_builder_kit');

    $newThemes = [
      'LBKImage' => [
        'template' => 'LBKImage',
        'render element' => 'content',
        'variables' => [
          'title' => NULL,
          'display_title' => NULL,
          'title_position' => NULL,
          'image' => NULL,
          'image_alignment' => NULL,
          'overlay_position' => NULL,
          'overlay_text' => NULL,
          'overlay_text_format' => NULL,
          'classes' => NULL,
        ],
        'path' => $modulePath . '/src/Plugin/Block/LBKImage',
      ],
    ];

    $event->addNewThemes($newThemes);
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc