从drupal.stackexchange.com复制,希望能在这里获得更多答案:
我面临一个相当普遍的问题,即显示与当前节点类似的节点列表。类似节点被定义为具有当前节点具有的至少一个分类术语的节点。作为模块提供的解决方案很少,但是我发现的模块(特别是按术语类似)在Drupal 7中处于测试阶段(如“不能正常工作”)。
我还发现了一些基于视图和上下文过滤器(例如http://scito.ch/content/show-related-nodes-block-based-taxonomy-terms-views-3-and-drupal-7)或关系的解决方案。我非常喜欢这种方式,因为它节省了我安装额外的模块和主动开发和支持的视图我宁愿使用它们而不是任何自定义解决方案。我无法解决的问题是如何按照他们共享的术语数量对“类似节点”进行排序。例如,如果我的“IPhone 4S”节点带有术语“小工具”,“Apple”和“电话”,我希望按以下顺序使用类似的节点:
如何根据共享的术语数量对此视图中的节点进行排序?
这个问题是关于构建视图,请不要建议模块或基于php的自定义解决方案。谢谢。
答案 0 :(得分:81)
**请参阅@ garret-albright的评论,以便在Views UI预览中对此进行测试。 **
答案 1 :(得分:2)
猜猜是什么 - 也有modules:D
我可以建议similar by terms在没有配置麻烦的情况下为您提供该视图。
答案 2 :(得分:0)
这是与此问题相关的替代解决方案。然而,它可能不适用于所有情况,但如果你可以使用它更简单(在我看来比聚合更安全)。
我将使用panels。创建面板以显示实体(节点或其他任何内容)后,您可以添加多个视图并在内容旁边显示它们。其中一个观点将成为我们的相关内容 因此,面板是唯一的限制。 也许可以使用迷你面板并将其表示为块,我没有尝试过。
像往常一样创建视图,但不将其创建为块或页面。取消选中这两项。
在视图配置页面中,在实体上创建与分类术语的关系。
创建一个上下文过滤器来过滤:分类术语:术语ID 。
创建另一个上下文过滤器:实体ID 或内容:Nid (如果它是节点)。
现在点击添加,创建一个类型为内容窗格的新显示。
在显示配置区域(命名为:窗格设置)中,打开参数输入。你应该有两个选择:
恭喜!您已完成创建视图。这是一个小组的时间(我不会解释有关创建小组的内容,因为它超出了本Q / A的范围)。
创建面板(或启用节点/%节点默认面板并添加变体)。
在上下文标签中,在实体上创建与分类术语的关系。
点击其中一个窗格中的添加内容。
如果您没有更改视图的类别,则会在视图窗格中添加它。它将要求您在面板上下文中提供实体ID和术语ID,并进行设置。
现在,当显示面板时,将显示所有包含相同术语但不包含此页面内容的内容。
上下文过滤器
参数输入
尝试了这种方法并且它完美无缺,但在撰写本文时,ctools有一个错误。有一个补丁:https://www.drupal.org/node/2195211
答案 3 :(得分:-1)
在配置像这样的复杂视图时,有一些配置提示可以帮助您了解每一步的实际情况:
结构>>视图>>设置>>基本:
现在,您可以预览每个配置步骤的结果,相关的SQL查询以及所涉及的字段和表格,以便您更容易理解过滤器和聚合的工作原理。
希望它有所帮助。
答案 4 :(得分:-2)
我不确定我是否完全了解了你的问题,但我认为节点队列就是答案。查看http://drupal.org/project/nodequeue
该模块发展良好。我已将它用于客户端,您也可以使用他们的smartqueue api制作您的列表。
希望我能提供帮助。