老葛的Drupal培训班 Think in Drupal
你可以在“管理➤站点构建➤区块”中查看所有的区块,而区块的外观则由block.tpl.php模板负责。如果你对区块不熟悉的话,可以参看第9章以获得更多信息。像页面模板和节点模板文件一样,区块系统按照一定的顺序来查找模板文件。先后顺序如下所示:
block-modulename-delta.tpl.php
block-modulename.tpl.php
block-region.tpl.php
block.tpl.php
在上面的序列中,modulename是实现了该区块的模块的名称.例如,区块“在线用户”是由模块user.module实现的(假定区块的delta为1),下面是可用于该区块的模板文件的先后顺序:
block-user-1.tpl.php
block-user.tpl.php
block-left.tpl.php
block.tpl.php
由站点管理员在后台创建的区块,它们都与区块模块绑定在了一起,所以它们在前面序列中的modulename都为block。如果你不知道那个模块实现了给定的区块,通过做一些PHP调试,你可以找到所有的原始信息。通过在你的block.tpl.php的顶部键入下面一段代码,你可以输出当前页面启用的每个区块的整个区块对象。
<pre>
<?php print_r($block); ?>
</pre>
如果你查看页面的源文件的话,阅读起来会更容易一些。下面是区块“在线用户”所显示的:
stdClass Object
(
[bid] => 42
[module] => user
[delta] => 3
[theme] => bluemarine
[status] => 1
[weight] => 0
[region] => footer
[custom] => 0
[throttle] => 0
[visibility] => 0
[pages] =>
[title] =>
[cache] => -1
[subject] => Who's online
[content] => There are currently ...
)
现在你得到了该区块的所有细节了,根据你需要覆盖的范围,你可以非常容易的构建一个或多个如下所示的区块模板文件:
block-user-3.tpl.php // Target just the Who's Online block.
block-user.tpl.php // Target all block output by user module.
block-footer.tpl.php // Target all blocks in the footer region.
block.tpl.php // Target all blocks on any page.
下面是在区块模板文件中你可以使用的默认变量:
• $block:整个区块对象。一般情况下,你会使用$block->subject和$block->content;具体的示例可参看核心主题中的block.tpl.php文件。
• $block_id:一个整数,当每次生成一个区块和调用一次区块模板文件时,自增1。
• $block_zebra: 当$block_id自增时,该变量不断的在“odd”和“even.”之间切换。