我在 Drupal 中构建了一个“关于作者”视图块。这链接在当前节点的创建者的 user_id 上,效果很好。
但是,我现在想知道如何将视图限制为某些内容类型。我不希望它出现在故事中,只出现在博客上。我试着用 Arguments 来做,但到目前为止我还没有运气。
谁能帮我吗?
我在 Drupal 中构建了一个“关于作者”视图块。这链接在当前节点的创建者的 user_id 上,效果很好。
但是,我现在想知道如何将视图限制为某些内容类型。我不希望它出现在故事中,只出现在博客上。我试着用 Arguments 来做,但到目前为止我还没有运气。
谁能帮我吗?
我建议使用pathauto为该类型的每个节点提供一个公共 URL 前缀(无论如何都是个好主意),因此您可以使用简单的块可见性路径限制。例如,您将内容类型路径模式设置为“article/[title]”,然后将块路径设置为“article/*”
不,您可以使用视图的内置参数验证器。
前任。您如何将视图限制为用户的 uid 值?” 意思是,任何给定的视图如何只能由拥有该内容的登录用户看到。
这是 Views Argument PHP Validator 代码。
global $user; return $argument[0] == $user->uid;
只需创建您的视图,转到块配置页面并使用 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
更好的:
<?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;
?>