Drupal 8: Как настроить содержимое блока на определенной странице

#drupal-8 #alter

Вопрос:

Я могу изменить содержимое блока, используя крючок, как показано ниже. Но я хотел бы изменить содержимое блока (например, system_main_block), только если оно отображается на определенной странице. Но я не уверен, как получить идентификатор страницы или заголовок в крючках ниже. Ценю помощь.

 function yourmodule_block_view_alter(array amp;$build, DrupalCoreBlockBlockPluginInterface $block) 

{
  if ($block->getBaseId() === 'system_powered_by_block') {
    $build['#pre_render'][] = '_yourmodule_block_poweredby_prerender';
  }
}

function _yourmodule_block_poweredby_prerender(array $build) {
    $build['content']['#markup'] = Markup::create('Your text');
    return $build;
}
 

Ответ №1:

Вы можете проверить название маршрута следующим образом:

 function yourmodule_block_view_alter(array amp;$build, DrupalCoreBlockBlockPluginInterface $block) {
  if ($block->getBaseId() === 'system_powered_by_block' amp;amp; Drupal::routeMatch()->getRouteName() === '<your_route_name>') {
    $build['#pre_render'][] = '_yourmodule_block_poweredby_prerender';
  }
}