You are here

block.tpl.php

老葛的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.”之间切换。
 

Drupal版本: