Drupal 9:使用分类术语创建相关的内容视图块
在过去的几年中,当我在此站点上撰写文章时,我一直在对其进行标记。这种标记主要是为了将帖子与该单词所标记的其他帖子的汇总列表联系在一起。最近,我想知道是否可以使用这些标签在每篇文章下方显示相关内容。过去,我一直在客户网站上使用此功能,但它要么归结为手动策划的列表,要么是某种复杂的内容分析和Solr搜索。
碰巧的是,使用Views可以很容易地做到这一点,尽管付出了一些努力才能达到我想要的效果。我正在写下这些说明,以帮助我记住过去的工作方式,并允许您设置相同的内容(如果需要)。
在某些背景下,此站点的结构由Article内容类型组成,该类型具有附加到其上的名为field_tags的字段 。此字段是一个免费标签字段,可让我在编写帖子时为帖子添加标签,并可能在需要时创建新标签。经过十多年的写作,创建新标签并不会经常发生,但是至少我可以选择这种方法。当前大约有300个唯一标签,尽管其中大多数是PHP或Drupal。
使用此设置,我通过创建一个视图创建了相关的内容块。
使用内容数据类型创建一个新视图。您可以使用内置的“视图”向导来创建一个块,其中包含最新发布的5个项目。这将为您设置一个非常标准的视图。
相关内容是通过上下文过滤器控制的,但是我们需要首先添加一个过滤器。相关内容块旨在显示其他可能感兴趣的文章。因此,我们需要添加一个上下文过滤器,该过滤器将隐藏正在查看的当前文章。毕竟,在相关内容列表中显示当前文章是毫无意义的。
在内容类别的ID字段上添加上下文过滤器。设置过滤器以提供URL中内容ID的默认值。这将自动将当前页面传递到上下文过滤器。
在此面板的底部(在“更多”区域中),选中“排除”复选框,以防止当前节点包含在相关的内容结果中。
单击面板底部的“应用”以保存此上下文过滤器。
接下来,创建另一个上下文过滤器,这次使用“内容”类别中的“ 具有分类术语ID”字段。设置过滤器值以提供默认值,然后选中“从节点页面加载默认过滤器”,这对于相关的分类法块很有用。”。作为旁注,当我在进行研究时发现此复选框时,我知道我的方向正确为此功能。
在“多值处理”部分中,选择“过滤到共享任何条件的项目”。这些选项将告诉Views从当前页面中提取分类法术语,并使用它们来查找包含任何相同项目的任何页面。
选中减少重复项复选框也是一个好主意,因为这将防止同一相关项目页面被多次显示。此复选框确实带有对其的描述,因此您也需要对此做清楚说明。本质上,您需要确保标记的基数大于1,以使其正常工作。由于我的文章标签是无限的,所以这不是问题,但是也警告不要添加太多标签,因为这可能会减慢速度。我从来没有添加超过3-4个标签,因此我认为这已经足够安全了。
在面板底部的“更多”部分中,单击“允许多个值” 复选框。单击“多个值”复选框意味着视图可以将大量术语加在一起以查找结果。请注意,“允许多个过滤器值一起使用”的另一个选项与上面的“减少重复项”设置不兼容。
单击面板底部的“应用”以保存此上下文过滤器。
您的上下文过滤器区域现在应如下所示。
视图中的其他所有内容几乎都由您决定。结果的格式或排序顺序完全取决于您。我建议确保确保基于标签的缓存已启用(它在新的视图中)。
保存视图后,最后一步就是将代码块添加到文章页面。这是通过常规块管理页面完成的。我不会在此处发布屏幕截图,因为您可以在页面底部看到该屏幕截图。我仍然在处理不同的排序顺序和结果格式,但是到目前为止,我对结果还是很满意的。该列表应显示带有“Drupal”甚至“views”标签的其他文章。