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