Bitcron相关阅读推荐
相信大部分资深博主都对「相关文章」(related posts)非常熟悉了吧。它是系统根据当前文章的内容、所属分类和标签等自动匹配出的文章列表,能够提高读者粘性,优化阅读体验。于是乎我想着在Bitcron里也引入这个功能,基本逻辑如上所述,取得当前文章的分类或标签,然后选取文章,再排除掉当前文章,如此构成一个相关阅读推荐列表。
使用分类
// 取得当前分类列表,选取5篇,排除当前文章
cat_posts = d.get_data(types='post', limit=5, path=post.category.path, excludes=[post.path])
// 判断如果有文章列表则载入标题等
if cat_posts
h3 继续阅读
ul: for post in cat_posts: li
a(href=post.url)= post.title
limit=5
:选取5篇,当然可以设置成任意数字;path=post.category.path
:当前分类路径excludes=[post.path]
:排除当前文章
默认排序是倒叙,如果想要手动修改,可以在d.get_data()
里加上sort=''
,能够使用的值有:-date
倒叙(默认)、date
正序、position
自定义排序正序、-m_date
文章最后修改时间倒叙。现在我的博客上使用的是-m_date
:
d.get_data(types='post', limit=5, path=post.category.path, excludes=[post.path], sort='-m_date')
使用标签
// 取得当前标签列表,选取5篇,排除当前文章
for tag in post.tags
tag_posts = d.get_data(types='post', limit=5, tags=tag, excludes=[post.path])
// 判断如果有文章列表则载入标题等
if tag_posts
h3 继续阅读
ul: for post in tag_posts: li
a(href=post.url)= post.title
唯一需要注意的是,为了获取当前标签tags=tag
,必须先for tag in post.tags
才有效。
更多
更多参数请参考官方API进行自定义构建。
页面类型的页面不想添加相关文章可以在meta部分标注status: page
之后引入如下判断。详细说明请参考「Bitcron中的关于页面」。
if post.metadata.status not in ['page', 'Page']
若要说不足之处应该是,假如当前文章处在列表之中,那么列表显示文章数为limit=n
中的(n-1)篇而不是n篇。