Drupal → Получить экземпляр класса BlockContent по машинному имени его конфига

04.04.2018

Дано — машинное имя конфига контентного блока, добавленного на странице admin/structure/block.

Задача — получить id контентного блока и его экземпляр класса BlockContent.

Решение на примере блока с именем page_header:

$block_config = Block::load('page_header'); /** @var BlockInterface $block_config */
$block_plugin = $block_config->getPlugin(); /** @var BlockPluginInterface $block_plugin */
$content_block_uuid = $block_plugin->getDerivativeId();
$content_block_id = \Drupal::service('block_content.uuid_lookup')->get($content_block_uuid);
$content_block = BlockContent::load($content_block_id); /** @var BlockContentInterface $content_block */
Написанное актуально для
Drupal 8
Похожие записи

Комментарии

Через репозитрий энтитей можно загружать сущности по UUID.

$uuid = (Block::load('cb_1'))
  ->getPlugin()
  ->getDerivativeId();
$block_content = \Drupal::service('entity.repository')->loadEntityByUuid('block_content', $uuid);

@Ch, видел такой вариант, остановило то, что в ядре при выводе блока используется именно вариант с uuid_lookup и мне на самом деле нужен был только id блока, а не его экземпляр :)

Добавить комментарий