Answers:
对于Drupal 7:
在自定义模块中使用hook_block_info和hook_block_view挂钩。hook_block_info定义块。它将显示在admin > 结构 > 块中。* hook_block_view *显示内容。请参阅下面的Drupal API示例。
hook_block_info的示例,其中定义了两个块(标题为辛迪加和最近的内容):
<?php
function hook_block_info() {
// This example comes from node.module.
$blocks['syndicate'] = array(
'info' => t('Syndicate'),
'cache' => DRUPAL_NO_CACHE,
);
$blocks['recent'] = array(
'info' => t('Recent content'),
// DRUPAL_CACHE_PER_ROLE will be assumed.
);
return $blocks;
}
?>
hook_block_view的示例:
<?php
function hook_block_view($delta = '') {
// This example is adapted from node.module.
$block = array();
switch ($delta) {
case 'syndicate':
$block['subject'] = t('Syndicate');
$block['content'] = array(
'#theme' => 'feed_icon',
'#url' => 'rss.xml',
'#title' => t('Syndicate'),
);
break;
case 'recent':
if (user_access('access content')) {
$block['subject'] = t('Recent content');
if ($nodes = node_get_recent(variable_get('node_recent_block_count', 10))) {
$block['content'] = array(
'#theme' => 'node_recent_block',
'#nodes' => $nodes,
);
}
else {
$block['content'] = t('No content available.');
}
}
break;
}
return $block;
}
?>
有关钩子的完整列表,请参见Drupal.org上的Blocks API页面。Drupal 6有点不同。没有hook_block_view挂钩;而是使用hook_block声明块。
对于Drupal 6,简短的答案是您创建一个实现hook_block的自定义模块。
对于Drupal 7,可以使用Block API。
如果这是您首次涉足模块开发,我强烈建议您使用Pro Drupal开发或Pro Drupal 7开发。您几乎需要知道的所有内容都在其中。
您可能正在寻找我想要的东西,并在这里找到了:
/modules/block/block.module:block_custom_block_save($
edit,$ delta)。
但是,当您查看此函数时,您会发现您可以自己执行db_update。
db_update('block_custom')
->fields(array(
'body' => $edit['body']['value'],
'info' => $edit['info'],
'format' => $edit['body']['format'],
))
->condition('bid', $delta)
->execute();
您可以使用功能额外模块导出块。
另外,也可以直接在块表中创建记录。
INSERT INTO blocks (
module, delta, theme, status, weight, region, custom,
throttle, visibility, pages, title, cache)
VALUES (
'views','blog-block_1','mytheme',1,10,'sidebar_first',0,0,1,'blog\r\nblog/*','',-1)