flexiblock模块

Druapl 4.7 使用手记 (3):灵活摆放block

Drupal 4.7 提供了更灵活的block摆放设置,除了原来的左右边栏,还可以把block摆放在页首与页尾。新的block摆放设置有一个优点与一个缺点。优点是事实上它可以把block摆放在页面(page.tpl.php)上的任何位置;确定是摆放仅限于于页面(page.tpl.php)而无法灵活的放置在node.tpl.php上,举个例子,譬如你想在每篇blog的下面通过freetagging的关联添加一个"相关blog文章"的block,利用Drupal的新的block系统,你只能把这个block摆放在评论的下面而通常所希望的评论的上面,free tags的下面,有些不方便。这里我就分别介绍一下Drupal 4.7的block的这两个优缺点,以及改进办法(以放置related nodes 为例)。

Drupal 4.7的block在设置中,除了左右侧边栏外,新添加了页首,页脚和内容三个位置的摆放,使得block的放置更为灵活。其实,block的摆放并不仅限于这三个地方,通过设置方便的PHPTemplate主题,我们可以方便的把block放在任意的地方。首先,针对left, right, content, header, 和footer这5个位置,他们对应的变量分别是 $sidebar_left, $sidebar_right, $content, $header, 和 $footer_message。也就是说在page.tpl.php中,你只要想在显示他们的地方是用 <?php print $变量名称; ?> 就可以了。譬如,你可以把 $sidebar_left 放在右边而不是左边(使用两个边栏都在右侧的外观主题)。除此以外,你还可以方便的定义自己的区域。

在你的主题文件夹里看看有没有template.php文件,如果有你需要将下面的代码添入,如果没有则需要新建一个template.php文件。在这个文件中我们将利用mytheme_regions() 来创建新的block的位置(参看Drupal使用手册的这里)。譬如你想在Drupal已有的block摆放区域外新建一个用来放Ad Sense的floater区域,只需要在template.php文件中写入以下代码:
function regional_regions() {
return array(
'floater' => t('floater'),
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content' => t('content'),
'header' => t('header'),
'footer' => t('footer')
);
}
?>
注意:你需要把regional_regions()更换为 你的主题名称_regions(),譬如 pushbutton_regions()。

然后在page.tpl.php文件中,只需要在你希望显示这个新的floater区块的地方写入 即可。同时也可以方便的css文件中定义它的显示属性(譬如,float:right)。

但是这样的灵活摆放仅限于page.tpl.php,无法在node.tpl.php上使用,有时这会非常的不方便。所以为了在node上灵活的显示block,我们有两种方式,一是在node.tpl.php上加入一段php代码显示block,但是并不推荐。另外就是大名鼎鼎,异常好用的flexiblock了,原来的作者没有推出 4.7的版本,但是有人帮助升级到了4.7(这里)使用方法与以前类似,是针对node.tpl.php的,正好可以与drupal的block摆放互补不足。有了这个模块,就可以方便的摆入“related nodes”block,用free tags重现awtags的方便之处,我这里就是一个范例。:)

Blog分类: 

随心所欲的摆放区块(block): flexiblock.module

[img_assist|fid=3461|thumb=1|alt=Flexiblock模块示意图|caption=flexiblock模块的示意图]
Drupal让我们体会到了搭积木的乐趣,方便的模块结构使用户可以随心搭建。Drupal页面设置也很灵活,无论是三栏结构,还是两栏结构,简单的点击一下就能彻底搞定。虽然一切都是那么的灵活,但是还有一丁点儿死板--那就是区块只能显示在左右两栏,可能会对页面的设计带来不便。举个例子, 譬如我使用的“Related Nodes”区块, 可以通过tag来显示和目前文章相关联的文章,这个区块的摆放最好是在文章的下面,方便读者浏览,可是按照Drupal原来的设计, 作为区块,它只能放在左右的sidebar里,这样一来很不容易注意到这个区块。虽然我们可以通过更改模块将这个“related nodes”区块显示在文章的下部,但是这样为以后的升级带来了不少的麻烦,因为每升一次级,就要相应的更改一次模块,如果模块的结构发生了改变,还要一切重来。

不过现在方便多了,因为有了flexiblock模块。它可以方便的把block显示在页面的任何地方,上下左右,甚至插在文章的中间都可以,譬如上面的截图所示,或者这篇帖子下面的Related Nodes。这个模块可以在Drupal的总站找到,但是现在暂时访问不了Drupal的总站(最近Drupal总站一直在准备升级,莫非已经开始了?),不过仍然可以从作者的主页现在到这个模块。

安装之前要注意这个模块只支持PHPtemplate和wgSmarty,并不支持drupal自带的Xtemplate。安装过程很简单,下载拷贝到Modules文件夹就可以了。但是如果想让这个模块正常工作,必须更改node.pl.php,在你想让block出现的地方放上显示代码即可,当然,你还可以修改一下style.css,然这个模块的显示更漂亮。

呵呵,有了这个模块,adsense一组好福气啊,因为这个模块可以方便你在恰当地地方插播文字广告:)

Blog分类: