题
我如何使用 $delta
参数 hook_block
?
我尝试使用过一个,但没有任何效果。
正确的方法是什么?
解决方案
/**
* Implementation of hook_block().
*/
function YOURMODULE_block($op = 'list', $delta = 0, $edit = array()) {
switch ($op) {
case 'list':
$blocks[0]['info'] = t('Block #1 name');
$blocks[1]['info'] = t('Block #2 name');
return $blocks;
case 'view':
$block = array();
switch ($delta) {
case 0:
$block['content'] = t('Hello for block #1');
break;
case 1:
$block['content'] = t('Hello for block #2');
break;
}
return $block;
}
}
其他提示
如其他地方所述,$ delta允许一个模块返回许多块。如果您牢记$ Delta不必是数字,也可能会更容易理解。这只是一个标识符。
switch ($op) {
case 'list':
$block['sidebar-links']['info'] = t('Sidebar Links');
$block['footer-links']['info'] = t('Footer Links');
return $block;
这告诉Drupal系统是相关模块有两个块,其中一个由“侧栏链接”识别,另一个由“页脚链接”识别。
case 'view':
switch ($delta) {
case 'sidebar-links':
$block['subject'] = t('Sidebar Links');
$block['content'] = "super weak";
break;
case 'footer-links':
$block['subject'] = t('Footer Links');
$block['content'] = "super weak";
break;
}
return $block;
}
作为额外的奖励,使用语义键为您的块,将易于阅读CSS ID。 :)
An implementation of HOOK_block() can contain multiple blocks. The $delta argument specifies to the function which block to output.例子:
/**
* Implementation of hook_block().
*/
function fightfi_block($op = 'list', $delta = 0) {
$block = array();
switch ($op) {
case 'list':
$block[0]['info'] = t('Sidebar Links');
$block[1]['info'] = t('Footer Links');
return $block;
case 'view':
switch ($delta) {
case 0:
$block['subject'] = t('Sidebar Links');
$block['content'] = "super weak";
break;
case 1:
$block['subject'] = t('Footer Links');
$block['content'] = "super weak";
break;
}
return $block;
}
} // end function fightfi_block
http://drupal.org/project/examples您会在这里找到块示例。
不隶属于 drupal.stackexchange