Как программно создать блок для Drupal 8

Мы уже умеем создавать модули, (те кто не умеет - смотрите тут), поэтому сразу перейдём к созданию блока в нашем же модуле.

Создадим новый файл в следующем месте: modules/my_module/lib/Drupal/my_module/src/Plugin/Block/MyBlock.php

/**
 * @file
 * Contains \Drupal\my_module\Plugin\Block\MyBlock.
 */
 
namespace Drupal\my_module\Plugin\Block;
use Drupal\Core\Block\BlockBase;
 
/**
 * Provides my custom block.
 *
 * @Block(
 *   id = "my_block",
 *   admin_label = @Translation("My Block"),
 *   category = @Translation("Blocks")
 * )
 */
 
class MyBlock extends BlockBase {
 
  public function build() {
    return array('#markup' => 'hello world');
  }
 
  public function access(AccountInterface $account) {
    return $account->hasPermission('access content');
  }  
}

Более подробно о BlockBase можно глянуть тут