如何使用上下文过滤器和关系显示相关文章?


8

所以,我一直试图在一天中的大部分时间里弄清楚这个问题。我基本上曾经在预览器中使用过它,但是现在似乎根本无法使用。

用例:以内容类型“文章”发布的每个节点都带有一个用于包含标签的分类字段。我想做的是创建一个出现在文章下方的图块,该图块带有一系列链接到其他文章的缩略图。这些文章又基于每个文章中使用的标签而相关。

因此,问题是:

  1. 使用上下文过滤器和视图进行设置,以使视图本身自动查看文章中用作分类标准术语引用的field_tags,并根据每篇文章的标签自动显示输​​出的最佳方法是什么?

我尝试设置“上下文过滤器”以了解这些术语将在“内容类型:通过关系”过滤器中显示,但是坦率地说,我对于实现该目标所需要做的事情感到有些困惑。


这可能是最简单的方法,我试图完成同样的事情,有时我们会考虑过多。;)drupal.stackexchange.com/questions/69426/...
kyletaylored

Answers:


1

我已经在Drupal 7的一个项目中实现了相同的目的,以显示相同目录的产品。

您可以创建文章内容的视图,也可以为标签创建上下文过滤器。它将显示该标签的所有文章。

您可以按照以下步骤操作:

  • 添加标签的上下文过滤器。选中单选按钮“提供默认值”。
  • 在类型下拉列表中选择“来自网址的分类术语ID”。
  • 选中“从节点页面加载默认过滤器”复选框。
  • 选中“限制词汇量”复选框。
  • 在“词汇”部分中,选中要在视图中添加过滤器的“词汇”(标签)复选框。
  • 在更多部分下,选中“允许多个值”复选框,以便多个标签可以使用过滤条件。

您可以找到下图以供参考。

您还需要添加节点ID的上下文过滤器,并按照以下步骤操作,因此当前节点页面将不会显示在相关视图部分中。

  • 添加内容:在视图中单击上下文过滤器。
  • 选中“提供默认值”单选按钮,然后在类型下拉列表中选择“来自URL的Content ID”。
  • 在上下文过滤器的“更多”部分下,选中“排除”复选框。

在相同类别的视图中显示相关产品


0

您是否尝试过按术语相似

(编辑)Views分类标准参数的问题在于,分类标准现在包含在某个字段中,而不是某些voodoo分类标准模块代码。因此,Drupal 6中的某些分类API在Drupal 7中不可用。

我将Context模块与Context中的View Arguments一起使用。我制作了一个补丁,将其移植到Drupal7。这在视图的Contexual过滤器下提供了另一个选项,可以根据当时的上下文或加载的对象和实体获取参数。

这是一个特别有用的功能:

function taxonomy_node_get_terms($node, $key = 'tid') {
static $terms;
  if (!isset($terms[$node->vid][$key])) {
    $query = db_select('taxonomy_index', 'r');
    $t_alias = $query->join('taxonomy_term_data', 't', 'r.tid = t.tid');
    $v_alias = $query->join('taxonomy_vocabulary', 'v', 't.vid = v.vid');
    $query->fields( $t_alias );
    $query->condition("r.nid", $node->nid);
    $result = $query->execute();
    $terms[$node->vid][$key] = array();
    foreach ($result as $term) {
      $terms[$node->vid][$key][$term->$key] = $term;
      }
  }
return $terms[$node->vid][$key];
}

不应将其从Drupal核心中删除。如果将当前节点对象传递给分类术语,它将找到您使用的分类术语。


不,我会看一下。我主要担心的是,我不想过分依赖模块,因为这有时会给生产环境带来一些不稳定。
约翰·赖利

类似的术语只是创建一个可以克隆的视图。然后在完成后将其禁用。

那么,我到底在哪里加载此函数?我是否只在某处修改分类模块?
约翰·赖利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.