在Drupal 7/Views 3中创建类似节点的列表

Sta*_*zev 29 drupal drupal-views drupal-7

从drupal.stackexchange.com复制,希望在这里获得更多答案:

我面临一个相当普遍的问题,即显示类似于当前节点的节点列表.类似节点被定义为具有当前节点具有的至少一个分类术语的节点.作为模块提供的解决方案很少,但是我发现的模块(特别是按术语相似)对于Drupal 7处于测试阶段(如"不能正常工作").

我还发现了一些基于视图和上下文过滤器的解决方案(例如http://scito.ch/content/show-related-nodes-block-based-taxonomy-terms-views-3-and-drupal- 7)或关系.我很喜欢,因为它为我节省了安装额外的模块,并查看正在积极开发和支持我宁愿使用他们,而不是任何自定义解决方案这种方式.我无法解决的问题是如何按照他们共享的术语数量对"类似节点"进行排序.例如,如果我的"IPhone 4S"节点带有术语"小工具","Apple"和"电话",我希望按以下顺序使用类似的节点:

  1. iPhone 3(Apple,Gadget,Phone)
  2. iPad(苹果,小工具,平板电脑)
  3. Mac(Apple,电脑)
  4. 布拉姆利(苹果,水果,树)

如何根据共享的术语数量对此视图中的节点进行排序?

这个问题是关于构建视图,请不要建议模块或基于php的自定义解决方案.谢谢.

nmc*_*nmc 81

  1. 创建一个块视图
  2. 添加上下文过滤器 - >内容:Nid - >从URL提供默认值 - >内容ID
  3. 添加关系 - >内容:节点上的分类术语 - >指定适当的词汇表
  4. 添加关系 - >分类术语:使用上面指定的词汇表的内容 - >勾选需要此关系
  5. 打开视图聚合(注意:下面的屏幕截图中的箭头指向错误的位置,应该指向它下方的2行)
  6. 假设您仅列出标题,请编辑标题字段以使用您在上面#4中设置的关系.
  7. 添加内容的新排序条件:Nid.在聚合设置中,选择"计数".使用#4中的关系并按降序排序
  8. 添加上下文过滤器 - >内容:Nid - >使用#4中的关系 - >提供默认值 - 来自URL的内容ID - >向下滚动并展开"更多",然后选中"排除"以从视图中删除当前节点

**请参阅下面@ garret-albright的评论,以便在Views UI预览中对此进行测试.**

相关节点视图

  • 谢谢你的模范答案!排除节点本身只是另一个简单的步骤.你可以编辑你的答案,包括以下内容:7.... +使用#4中的关系,然后按降序+ +8排序.添加上下文过滤器 - >内容:Nid - >使用#4中的关系 - >提供默认值 - 来自URL的内容ID - >向下滚动并展开"更多"然后选中"排除"以从视图中删除当前节点,因此本教程是完成,赏金是你的! (4认同)
  • @nmc好吧,我想通了 - 出于某种原因,如果我给它一个像"123"这样的NID参数,那么视图UI预览将不起作用 - 踩过我的调试器,它似乎在第一个关系使用它之后取消设置参数,当第二个关系没有使用参数时失败.在Views UI参数字段中加倍参数 - "123/123"给了我预期的行为,就像将块放在节点页面上一样.一切都很好. (2认同)