Information about the classes and interfaces that make up the Block API.
Blocks are a combination of a configuration entity and a plugin. The configuration entity stores placement information (theme, region, weight) and any other configuration that is specific to the block. The block plugin does the work of rendering the block's content for display.
To define a block in a module you need to:
The Block API also makes use of Condition plugins, for conditional block placement. Condition plugins have interface \Drupal\Core\Condition\ConditionInterface, base class \Drupal\Core\Condition\ConditionPluginBase, and go in plugin namespace Plugin\Condition. Again, see the Plugin API and Annotations topics for details of how to create a plugin class and annotate it.
There are also several block-related hooks, which allow you to affect the content and access permissions for blocks:
Further information and examples:
Name | Location | Description |
---|---|---|
hook_block_access | core/modules/block/block.api.php | Control access to a block instance. |
hook_block_build_alter | core/modules/block/block.api.php | Alter the result of \Drupal\Core\Block\BlockBase::build(). |
hook_block_build_BASE_BLOCK_ID_alter | core/modules/block/block.api.php | Provide a block plugin specific block_build alteration. |
hook_block_view_alter | core/modules/block/block.api.php | Alter the result of \Drupal\Core\Block\BlockBase::build(). |
hook_block_view_BASE_BLOCK_ID_alter | core/modules/block/block.api.php | Provide a block plugin specific block_view alteration. |
Name | Location | Description |
---|---|---|
Block | core/lib/Drupal/Core/Block/Annotation/Block.php | Defines a Block annotation object. |
BlockBase | core/lib/Drupal/Core/Block/BlockBase.php | Defines a base block implementation that most blocks plugins will extend. |
Name | Location | Description |
---|---|---|
BlockPluginInterface | core/lib/Drupal/Core/Block/BlockPluginInterface.php | Defines the required interface for all block plugins. |
MainContentBlockPluginInterface | core/lib/Drupal/Core/Block/MainContentBlockPluginInterface.php | The interface for "main page content" blocks. |
MessagesBlockPluginInterface | core/lib/Drupal/Core/Block/MessagesBlockPluginInterface.php | The interface for "messages" (#type => status_messages) blocks. |
TitleBlockPluginInterface | core/lib/Drupal/Core/Block/TitleBlockPluginInterface.php | The interface for "title" blocks. |
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!modules!block!block.api.php/group/block_api/8.1.x