前言

网上有不少相关的帖子,不过版本会比较旧,而不同版本可能存在代码不同的问题,不过大部分还是大同小异,本系列就不啰嗦重复了,基本只会按照本人所使用的版本以及个人所使用到的内容来进行介绍。

该系列是对我所使用的Next主题进行个性化定制,涉及到js和css等的修改,还有各种插件的使用;另一个系列是针对Next主题进行一些写作技巧的介绍与运用,希望能对大家有所帮助。有疑问的朋友可以给我留言,我会尽可能回复O(∩_∩)O

我所使用的Hexo和NexT的版本如下:

hexo: 3.7.1
next: 5.1.4

关于配置文件

对于使用了Next主题的Hexo静态博客,存在着两个至关重要的配置文件`_config.yml`。在本系列中,统一将位于站点根目录下的该文件称为`站点配置文件`,将位于`themes\next`目录下的该文件称为`主题配置文件`。

准备工作:添加美化博客的相关文件

本系列会使用到大量的css与JavaScript的相关内容,为了更有效率与可观赏性的美化博客,我们将这些美化相关的东西都尽可能地写到一类文件中,方便日后查询与修改。譬如下边的几个文件里,就存放了博客的大部分美化内容:

  1. themes/next/source/css/_custom/custom.styl
  2. themes/next/source/js/src/custom.js
  3. themes/next/layout/_partials/head/custom-head.swig
  4. themes/next/layout/_custom/custom-foot.swig

除了第一个文件custom.styl保存的是css代码,另外三个文件都是保存的js代码。这几个文件分别会在页面的以下位置中被引入:

<html>
<head>
....
{{ custom.styl }} //css
....
{{ custom-head.swig }} //js
....
</head>
<body>
....
....
{{ custom-foot.swig }} //js
{{ custom.js }} //js
</body>
</html>

这里的custom.stylcustom-head.swig是原本的NexT主题自带的,另外两个是我自己添加的,之所以又添加了另外两个js文件,是因为在页面的不同地方引入js文件会对页面产生不一样的效果与影响。

添加 custom-foot.swig 文件

themes/next/layout/_custom/目录下添加custom-foot.swig文件,该文件内容如下:

{#
Custom foot in body, Can add script here.
#}
<!-- 自定义的js文件 -->
<script type="text/javascript" src="/js/src/custom.js"></script>

接着修改themes\next\layout\_layout.swig,在body标签的闭合标签前添加一行代码,表示将我们新添加的custom-foot.swig文件包括进去:

<body>
.... {% include '_custom/custom-foot.swig' %}
</body>
</html>

这个文件的作用是负责引入我们想要的js文件,比如其他第三方js的cdn等等。因为页面在引入js文件时是阻塞式的,如果我们在页面的最开始就引入这些js文件,而这些文件又比较大,会造成页面在渲染时长时间处于白屏状态。

添加 custom.js 文件

themes/next/source/js/src目录下添加custom.js文件,该文件用来存放我们自己写的js函数等等,需要注意的是,我们之前是在custom-foot.swig文件中的script标签里引入了该文件,也就是说,在该文件里,我们不能再自己添加script标签了,直接书写js函数就行了,如下所示:

/* 返回随机颜色 */
function randomColor() {
return "rgb("+~~(255*Math.random())+","+~~(255*Math.random())+","+~~(255*Math.random())+")";
}

页面的简单美化

由于很多大佬的博客都有很详尽的美化教程,这里我就不赘述了,只简单介绍下比较少人讲述到的部分简单美化。

改变页面的字体大小

打开 themes\next\source\css\_variables\base.styl,该文件保存了一些基础变量的值,我们找到$font-size-base,将值改为16px

// Font size
$font-size-base = 16px

这个文件里定义了很多常量,有兴趣的可以自己去琢磨琢磨,修改一些其他的变量。

文章启用tags和categories

可能是该版本的NexT主题的关系,在我第一次使用NexT主题时,折腾了很久都没办法让菜单栏里的tags和categories的页面生效,一直显示白屏。后来终于在知乎找到答案,首先我们需要将某篇文章设置tags和categories,如下:

---
title: Test
tags:
- MyTag
categories:
- MyCategory
date: 20xx-xx-xx xx:xx:xx
---

接下来是重点了,首先确定是否已经在主题配置文件中启用了tags和categories这两个菜单,如下:

menu:
home: / || fas fa-home
archives: /archives/ || fas fa-archive
categories: /categories/ || fas fa-th
tags: /tags/ || fas fa-tags

接着确定是否在source目录下是否已经存在tags和categories这两个文件夹,如果不存在需要运行下边的命令:

hexo n page tags
hexo n page categories

运行之后会在source目录下生成对应的两个文件夹,在文件夹下会存在一个index.md文件,打开这两个index.md文件,分别添加type: tagstype: categories,如下:

---
title: 标签
date: 20xx-xx-xx xx:xx:xx
type: tags
---
---
title: 分类
date: 20xx-xx-xx xx:xx:xx
type: categories
---

接下来重新使用本地调试三连,就可以看到tags和categories这两个菜单的页面显示正常了。

去掉图片边框

NexT主题默认会有图片边框,不太好看,我们可以把边框去掉。打开 themes\next\source\css\_custom\custom.styl,添加如下CSS代码:

/* 去掉图片边框 */
.posts-expand .post-body img {
border: none;
padding: 0px;
}
.post-gallery .post-gallery-img img {
padding: 3px;
}

修改语法高亮的主题

语法高亮就是在引入代码时让代码呈现特定的样式,而在Markdown文件中语法高亮的使用方法是在引入代码的前一行添加三个反引号加上使用的语言名字,然后在引入代码的下一行使用三个反引号结尾。

如下所示的格式,就表示html代码的语法高亮:

<h2>Hello World!</h2>

其源码如下:

```html
<h2>Hello World!</h2>
```

由于NexT默认的语法高亮的主题比较一般,我们可以换成其他的主题,比如我所使用的就是黑色的主题。

打开主题配置文件,修改如下配置:

# 语法高亮主题
# Code Highlight theme
# Available value:
# normal | night | night eighties | night blue | night bright
# https://github.com/chriskempson/tomorrow-theme
highlight_theme: night eighties

指定Markdown的解析器

上边我们设置了语法高亮后,虽然在本地调试没有问题,然而当我们将博客部署到GitHub PagesCoding Pages后却发现,前者的页面不支持语法高亮,而后者支持。百度后才知道原来是因为 GitHub 默认使用的 Markdown 解析器不支持语法高亮,解决方法如下:

打开站点配置文件_config.yml,在末尾添加如下内容:

markdown: redcarpet
redcarpet:
extensions: ["fenced_code_blocks", "autolink", "tables", "strikethrough"]

接下来重新执行部署三连命令,就会发现 GitHub Pages 上部署的页面语法高亮显示成功了。

推荐一些写得很齐全的文章链接

  1. hexo的next主题个性化配置教程
  2. 打造个性超赞博客Hexo+NexT+GithubPages的超深度优化

Hexo瞎折腾系列(1) - 准备工作与简单美化的更多相关文章

  1. Hexo瞎折腾系列(9) - 网页标题崩溃特效

    前言 本系列的所有修改均基于本系列第一篇中的新增文件(譬如custom.js),请先自行阅读Hexo瞎折腾系列(1) - 准备工作与简单美化:并按照文章所说自行修改代码或文件. 为网页添加标题崩溃特效 ...

  2. Hexo瞎折腾系列(8) - 添加评论系统

    前言 Hexo的NexT主题本身就集成了一些评论系统,多说啊之类的已经关闭服务的略过不提,目前比较多人用的有畅言.来必力livere.Gitment.Gitalk.Disqus等. 我刚用的评论系统的 ...

  3. Hexo瞎折腾系列(5) - 使用hexo-neat插件压缩页面静态资源

    为什么要压缩页面静态资源 对于个人博客来说,优化页面的访问速度是很有必要的,如果打开你的个人站点,加载个首页就要十几秒,页面长时间处于空白状态,想必没什么人能够忍受得了吧.我个人觉得,如果能把页面的加 ...

  4. Hexo瞎折腾系列(2) - 添加背景图片轮播

    动态背景图片插件jquery-backstretch jquery-backstretch是一款简单的jQuery插件,可以用来设置动态的背景图片,以下是官方网站的介绍. A simple jQuer ...

  5. Hexo瞎折腾系列(7) - Coding Pages申请SSL/TLS证书错误

    问题 今天我的个人站点SSL/TLS证书到期,我的证书是由Coding Pages提供的,每次申请成功后有效期是三个月,证书到期后可以继续免费申请.但是当我登陆进入Coding Pages服务的后台并 ...

  6. Hexo瞎折腾系列(6) - 将博客同时部署到Github和Coding

    前言 由于本人只是将Hexo博客同时部署到 Github 和 Coding.net ,所以这里只介绍怎么同时部署到这两个网站的pages. 之所以选择这两个网站,是因为国外用户可以访问 Github, ...

  7. Hexo瞎折腾系列(4) - 站点首页不显示文章全文

    文章摘要设置 打开主题配置文件 _config.yml 文件,找到如下: # Automatically Excerpt. Not recommend. # Please use <!-- mo ...

  8. Hexo瞎折腾系列(3) - 添加GitHub彩带和GitHub Corner

    页面右上角添加GitHub彩带 你可以在这里找到一共12种样式的GitHub彩带,复制其中的超链代码. 在themes\next\layout\_layout.swig目录下找到头部彩带相关的代码: ...

  9. 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇)

    系列文章 手牵手,使用uni-app从零开发一款视频小程序 (系列上 准备工作篇) 手牵手,使用uni-app从零开发一款视频小程序 (系列下 开发实战篇) 前言 好久不见,很久没更新博客了,前段时间 ...

随机推荐

  1. leetcode第一刷_Best Time to Buy and Sell Stock III

    这道题还是挺难的,属于我前面提到的,给个数组,线性时间找出个什么东西,尽管上面的两个买卖股票也是这类.只是相比之下稚嫩多了.有关至少至多的问题比較烦人,不好想,等再做一些题,可能会发现什么规律.这道题 ...

  2. maven插件介绍之maven-jar-plugin

    maven-jar-plugin 插件的maven依赖为: <dependency> <groupId>org.apache.maven.plugins</groupId ...

  3. Oracle递归查询的原理

    在Oracle 10g下.来到scott用户下.分别以层次 1,2,3,4上的节点做实验: 当start with是根节点(level=1),要查其子节点,connect by pump和emp都是被 ...

  4. Hero In Maze

    Hero In Maze 时间限制(普通/Java):1000MS/10000MS          执行内存限制:65536KByte 描写叙述 500年前,Jesse是我国最卓越的剑客. 他英俊潇 ...

  5. 理解yarn平台,理解万岁,肤浅理解也万岁~

    从Hadoop1到Hadoop2很大程度上解放了Jobtracker资源调度的问题,这就得多亏了yarn平台了.我知道的,除了我们的大豆瓣用的是Mesos,咱们国家可以说应该是99.99%都使用的是y ...

  6. quilt

    1 什么是quilt quilt是一个patch管理工具,特别适合于对多个patch进行管理. quilt是基于gnu patch和diff的. 2 使用quilt创建一个patch 第一步,quil ...

  7. Lazy freeing of keys 对数据的额异步 同步操作 Redis 4.0 微信小程序

    https://github.com/antirez/redis/blob/4.0-rc1/00-RELEASENOTES 数据缓存 · 小程序 https://developers.weixin.q ...

  8. Mongoose Embedded Web Server Library

    https://github.com/cesanta/mongoose http://ltp.ai/docs/ltpserver.html LTP Server在轻量级服务器程序mongoose基础上 ...

  9. node-sass 安装失败win32-x64-48_binding.node

    升级了nodejs的版本,原项目的node-sass模块启动安装不了. 下载对应的win32-x64-xx_binding.node https://github.com/sass/node-sass ...

  10. STM32的低功耗设置

    因为产品需求,系统功耗是一个很重要的考虑方面.好好看下STM32F103的低功耗问题,以便编写驱动. 1.STM32的电源 1.1 STM32电源框图 上面的电源中需要注意的是后备供电区域,这个部分由 ...