区块是显示在Drupal站点的边栏或特定区域上的框状结构。你可以看到大多数的区块(比如,最新论坛主题)都是各个Drupal模块动态生成的,当然你也可以创建你自己的区块。
区块在在页面上显示的位置和在哪些页面显示,既取决于使用的主题,也和区块的设置有关。区块设置由区块管理页控制,你可以通过点击管理 » 区块来访问。在这个页面你可以控制每个区块的启用、在页面上的显示位置、以及在哪些页面会显示。
区块是否在某个页面上显示取决于以下几个因素。
当你配置好区块,使其按需要显示在指定页面的正确边栏时,你可能希望调节区块的权重来指定区块在边栏中的垂直位置。区块的权重通过区块管理页面的下拉选择框来选择,更重的区块(具有更大的正值权重)会“下沉”到边栏的底部,同时更轻的区块将向顶部“上浮”。
更多信息可以在手册的模块部分有关区块介绍里找到。
在区块配置的“页面定义可见性设置”选项组下面有一个大文本框,其中每一行你可以输入路径指定区块在哪些页面将会显示或者不显示,这取决于你上面选择的选项。
下面是一些有注释的例子,它们都假定你选择了第二个选项(只在指定页面显示),如果你选择了第一个选项(在除了下列页面外的所有页面上显示),区块将会在除了你下面列出的页面之外的所有页面显示。你可以在列表中加入任意多个页面,每个占一行。(注意你不能同时指定会显示区块的页面和不会显示区块的页面,两者只能选一)
<front> 指定区块将在首页上显示
node/42 指定区块会在节点ID为42的文章里显示
aggregator 指定区块仅在聚合页面显示。
blog/* 指定区块区块会在所有地址(URLs)以blog/打头的页面上显示。注意,如果你希望在blog主页面上也能显示区块,则只要再加入一个路径blog(不需要后面的反斜线)就可以了。
另一个例子,如果你有在管理界面不需要显示的HTML,Javascript或PHP区块,你可以选择“在除了下列页面外的所有页面上显示”选择,然后使用下面的通配路径:
admin/*
除此以外,你还可以选择第三个选项(看下列的 PHP 代码是否返回 TRUE)来进一步定制区块的显示,这时需要在下面的文本框中输入PHP代码,并使用<?php ?>标记,PHP代码的返回值决定了区块的可见性。
自定义区块包含的内容由你来提供(与模块生成的区块相反),自定义的内容可以是静态的(如HTML)或者动态的(PHP生成内容)。事实上Drupal提供的所有功能都可以在PHP内容区块中访问到,这种区块的弹性提供了极其强大的途径来定制你的Drupal网站。
你可以通过区块管理页(点击管理 » 菜单),选择添加区块标签,并完成表单来创建自定义区块。
每个自定义区块由标题、描述和正文组成,正文中的内容可以为任意长度。
注意:在Drupal4.6中,区块的标题被用来作为数据库的标识符,因此你只能定义一个没有标题的区块(这个问题已经为更新的Drupal版本作了修正)
这个问题的一个解决办法是把标题改为:<!--title of custom block-->,这样既能满足Drupal对区块标题的要求,同时注释标记(<!--...-->)也防止了标题在区块中的显示。