Skip to content

drupal.block.visibility.control

404 edited this page Sep 14, 2010 · 1 revision

如何在drupal中控制block如何显示

只在特定内容类型显示

选择: 当下列 PHP 代码返回 TRUE 时显示(PHP-模式,专家适用

  <?php
  $node = node_load(arg(1));
  if($node->type == "zuowen_shida_xieshou" || $node->type == "forum" || $node->type == "zuowen_cansai" || $node->type == "zuowen_ziyou_shangchuan"){
  
  return TRUE;
  }

双引号内的就是content type中的内容类型对应的machine name。

node_load(arg(1))中的arg(1)应该是path中的第2个参数。也就是说,如果当前的uri是 example.com/node/1234 那么path就是 node/1234,arg从0开始,因此arg(0)对应node,arg(1)对应1234。把1234传给node_load,就相当于取得了1234这个nid的node对象。该对象信息中会包括这个node的内容类型是什么。在这里我默认uri是node/nid这种形式。并不是所有站点都是这样。因此这个方法不同用?

node_load的api文档: http://api.drupal.org/api/function/node_load/6

这是个最简便的方法?

  <?php
    $node = node_load(arg(1));
    $type = $node->type;
    return in_array($type,array('ctype1','ctype2','ctype3'));
  ?>
  http://drupal.org/node/134425#comment-3003814

其中ctype1是我们要的content type的machine name。

durpal.org上给的方法

http://drupal.org/node/115419

相关信息

Add a 'related nodes' block that links to a taxonomy-based view

http://drupal.org/node/65375 非常重要。

Using CCK field value of current node as argument for view in sidebar block

http://drupal.org/node/598940

Clone this wiki locally