仅在Drupal中显示特定内容类型的视图

仅在Drupal中显示特定内容类型的视图,drupal,drupal-views,drupal-blocks,Drupal,Drupal Views,Drupal Blocks,我在Drupal中构建了一个“关于作者”的视图块。这是在当前节点的创建者的用户_id处链接的,非常有效 但是,我现在想知道如何将视图限制为某些内容类型。我不想让它出现在故事中,只想出现在博客上。我试着用争论来解决这个问题,但到目前为止我没有任何运气 有人能帮我吗?只需创建视图,转到块配置页面并使用php获取块可见性规则。要仅在某些内容类型上显示块,请使用: <?php $match = FALSE; $types = array('story' => 1, 'page' =>

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

但是,我现在想知道如何将视图限制为某些内容类型。我不想让它出现在故事中,只想出现在博客上。我试着用争论来解决这个问题,但到目前为止我没有任何运气


有人能帮我吗?

只需创建视图,转到块配置页面并使用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,

只需创建视图,转到块配置页面,并使用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,

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

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

否,可以使用视图的内置参数验证器

例如,如何将视图限制为用户的uid值?”这意味着,任何给定视图如何只能由拥有该内容的登录用户看到

下面是视图参数PHP验证程序代码

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

不,您可以使用视图的内置参数验证器

例如,如何将视图限制为用户的uid值?”这意味着,任何给定视图如何只能由拥有该内容的登录用户看到

下面是视图参数PHP验证程序代码

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

<?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;
?>

更好:

<?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;
?>


我喜欢这种方法,因为它在升级到较新的drupal版本后不太可能出现故障。我喜欢这种方法,因为它在升级到较新的drupal版本后不太可能出现故障。