ming's blog
Hexo博客搭建填坑记录 二

在博客的维护和更新过程中我遇到了很多琐碎的小问题,我决定新建立一篇文章,用于记录这些小问题和解决办法。
由于内容过于琐碎,所以我就直接列表记录了,他们之间并无逻辑关联。


修改首页左侧导航栏列表循序

我发现主题的创建者只将归档(archive)这个页面单独做了处理,而我新加入的页面直接是对site.pages这个变量做了一个遍历,这导致我无法控制列表的排布,显得很乱,所以我最终的解决方案是直接将中间这段代码注释掉,将<a>标签内容写了进去,很简单粗暴的解决办法。

<% if (theme.archives) { %>
<a class="a-block no-tint nav-link-item <%= is_current('archives') && 'active' %>" href="<%= config.root + "archives" %>">
    <%= __('Archive') %>
</a>
<% } %>

<% if(site.pages){ %>
<% site.pages.each(function (page){ %>
<a class="a-block nav-link-item <%= is_current(page.path) && 'active' %>" href="<%= config.root + page.path %>">
    <%= page.title %>
</a>
<% });} %>

<% if (theme.rss) { %>
<a class="a-block no-tint nav-link-item" href="<%= config.root + theme.rss %>">
    <%= __('RSS') %>
</a>
<% } %>  

之后我又发现PC网页上的导航顺序没问题了,但是移动端的页面列表循序还是乱的,在仔细核查了主题作者的代码后,我终于在另一个文件中找到了,为了方便以后修改,我在此记录一下。

side_nav.ejs —— PC端的导航模块
single_column_head.ejs —— 移动端的导航模块  

SSL证书申请,配置强制跳转https

这块是这样的, 我上次在阿里云注册https的时候, 阿里云那边出了bug, 就是SSL证书那块我一直申请不下来(阿里云的免费SSL), 点不动那个按钮, 所以就一直用http访问到现在, 这次我上阿里云的控制面板试探性的点了一下,发现这个可以申请了, 然后我就把https给配置好了。 为什么我一直要配置https呢,因为现在的浏览器,比如Safari、Chrome,他们都会把非https的连接标记为非安全连接,实际上你作为建站人你自己是知道的,就是一个博客而已什么也没干,但是这块就是让人很憋屈。

配置完这个https之后,我平时访问的时候,我发现还是会有http的访问,起初我以为是浏览器缓存的问题,但是并不是这样,后来我改了很多东西,甚至怀疑到了CNAME这个文件上,现在想想真是可笑至极。最后这个问题我在阿里云的全站加速的配置里找到了。如图所示,修改下强制跳转就行。

强制跳转


CNAME文件与hexo忽略文件

这个文件是做什么的,我就不说了,直接网上查一下就有。它在github中的作用是告诉gitHub page服务你的自定义域名是什么,顾名思义,这个文件里面填的就是你的域名,没别的了。

在和hexo连用的时候我发现一个问题,当我执行hexo clean命令后,会将public文件夹下的文件全部删除,包括CNAME。这时候有两种解决办法,一是将CNAME文件放到source文件夹下,这样在hexo g后会将该文件原封不动copy到public文件夹下,避免了clean的删除。二是在hexo的全局配置文件里加入忽略文件(hexo会默认忽略“.”开头的和隐藏的文件)

hexoConfig

举例:

# Include/Exclude Files/Folders
include:
    - ".nojekyll"
    # 包括 'source/css/_typing.css'
    - "css/_typing.css"
    # 包括 'source/_css/' 中的任何文件,但不包括子目录及其其中的文件。
    - "_css/*"
    # 包含 'source/_css/' 中的任何文件和子目录下的任何文件
    - "_css/**/*"

exclude:
    # 不包括 'source/js/test.js'
    - "js/test.js"
    # 不包括 'source/js/' 中的文件、但包括子目录下的所有目录和文件
    - "js/*"
    # 不包括 'source/js/' 中的文件和子目录下的任何文件
    - "js/**/*"
    # 不包括 'source/js/' 目录下的所有文件名以 'test' 开头的文件,但包括其它文件和子目录下的单文件
    - "js/test*"
    # 不包括 'source/js/' 及其子目录中任何以 'test' 开头的文件
    - "js/**/test*"
    # 不要用 exclude 来忽略 'source/_posts/' 中的文件。你应该使用 'skip_render',或者在要忽略的文件的文件名之前加一个下划线 '_'
    # 在这里配置一个 - "_posts/hello-world.md" 是没有用的。

ignore:
    # Ignore any folder named 'foo'.
    - "**/foo"
    # Ignore 'foo' folder in 'themes/' only.
    - "**/themes/*/foo"
    # Same as above, but applies to every subfolders of 'themes/'.
    - "**/themes/**/foo"

我用的是第一种方法解决的,第二种方法我没试,不过官方文档里都写了,所以也是一种合格的解决办法。


创建标签页

主题作者只写了按时间归档的页面,标签页并没有写,甚至在使用文档里也没有说明(这个说明文档非常的简陋,issue里面一片哀嚎),但是hexo是自己支持标签分类的,我们只需要稍加配置一下即可。

参考这篇issue里面AmazingRise的回答

标签页配置


SEO优化

参考这篇博文 –> Hexo博客Next主题SEO优化方法

说的很详细,我就不赘述了。