hook_block_view_MODULE_DELTA_alter

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

hook_block_view_alter()

hook_block_view()

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');
}

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:

<?php
function MYMODULE_block_view_system_main_alter(&$data, $block) {
  if (!
drupal_is_front_page()) {
   
$data['subject'] = drupal_get_title();
  }
}
?>

Login or register to post comments