文章置顶设置




  • 修改站点文件夹下

    node_modules/hexo-generator-index/lib/generator.js

    • 添加以下代码
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      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; // 都没定义按照文章日期降序排
      });
  • 以下为更改后的整体代码

    • 修改后只需要在front-matter中设置需要置顶文章的top值,将会根据top值大小来选择置顶顺序。(大的在前面)
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      'use strict';
      var pagination = require('hexo-pagination');
      module.exports = function(locals){
      var config = this.config;
      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; // 都没定义按照文章日期降序排
      });
      var paginationDir = config.pagination_dir || 'page';
      return pagination('', posts, {
      perPage: config.index_generator.per_page,
      layout: ['index', 'archive'],
      format: paginationDir + '/%d/',
      data: {
      __index: true
      }
      });
      };

转自 Jerry’s Blog




---文章结束啦 ฅ●ω●ฅ 感谢您的阅读---