如何控制区块按特定内容类型显示

.Wed, 12/15/2010 - 21:00

这个问题在项目中会多次遇到,某些区块,需要在某些内容类型,甚至再加上某些特定页面下显示。Drupal7已经将这个应用加到核心里了,在节点选项里就会看到内容类型选择。

在Drupal6中有两种实现方案。

第一种,也是比较推荐的方案:启用token和pathauto模块,给该内容类型设置url格式(admin/build/path/patterns),如movie/[title-raw],然后可以在views生成的区块中配置显示的页面路径:movie/*

另一种方案是启用php filter,然后用phpcode控制区块的显示位置,如:

//判断是否是节点的显示页面
if(arg(0) == 'node' && is_numeric(arg(1) && !arg(2))) {
  $node = node_load(arg(1));
  //判断节点类型是否是movie
  if($node->type == 'movie') {
    return TRUE;
  }
}
return FALSE;

因为只能选择一种控制方式,所以页面的控制就不能用了,你可以再在代码中加上页面的判断即可。