仅在Drupal中显示某个内容类型的视图

时间:2010-02-05 10:21:23

标签: drupal drupal-views drupal-blocks

我在Drupal中构建了一个“关于作者”视图块。这是在当前节点的创建者的user_id处链接的,这非常有效。

但是,我现在想知道如何将视图限制为某些内容类型。我不希望它只在博客上展示故事。我试图用Arguments做到这一点,但到目前为止我还没有运气。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:3)

我建议使用pathauto为该类型的每个节点提供一个公共URL前缀(无论如何都是个好主意),因此您可以使用简单的块可见性路径限制。例如,您将内容类型路径模式设置为“article / [title]”,然后将阻止路径设置为“article / *”

答案 1 :(得分:1)

不,您可以使用view的内置参数验证器。

离。如何将视图限制为用户的uid值?“意思是,只有拥有该内容的登录用户才能看到任何给定视图。

这是Views Argument PHP Validator代码。

global $user; return $argument[0] == $user->uid;

答案 2 :(得分:0)

只需创建视图,转到块配置页面并使用php获取块可见性规则。要仅在某些内容类型上显示该块,请使用:

<?php
$match = FALSE;
$types = array('story' => 1, 'page' => 1);
if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nid = arg(1);
  $node = node_load(array('nid' => $nid));
  $type = $node->type;
  if (isset($types[$type])) {
    $match = TRUE;
  }
}
return $match;
?>

此代码取自drupal.org,Overview-approach to block visibility

答案 3 :(得分:0)

更好:

<?php
$match = FALSE;
$types = array('story' => 1, 'page' => 1);
if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nid = arg(1);
  $node = node_load($nid);
  $type = $node->type;
  if (isset($types[$type])) {
    $match = TRUE;
  }
}
return $match;
?>