前言

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

该系列是对我所使用的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. OpenStack源码系列---neutron-server

    在看过了nova模块的源码之后,再去看OpenStack其它模块的源码会轻松很多,因为框架也是大同小异的.自四月份开通博客写了几篇文章后,真心觉得写篇技术文章如果要把前前后后牵扯到的其它技术内容都做介 ...

  2. C语言的一些特殊使用方法————————【Badboy】

    一:特殊的字符串宏 [cpp] #define A(x) T_##x #define B(x) #@x #define C(x) #x 我们如果x=1, 则上面的宏定义会被解释成下面的样子 A(1)- ...

  3. 安装NLTK

    在网上找了一圈,没找到几个靠谱的安装流程,在http://nltk.org/install.html上找到各平台下安装流程: Windows平台: 以下操作假定你的机器上还没有安装Python,如果你 ...

  4. Serializable 序列化 The byte stream created is platform independent. So, the object serialized on one platform can be deserialized on a different platform.

    Java 序列化接口Serializable详解 - 火星猿类 - 博客园 http://www.cnblogs.com/tomtiantao/p/6866083.html 深入理解JAVA序列化 - ...

  5. Provided Maven Coordinates must be in the form 'groupId:artifactId:version'.

    [hadoop@hadoop1 bin]$ ./spark-shell --packages org.mongodb.spark:mongo-spark-connector_2.10-2.2.1 Ex ...

  6. IE67下float左右对齐

    例子: <style> .h1{text-align: left;} .leftA{color: #000} .rightA{color: #ccc; float: right;} < ...

  7. FAT和FAT32文件系统的原理

    [转自] http://www.sjhf.net/Article/sjhfdoc/200404/1.html 一.硬盘的物理结构:     硬盘存储数据是根据电.磁转换原理实现的.硬盘由一个或几个表面 ...

  8. SDUT 3033 这题实在不知道起啥名好了(思维巧法)

    这题实在不知道起啥名好了 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 懒得想背景故事了,开门见山. 有一个长度为n的整数数列A ...

  9. 常用: JS 获取浏览器窗口大小

    // 获取窗口宽度 if (windows.innerWidth) winWidth = windows.innerWidth; else if ((document.body) && ...

  10. 多线程、死锁、线程安全、同步方法、代码块、休眠、守护线程、Thread、Runnable(二十三)

    1.多线程的引入 * 1.什么是线程 * 线程是程序执行的一条路径, 一个进程中可以包含多条线程 * 多线程并发执行可以提高程序的效率, 可以同时完成多项工作* 2.多线程的应用场景 * 红蜘蛛同时共 ...