在此前的文章当中有说过,出于种种原因,不想在博客的首页显示自己的文章,也查明Next主题的确支持这么干。

在CSDN上查到一篇文章《Hexo Next 7.6.0 指定文章不在主页显示》,思路很简单:第一步,修改themes\next\layout\index.swig文件;第二步,对于不想在首页显示的文章,在其font-matter部分添加声明:not show: true。但是我始终不知道自己的Next主题版本是什么,但是很显然不是7.6.0,因为我的index.swig文件和该文章中的不一样,那么修改自然不应该完全一样。但是我抱着侥幸心理,直接把内容复制上去了。但是在傻中又不那么傻的,先把原文件存了一个副本。照着这么改,hexo -g、hexo -d之后很成功,确实实现了目标功能。

但是过了两天hexo -d出了问题,我当时置之不理。后来网站就崩了,今天打开网站就只能显示乱码了。

所幸这几天我对博客配置的更改不多,所以想到应该是隐藏文章的配置出了问题。更幸运的是,自己当时留了副本。其实没留副本应该问题也不大,github上应该可以找到,但是不一定能找到对应的版本,况且最近国内网站访问github似乎又出问题了。

先把配置还原回去,再重新开始看那篇技术博客。虽然我们的index.swig文件不同,但是只需要对比添加了什么即可。仔细看代码

1
2
3
4
5
6
7
8
9
10
11
{% block content %}

<div class="posts-expand">
{%- for post in page.posts.toArray() %}
{{ partial('_macro/post.swig', {post: post, is_index: true}) }}
{%- endfor %}
</div>

{% include '_partials/pagination.swig' %}

{% endblock %}

可以发现,其实就是在第四行和第六行之间加上了隐藏文章的设置

1
2
3
4
5
{%- for post in page.posts.toArray() %}
{%- if post.notshow != true %}
{{ partial('_macro/post.swig', {post: post, is_index: true}) }}
{%- endif %}
{%- endfor %}

其实逻辑就是,如果文章的not show(不在主页显示)== false,也就是在主页显示,就在主页显示;否则什么都不干(也就是不显示)。不同版本的显示代码不一样,因此我们只要加入判断即可。

hexo -g、hexo -d成功设置。

从这里可以看出修改配置的时候不能盲目抄袭,作为程序猿不能怕看代码,虽然我没学过这个语言,但是其实能看出这段代码的逻辑,这是不难的。如果这次近期我对配置的修改比较多,或者出bug比较晚,又或者我没有留副本,那么对我修理网站都会带来很大的麻烦,这么想我还是很幸运的。否则真的很难解决这类bug,主要是没法精准定位,在网上估计也找不到解决方案。

希望继续进步。😀