定义drupal区块

老葛的Drupal培训班 Think in Drupal

可以在模块中使用钩子hool_block()来定义区块,而且一个模块可以在单个钩子中实现多个区块。一旦区块定义好了以后,那么它将会出现在区块管理页面。另外,站点管理员可以通过后台管理界面来手工的创建自定义区块。在本节中,我们主要讨论如何通过代码创建区块。让我们看一下区块的数据库模式,如图9-3所示。
 
9-3 区块的数据库模式
 
       每个区块的区块属性都存储在表blocks里面。通过区块配置界面为区块创建的其它数据,比如它们的内容和输入格式类型,都存放在表boxes里面。最后,表blocks_roles存放每个区块的基于角色的权限。下面的属性定义在表blocks的列中:
 
• bid:这是每个区块的唯一的标识ID。
 
module:这一字段存放的是定义区块的模块的名称。比如,用户登录区块是在用户模块中定义的,等等。对于管理员在“管理➤站点构建➤区块”中创建的自定义区块,它们将被认为是由区块模块创建的。
 
delta:由于一个模块可以在钩子hook_block()中定义多个区块,所以delta存放了每个区块的键,它们在钩子hook_block()范围内是唯一的,但对于整个站点的所有区块则不一定唯一。delta可以是整数,也可以是字符串。
 
theme:一个区块可以用于多个主题。因此,Drupal需要存放启用了该区块的主题的名称。启用了该区块的每个主题,在数据库中都有一行自己的记录。配置选项不能在主题之间共享。
 
status:它用来追踪区块是否被启用。1意味着启用,0意味着禁用。如果一个区块,没有为其指定一个区域,那么Drupal会将其状态设置为0.
 
• weight:区块的重量,用来决定区块在区域中的相对位置。
 
• region: 放置该区块的区域的名字,例如,页脚。
 
• custom: 这是这个区块的“特定用户可见性设置”的值(参看图9-2)。0意味着用户不能控制该区块的可见性;1意味着该区块默认是显示的,但是用户可以隐藏它;2意味着该区块默认是隐藏的,但是用户可以选择显示它。
 
throttle:当节流阀模块启用时,该字段用于追踪哪些区块可被节流。0意味着禁用节流,1意味着启用。节流阀模块能够自动的探测访问流量,当流量超过了阀值,它能临时的禁用一些耗费资源的区块(更多详细,可参看第22章)。
 
• visibility: 这个值用来表示如何判定区块的可见性。0意味着区块将显示在除所列页面以外的所有页面;1意味着区块只显示在所列页面;2意味着,Drupal将执行一段由管理员定义的PHP代码,以判定区块的可见性。
 
• pages: 该字段的内容依赖于visibility字段中的设置。如果visibility字段的值为0或1,那么该字段将包含一列Drupal路径。如果visibility字段的值为2,那么该字段将包含一段PHP代码,通过对其计算来判定是否需要显示区块。
 
• title:这是区块的自定义标题。如果这个字段为空,那么将使用区块的默认标题(由区块所在的模块提供)。如果这个字段包含的为<none>,那么该区块就没有标题。否则,该字段的文本将用作区块的标题。
 
• cache: 这个值用来判定Drupal是如何缓存该区块的。–1意味着区块不被缓存。1意味着为每个角色缓存区块,如果没有声明缓存设置,那么这是Drupal区块的默认设置。2意味着为每个用户缓存区块。4意味着为每个页面缓存区块。8意味着区块将被缓存,但是不管是什么角色,什么用户,什么页面,缓存的方式都是一样的。
 

Drupal版本: