Drupal使用系列教程——Block(区块)管理介绍
PS:如果用过WordPress就会发现这里的区块和WordPress中的Widgets功能很类似,不过Drupal的区块更灵活一些,支配的位置更多。当然支配哪些位置还和主题的设计有关,之后我们会讲解Drupal主题的相关内容。
blocks:中文将其叫做区块,形象点来说就是一个盒子,里面可以放各种不同的内容。当你浏览drupal页面时,左右边栏通常有一些导航条或提供一些额外信息的栏目,eg:最新发布的文章,最新评论,导航.甚至你还可以将一个节点的内容放在里面.......它可以分布在一个Drupal站点的边栏上或其它地方。这些位置是由你的模板或叫做主题事先设置好了的regions(区域).供你放置区块的位置通常是 (header, left-sidebar, content, right-sidebar, footer), 许多区块是通过不同的Drupal模块动态生成的,但你也可以自己添加任意个模块。(此乃使用区块的最高境界,呵呵...)
下面我来分二部分说说区块的使用,一个是简单的使用,即使用现成的区块,二是定制自己的区块
A:简单的使用
首先找到区块的位置,drupal 6后的版本位置是(administer------>site building------->blocks),打开blocks,出现的界面如下:

说明:在区块位置(region)下面,你可以使用鼠标拖拽来显示区块的显示顺序,没有启用的模块内会包含有一些模块生成的区块,若你在模块内启用了Throttle(节流),在配置位置的右边将会出现节流按钮,你可以选择将其勾上或不选,作用是:当你的站点访问量超过一定值时(你在Throttle内可设置),勾上的区块,将会被关闭。进行了一些操作后记得点击下面的保存按钮,否则无法生效,接下来我们来看看怎么配置区块,它可以使你更好的利用区块,可以使你设置什么用户,或在那些页面下显示.下面我来截个图说明下,

B:定制区块
定制区块可分为简单的定制和复杂的定制,后面的定制应该能算高人了,哈哈.....
简单定制:首先进入设置区块的位置,如下图:

点击进去后出现的图片如下,下面我们来做些设置.如下图:

说明:区块的body部分实在是强大,你可以和Drupal内的分类结合起来将其做成一个站点导航,可以将其作成你想要的东西,只要你能够用HTML或PHP将其编写出来.
复杂定制:
使用区块最高境界了,就是不依靠模板默认提供的几个位置来显示区块.这可能需要了解关于Drupal的更多知识,比如:模板,以及内部函数等......
下面我来做个在每个内容下面添加个区块.
首先进入你所使用的模板文件内,找到.info文件,drupal 5.x不是在这里,加入代码
代码:
regions [left] = Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
regions[belowPost] = Below Posts说明: Left sidebar
regions[right] = Right sidebar
regions[content] = Content
regions[header] = Header
regions[footer] = Footer
是默认的,当你添加上新的regions后,它将覆盖了模板提供的默认regions,所以若.info文件内没有上叙的,就应该加上.现在我添加了一个新的regions,
再在 node.tpl.php内添加代码:
代码:
<?php print $belowPost ?>
在<?php print $content ?>后面再在template.php 内加入代码
代码:
function phptemplate_preprocess_node(&$vars) {
if (!$vars['teaser']){
foreach (array('belowPost') as $region) {
$vars[$region] = theme('blocks', $region);
}
}
}看看我测试的效果:图片如下:

区块内regions的图片如下:

区块的作用大吧!你想怎么弄就怎么弄,想让在里面显示什么就显示什么!另外,需要注意的是,当你自己添加个regions时,记得在site configution------>performance-------->Clear cached data,清除下模板的缓存,regions才能起作用.
区块定制总结:
总体来说可以分为三步:
第一步:在模板文件.info中定义一个新的regions.格式是:regions[内部名称] = 显示在区块内的名称.eg:regions[footer] = Footer,(Drupal是通过在模板内使用regions来控制显示区块的,所以需要定义),记得加上默认的那些regions.(如果没有定义的话,系统将会使用默认值,若添加新的regions,将使原来的失效,所以需要加上).
第二步:由于.info在主题内存在缓存,所以添加后你需要去Administer -> Site configuration -> Performance清除缓存.
第三步:我们需要将新的regions放在模板内,并来显示他们.若需要在页面内加入区块,则只需要在 page.tpl.php内在你想要它出现的位置添加上<?php print $内部名称 ?> 由于内部名称能够自动在page.tpl.php模板内自动转换成region 变量,所以你无须再做其他操作.若是加在其它地方,你需要在template.php内使用function 函数来处理变量,因为它不能够动态生成,

