| 7 block.api.php | hook_block_view_MODULE_DELTA_alter(&$data, $block) |
| 8 block.api.php | hook_block_view_MODULE_DELTA_alter(&$data, $block) |
Perform alterations to a specific block.
Modules can implement hook_block_view_MODULE_DELTA_alter() to modify a specific block, rather than implementing hook_block_view_alter().
Parameters
$data: An array of data, as returned from the hook_block_view() implementation of the module that defined the block:
- subject: The localized title of the block.
- content: Either a string or a renderable array representing the content of the block. You should check that the content is an array before trying to modify parts of the renderable structure.
$block: The block object, as loaded from the database, having the main properties:
- module: The name of the module that defined the block.
- delta: The unique identifier for the block within that module, as defined in hook_block_info().
See also
Related topics
File
- modules/
block/ block.api.php, line 304 - Hooks provided by the Block module.
Code
function hook_block_view_MODULE_DELTA_alter(&$data, $block) {
// This code will only run for a specific block. For example, if MODULE_DELTA
// in the function definition above is set to "mymodule_somedelta", the code
// will only run on the "somedelta" block provided by the "mymodule" module.
// Change the title of the "somedelta" block provided by the "mymodule"
// module.
$data['subject'] = t('New title of the block');
}
Login or register to post comments
Comments
user-menu as DELTA
Is it possible to use this hook with deltas, that wouldn't make a valid function name?
Like hook_block_view_system_user-menu_alter()?
No menu blocks work
Just ran into this myself. I've reported the issue and provided a solution here http://drupal.org/node/1076132 . The fix is in block.module, not menu.module.
Switch the hook_block_view_alter() can work
I tried, hook_block_view_system_user-menu_alter() can not work. But switch the hook_block_view_alter() can work, for example:
function hook_block_view_alter(&$data, $block) {
if ($block->delta == 'user-menu') {
$data['content'] = 'XXX';
}
}
Set block title to be page title
Once off the front page I needed the page title to be rendered as the block title for the main content block. This worked a treat:
<?phpfunction MYMODULE_block_view_system_main_alter(&$data, $block) {
if (!drupal_is_front_page()) {
$data['subject'] = drupal_get_title();
}
}
?>