ds-8.x-3.9/src/Plugin/DsField/DynamicBlockField.php

src/Plugin/DsField/DynamicBlockField.php
<?php

namespace Drupal\ds\Plugin\DsField;

use Drupal\ds\Attribute\DsField;
use Drupal\ds\Plugin\Derivative\DynamicBlockField as DynamicBlockFieldDerivative;
use Drupal\views\Plugin\Block\ViewsBlock;

/**
 * Defines a generic dynamic block field.
 */
#[DsField(
  id: 'dynamic_block_field',
  deriver: DynamicBlockFieldDerivative::class,
  provider: 'block'
)]
class DynamicBlockField extends BlockBase {

  /**
   * {@inheritdoc}
   */
  protected function blockPluginId() {
    $definition = $this->getPluginDefinition();
    return $definition['properties']['block'];
  }

  /**
   * {@inheritdoc}
   */
  protected function blockConfig() {
    $block_config = [];
    $definition = $this->getPluginDefinition();
    if (isset($definition['properties']['config'])) {
      $block_config = $definition['properties']['config'];
    }

    return $block_config;
  }

  /**
   * Returns the title of the block.
   */
  public function getTitle() {
    $field = $this->getFieldConfiguration();
    $title = $field['title'];

    if (isset($field['properties']['use_block_title']) && $field['properties']['use_block_title']) {
      /* @var $block \Drupal\Core\Block\BlockPluginInterface */
      $block = $this->getBlock();

      if ($block instanceof ViewsBlock) {
        $block_build = $block->build();
        if (!empty($block_build['#title'])) {
          $title = $block_build['#title'];
        }
      }
      else {
        $title = $block->label();
      }
    }

    return $title;
  }

}

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

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