1

我在 Drupal 中构建了一个“关于作者”视图块。这链接在当前节点的创建者的 user_id 上,效果很好。

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

谁能帮我吗?

4

4 回答 4

3

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

于 2010-02-05T13:22:39.383 回答
1

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

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

这是 Views Argument PHP Validator 代码。

global $user; return $argument[0] == $user->uid;
于 2012-05-24T20:01:23.153 回答
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

于 2010-02-05T11:26:08.563 回答
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;
?>
于 2015-03-03T14:53:30.980 回答