event_platform-1.0.x-dev/event_platform_details/src/Plugin/Block/EventPlatformHeaderCtaBlock.php

event_platform_details/src/Plugin/Block/EventPlatformHeaderCtaBlock.php
<?php

namespace Drupal\event_platform_details\Plugin\Block;

use Drupal\Core\Block\BlockBase;
use Drupal\Core\Block\BlockPluginInterface;
use Drupal\Core\Url;
use Drupal\config_pages\Entity\ConfigPages;

/**
 * Provides an event platform header cta block.
 *
 * @Block(
 *   id = "event_platform_header_cta",
 *   admin_label = @Translation("Event Platform Header CTA"),
 *   category = @Translation("Event Platform")
 * )
 */
class EventPlatformHeaderCtaBlock extends BlockBase implements BlockPluginInterface {

  /**
   * {@inheritdoc}
   */
  public function build() {
    $build = [];
    $configPage = ConfigPages::config('event_details');
    if ($configPage) {
      $cta_url = $configPage->get('field_header_cta')->uri ?? NULL;
      $cta_title = $configPage->get('field_header_cta')->title ?? NULL;
    }
    if (!$configPage || !$cta_url || !$cta_title) {
      return [
        'event_platform_header_cta' => [
          '#cache' => [
            'tags' => ['config_pages_list'],
          ],
        ],
      ];
    }

    $url = Url::fromUri($cta_url);
    $block = [
      '#theme' => 'event_platform_header_cta_block',
      '#attributes' => [
        'class' => ['header_cta'],
        'id' => 'header-cta-block',
      ],
      '#url'  => $url,
      '#title'  => $cta_title,
      '#cache' => [
        'tags' => ['config_pages:' . $configPage->id()],
      ],
    ];
    $build['event_platform_header_cta'] = $block;
    return $build;
  }

}

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

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