美文网首页
hexo实现文章置顶功能

hexo实现文章置顶功能

作者: q破晓晨曦p | 来源:发表于2018-01-15 11:45 被阅读258次

想将写好的一些文章置顶,但是hexo好像默认不提供这个功能,希望以后的版本会有。

这里简单写一下实现hexo文章置顶功能,参考 为Hexo添加文章置顶功能(三)

深度参考 解决Hexo置顶问题

修改

找到node_modules/hexo-generator-index/lib/generator.js这个文件。

var posts = locals.posts;

下面添加

posts.data = posts.data.sort(function(a, b) {
    if(a.top && b.top) { // 两篇文章top都有定义
        if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排
        else return b.top - a.top; // 否则按照top值降序排
    }
    else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)
        return -1;
    }
    else if(!a.top && b.top) {
        return 1;
    }
    else return b.date - a.date; // 都没定义按照文章日期降序排
});

完整代码

'use strict';

var pagination = require('hexo-pagination');

module.exports = function(locals) {
  var config = this.config;
  var posts = locals.posts.sort(config.index_generator.order_by);
  posts.data = posts.data.sort(function(a, b) {
        if(a.top && b.top) { // 两篇文章top都有定义
            if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排
            else return b.top - a.top; // 否则按照top值降序排
        }
        else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)
            return -1;
        }
        else if(!a.top && b.top) {
            return 1;
        }
        else return b.date - a.date; // 都没定义按照文章日期降序排
    });
  var paginationDir = config.pagination_dir || 'page';
  var path = config.index_generator.path || '';

  return pagination(path, posts, {
    perPage: config.index_generator.per_page,
    layout: ['index', 'archive'],
    format: paginationDir + '/%d/',
    data: {
      __index: true
    }
  });
};

使用

在文章添加 top 标签可以设置置顶顺序。

---
title: 文章名
date: 文章发布时间
tags: 文章标签
top: 100(文章置顶)
---

注意

迁移blog等注意备份node_modules/hexo-generator-index/lib/generator.js这个文件。

我的个人blog

相关文章

网友评论

      本文标题:hexo实现文章置顶功能

      本文链接:https://www.haomeiwen.com/subject/byvroxtx.html