跳转到主要内容
sina_生活中就简单一点吧 提交于 19 December 2017

1.工作需要根据每篇文章的tag进行相关文章的推荐。举个例子说明推荐相关文章的需求:

比如有几篇文章:

1.文章1的tag:web,drupal,vue

2.文章2的tag:web,vue

3.文章3的tag:react.

4.文章4的tag:web.

那么在对文章1进行推荐时,应该是首先推荐文章2(因为文章2的tag和文章1的tag匹配度最高),接着是推荐文章4,文章3不会被推荐。

2.要实现这中推荐效果,经过群里的大神推荐,使用Similar By Terms这个模块来做。

3.使用这个模块非常简单。

  • 首先就是安装这个模块,下载解压,然后进行安装。
  • 创建一个新的视图,生成一个block.
  • 在该视图中,选择高级->上下文过滤器->新增->Similar by terms:Nid->提供一个默认值->URL上的内容ID
  • Limit similarity to terms within these vocabularies to Tags. 
  • 保存这个上下文过滤器
  • 高级->使用聚合器->是

4.因为我们在推荐时,情况比较复杂,比如说:两篇文章的tag都一样,那么到底应该优先推荐哪篇文章呢?其实应该是优先推荐与当前文章在同一个文章分类下的文章。这种需求通过view的排序功能就可以实现了。我们可以添加几个排序规则:

比如说首先应该是匹配tag数量最多的文章 ,那么在排序规则中使用:count(distinct content:tag)

接着按照文章分类来匹配,那么在添加按照文章分类来排序。

最后可能还要按照时间的先后顺序来进行推荐。

5.最后我们就可以在view的预览中查看推荐的结果。

参考英文的这篇文章:

https://alvinalexander.com/drupal/how-to-configure-similar-by-terms-module-drupal-8

Drupal 版本