作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
如果使用模块的方式创建区块,那么我们就需要了解与区块相关的钩子。区块模块提供的钩子可以参看modules\block文件夹下面的block.api.php文件。主要包含以下钩子:
hook_block_info:
这个钩子用来声明该模块提供哪些区块,同时在这里还可以指定初始化的区块设置。在这个钩子中,可以定义多个区块,每个区块都有一个标识ID,这就是前面提到的delta。Delta主要用于:
作为参数传递给其它区块钩子,比如hook_block_configure、hook_block_view。
在构建区块的html时,用来生成区块的html ID。
用于区块的模板建议block__MODULE__DELTA。
在hook_block_info_alter钩子中,供第三方模块使用。
在每个区块对应的关联数组中,可以包含以下键:
info:这个值是必须的。一个可翻译的字符串(使用t()封装),为站点管理员提供了区块的可读名字,非站点管理员看不到这一信息。
cache: 表示这个区块如何被缓存。可能的值有DRUPAL_NO_CACHE (不缓存区块)、 DRUPAL_CACHE_CUSTOM(使用自定义的缓存)、DRUPAL_CACHE_PER_ROLE (基于角色缓存区块)、DRUPAL_CACHE_PER_USER (基于用户缓存区块,站点用户多时最好不要用这种方式!)、 DRUPAL_CACHE_PER_PAGE (基于页面缓存区块)、DRUPAL_CACHE_GLOBAL (缓存一次区块,所有的都一样)。
properties:添加到区块上的附加元数据数组。常用属性:'administrative'。
status:区块默认是否被启用。
region:为区块设置的默认区域。
weight:它控制着区块在区域内的相对位置。
visibility:基于页面路径的可见性设置。参看上一节的描述。
pages:取决于visibility。参看上一节。
hook_block_configure:
为区块定义一个配置表单。
hook_block_save:
保存来自于hook_block_configure的配置选项。
hook_block_view:
返回区块的呈现数组。
hook_block_info_alter:
在区块信息保存到数据库之前,修改区块的定义信息。