如果你想让访客访问你的博客时首先看到某些文章,置顶功能必不可少。
这一功能没找到在主题中实现的方法,只能修改 Hexo 文件。
修改 /node_modules/hexo-generator-index/lib/generator.js
文件为:
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 29 30 31 32 33 34 35 36 37 38 'use strict' ;const pagination = require ('hexo-pagination' );const { sort } = require ('timsort' );module .exports = function (locals ) { const config = this .config ; const posts = locals.posts .sort (config.index_generator .order_by ); posts.data = posts.data .sort (function (a, b ) { if (a.top && b.top ) { if (a.top == b.top ) return b.date - a.date ; else return b.top - a.top ; } else if (a.top && !b.top ) { return -1 ; } else if (!a.top && b.top ) { return 1 ; } else return b.date - a.date ; }); sort (posts.data , (a, b ) => (b.sticky || 0 ) - (a.sticky || 0 )); const paginationDir = config.pagination_dir || 'page' ; const 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
值来决定文章的排列顺序。
这样添加完成之后,置顶文章并没有明显的标志。此时可以通过开启 custom_file_path
中的 postMeta
,并在 /source/_data/
目录下新建 post-meta.njk
文件来进一步操作,但是效果是这样的:
要想把图标放在左侧,只能通过“不推荐”的方法修改主题文件来实现这种效果:
修改 /themes/next/layout/_partials/post/post-meta.njk
文件,在 <div class="post-meta">
下添加以下代码:
1 2 3 4 5 6 {% if post.top %} <span class ="post-top-icon" > <i class ="fas fa-thumbtack" > </i > </span > <font color =FF0000 > TOP</font > {% endif %}
在 NexT 旧版本中,要修改的是 /themes/next/layout/_macro/post.swig
文件。新版本的 NexT 对原 post
文件做了分离。在 Font Awesome 旧版本中,对应的大头针图标名称为 fa fa-thumb-tack
,新版改为 fas fa-thumbtack
。另外,color
为显示字体的颜色,可以更改为你想要的颜色。后面的提示文字也可以更改为“置顶”等。
完成。
参考