108° 2017591字评论

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

默认排序是倒叙,如果想要手动修改,可以在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篇。

EOF
129°
Blogger
点击加载Disqus