hook_block($op = 'list', $delta = '', $edit = array())
contributions/docs/developer/hooks/core.php, line 172
Declare a block or set of blocks.
Any module can export a block (or blocks) to be displayed by defining the _block hook. This hook is called by theme.inc to display a block, and also by block.module to procure the list of available blocks.
The functions mymodule_display_block_exciting and _amazing, as used in the example, should of course be defined somewhere in your module and return the content you want to display to your users. If the "content" element is empty, no block will be displayed even if "subject" is present.
After completing your blocks, do not forget to enable them in the block admin menu.
For a detailed usage example, see block_example.module.
$op What kind of information to retrieve about the block or blocks. Possible values:
$edit If $op is 'save', the submitted form data from the configuration form.
| Name | Description |
|---|---|
| Hooks | Allow modules to interact with the Drupal core. |
function hook_block($op = 'list', $delta = '', $edit = array()) {
if ($op == 'list') {
$blocks['exciting'] = array(
'info' => t('An exciting block provided by Mymodule.'),
'weight' => 0,
'status' => 1,
'region' => 'left',
// BLOCK_CACHE_PER_ROLE will be assumed for block 0.
);
$blocks['amazing'] = array(
'info' => t('An amazing block provided by Mymodule.'),
'cache' => BLOCK_CACHE_PER_ROLE | BLOCK_CACHE_PER_PAGE,
);
return $blocks;
}
elseif ($op == 'configure' && $delta == 'exciting') {
$form['items'] = array(
'#type' => 'select',
'#title' => t('Number of items'),
'#default_value' => variable_get('mymodule_block_items', 0),
'#options' => array('1', '2', '3'),
);
return $form;
}
elseif ($op == 'save' && $delta == 'exciting') {
variable_set('mymodule_block_items', $edit['items']);
}
elseif ($op == 'view') {
switch ($delta) {
case 'exciting':
$block = array(
'subject' => t('Default title of the exciting block'),
'content' => mymodule_display_block_exciting(),
);
break;
case 'amazing':
$block = array(
'subject' => t('Default title of the amazing block'),
'content' => mymodule_display_block_amazing(),
);
break;
}
return $block;
}
}