Программный блок модуля визуализации
Я знаю, что могу программно отобразить свой пользовательский блок с помощью
$block = \Drupal\block_content\Entity\BlockContent::load(2);
$vars['contact_us_info_block']= \Drupal::entityTypeManager()->getViewBuilder('block_content')->view($block);
$vars['contact_us_info_block'] = drupal_render($vars['contact_us_info_block']);
Теперь я хочу программно отобразить блок SimpleNewsletter, я попытался
$block_manager = \Drupal::service('plugin.manager.block');
$config = [];
$plugin_block = $block_manager->createInstance('simplenewssubscription', $config);
$vars['newsletterblock'] = $plugin_block->build();
Но столкнулся со следующим сообщением в выводе
This block is broken or missing. You may be missing content or you might need to enable the original module.
Включен модуль Simplenewsletter, как я могу программно отрисовывать блоки модулей?
2
2 answers
Я визуализирую его со следующими фрагментами и работаю правильно
$block = \Drupal\block\Entity\Block::load('simplenewssubscription');
$block_content = \Drupal::entityTypeManager()
->getViewBuilder('block')
->view($block);
$vars['newsletterblock'] = $block_content;
1
Author: Yuseferi, 2016-06-30 09:44:55
Вот пример из Модуля токенов блока для визуализации блока на основе его идентификатора:
/**
* Renders the block.
*
* @param string $bid
* Block Id.
*
* @return string
* Rendered block.
*/
function block_token_block_render($bid) {
$block = \Drupal\block\Entity\Block::load($bid);
$block_content = \Drupal::entityManager()
->getViewBuilder('block')
->view($block);
return \Drupal::service('renderer')->renderRoot($block_content);
}
0
Author: kenorb, 2017-08-04 21:00:50