跳转到主要内容
rli 提交于 7 March 2012

原文链接http://drupal.org/node/1104464

模块可以被用来做各种事情, 比如:创建区块(一段简短的内容,通常出现在页面的左右两边);建立特殊的内容类型(就像您现在正在阅读的内容);查询后台信息等等。您也许听说过block模块--专门被用来创建区块内容(比如菜单),或者node模块--专门用来生成页面的内容(比如日志和论坛)。在我们的例子中,我们所建立的是一种block模块,因为我们创建了一个区块(block)。

drupal7提供了至少8个block钩子可以应用。根据我们例子的需求,我们将用到其中的两个。第一个钩子是hook_block_info()。您可能已经猜到了,这个钩子用来告诉drupal我们要建立的区块的相关信息。我们将用这个钩子来定义一个能够显示最近新提交的内容的区块。您可以使用任意一个模块提供的block钩子,如此您将需要定义相关模块所需的所有区块,在我们的例子中,我们只需要定义一个区块。

要定义我们自己的区块,我们需要打开current_posts.module文件,并建立一个叫做current_posts_block_info方法, 如下

<?php /** * Implements hook_block_info(). */ function current_posts_block_info() { $blocks['current_posts'] = array( 'info' => t('Current posts'), //The name that will appear in the block list. 'cache' => DRUPAL_CACHE_PER_ROLE, //Default ); return $blocks; } ?>

注意在我们真正的代码中不应该有"?>"在结尾。

代码中的注释已经把这个钩子解释的很充分了。大家可以访问hook_block_info的API页面或者运行一个hook_block_info钩子来了解更多。

我们将把整个队列返回到drupal中。 请注意例子中队列的格式和结构,只是drupal指定的队列结构。队列在PHP中被支持和运行的很流畅,drupal沿用并扩展了队列的用途。

在我们的例子中,唯一一个必须的队列元素是info, 但是hook_block_info还能够把其他的设置具体化。比如在这个里,我们把缓冲存储设置为默认。 请参看hook_block_list来获得完整的可用的元素信息。

别忘了返回整个队列到drupal

检查

访问模块页面并激活Current Posts模块,保存设置。下一步,访问Structure(结构)->Blocks(区块)页面。 在页面的底部,我们应该能够找到被命名为"Current posts"的区块。如果能够找到,说明我们的钩子安装成功了。下一步我们就可以卸载我们的模块并保存设置了。注意:我们必须卸载未完成的模块,因为未完成的代码可能会导致我们的站点无法工作。

参考