本篇教程首次发布在个人博客:sunhwee.com,想要获得最佳阅读体验,欢迎前往,建议用电脑查看教程文档。
阅读须知
注意,这篇文章篇幅较长,主要针对新手,每一步很详细,所以可能会显得比较啰嗦,建议基础比较好小伙伴根据右侧目录选择自己感兴趣的部分跳着看,不要文章没看,上来先喷一下!谢谢( ⊙ o ⊙ )。
教程内容随意复制使用,引用的话请加一个参考链接,谢谢!
博客开源
倒腾了一两周总算把个人博客网站完善了,目前这个版本使用应该是够了,当然还有一些优化项和功能增加后续在慢慢更新,为了回馈开源,今天准备把我自己修改完善的blog
网站源代码开源。这不是生成后的网页文件,是您可以直接使用的源码,您只需要把博客相关信息换成您自己的就可以部署了,对于新手或者不懂编程的小伙伴来说,简直是福音,极大简化了您构建博客的工作量和复杂度,每个人都可以下载并修改成自己喜欢样式!如果你有修改想法,欢迎PR!最后,我们还是给这个开源小项目取个名字吧,就叫hexo-blog-fly吧,怎么样?<<<<<源代码下载>>>>>
本博客基于Hexo
框架搭建,用到hexo-theme-matery主题,并在此基础之上做了很多修改,修复了一些bug,增加了一些新的特性和功能,博客地址:https://shw2018.github.io,博客演示:sunhwee.com。
简单使用方法:
-
star
本项目仓库o - 安装Git, 安装nodeJS
- 你可以直接
fork
一份源码到你的仓库,clone
到本地 - 在本地博客仓库运行
npm i
命令安装依赖包 - 修改配置信息,改成自己的信息
- 运行命令
hexo clean
(清除生成文件),hexo g
(生成网页),hexo s
(本地预览),hexo d
(部署)
更多详情教程,强烈推荐看我写的:Hexo+Github博客搭建完全教程
有什么问题可以在文章最后评论区留言和讨论,当然,欢迎文章最后打赏投币,请博主一杯冰阔乐,笑~
最后,如果项目和教程对你有所帮助或者你看见了还算比较喜欢,欢迎给我github项目仓库点个
star
,谢谢您!
前言
去年在博客园注册了自己的第一个博客,当时初衷就是想拿来作为自己的在线笔记本,做做学习记录,分享一些学到的东西,使用第三方提供的博客服务其实也挺方便,现在市面上提供类似服务的博客网站也很多,如CSDN,博客园,简书等平台,可以直接在上面发表,用户交互做的好,写的文章百度也能搜索的到。但是缺点是比较不*,会受到平台的各种限制和恶心的广告,个性化不足。而自己购买域名和服务器,搭建博客的成本实在是太高了,不光是说这些购买成本,单单是花力气去自己搭这么一个网站,还要定期的维护它,对于我们大多数人来说,也是没有这样的精力和时间。那么,我们能不能自己定制一个自己喜欢的个性化博客,同时也不用付出太高的成本啦?
这就引出了第三种选择,基于开源框架搭建博客,然后直接在github page
平台上托管我们的博客。这样就可以安心的来写作,又不需要定期维护,基于这个想法,今年8月初的时候开始搭建第一个属于自己的独立博客,前后断续弄了近一周,到现在稍微有点模样了。我想可能有很多小伙伴应该也想过搭建一个自己的博客,当然,网上也有一堆详细教程。写这篇博客的目的大概有两个,第一个是当做自己的搭建记录,方便以后自己随时查看提示修改,第二个是稍稍总结一下具体的搭建步骤以及一些支持个性化定制的博客源码修改的教程,稍稍分享一下这些修改经验,当然,更多的一些个性化操作需要你自己以后在这个基础上慢慢去摸索,有些写的不太好的地方还希望看到的小伙伴多多包涵。
博客初步的页面效果可以看一下我的博客:sunhwee.com,欢迎大家支持。
本博客基于Hexo,所以首先要了解一下我们搭建博客所要用到的框架。Hexo
是高效的静态网站生成框架,它基于Node.js
,快速,简单且功能强大,是搭建博客的首选框架。大家可以进入hexo官网进行详细查看,因为Hexo
的创建者是*人,对中文的支持很友好,可以选择中文进行查看。通过Hexo
,你可以直接使用Markdown
语法来撰写博客。相信很多小伙伴写工程都写过README.md
文件吧,对,就是这个格式的!写完后只需两三条命令即可将生成的网页上传到github
或者coding
等代码管理托管平台,然后别人就可以浏览你的博客网页啦。是不是很简单?你无需关心网页源代码的具体生成细节,只需要用心写好你的博客文章内容就行了。
简单总结:
Hexo
, 产品成熟,使用简单,功能强大,有丰富的各种插件资源;但,像发布后台、站内搜索,评论系统类似诉求,虽然有对应的工具,但也需要自己折腾下,后续我们一步一步介绍。
教程大致分三个部分,
- 第一部分:
hexo
的初级搭建还有部署到github page
上,以及个人域名的绑定。 - 第二部分:
hexo
的基本配置,更换主题,实现多终端工作,以及在coding page
部署实现国内外分流 - 第三部分:
hexo
添加各种功能,包括搜索的SEO
,阅读量统计,访问量统计和评论系统等。
第一部分 搭建
hexo
的初级搭建还有部署到github page
上,以及个人域名的绑定。
Hexo搭建步骤
- 1.安装
Git
- 2.安装
Node.js
- 3.安装
Hexo
- 4.
GitHub
创建个人仓库 - 5.生成
SSH
添加到GitHub
- 6.将
hexo
部署到GitHub
- 7.设置个人域名
- 8.发布文章
1. 安装Git
为了把本地的网页文件上传到github
上面去,需要用到工具———Git[下载地址]。Git
是目前世界上最先进的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git
非常强大,建议每个人都去了解一下。廖雪峰老师的Git
教程写的非常好,大家可以看一下。Git教程
windows:到git
官网上下载.exe
文件,Download git,安装选项还是全部默认,只不过最后一步添加路径时选择Use Git from the Windows Command Prompt
,这样我们就可以直接在命令提示符里打开git
了。
顺便说一下,
windows
在git
安装完后,就可以直接使用git bash
来敲命令行了,不用自带的cmd
,cmd
有点难用。
linux:对linux
来说实在是太简单了,因为最早的git
就是在linux
上编写的,只需要一行代码
sudo apt-get install git
安装完成后在命令提示符中输入git --version
来查看一下版本验证是否安装成功。
2. 安装nodejs
Hexo
是基于node.js
编写的,所以需要安装一下node.js
和里面的npm
工具。
windows:下载稳定版或者最新版都可以Node.js,安装选项全部默认,一路点击Next
。
最后安装好之后,按Win+R
打开命令提示符,输入node -v
和npm -v
,如果出现版本号,那么就安装成功了。
linux:命令行安装:
sudo apt-get install nodejs
sudo apt-get install npm
不过不推荐命令行安装,有时候有问题,建议直接到官网去下载编译好的压缩文件,如下所示:
然后解压到你指定的文件夹即可,比如我解压到我系统的/home/shw/MySoftwares
目录下了,如图:
注意本压缩包是
.tar.xz
格式的,需要两次解压
配置一下环境变量
sudo vim /etc/profile
复制下面两行到刚打开的profile
文件最底部(注意node
的安装地址/home/shw/MySoftwares/node-v12.8.0-linux-x64
换成自己的):
export NODE_HOME=/home/shw/MySoftwares/node-v12.8.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
保存后退出,再执行下面命令将环境变量生效:
source /etc/profile
将目录软链接到全局环境下(命令后面的/usr/local/bin/node
是固定的)
sudo ln -s /home/shw/MySoftwares/node-v12.8.0-linux-x64/node /usr/local/bin/node
sudo ln -s /home/shw/MySoftwares/node-v12.8.0-linux-x64/npm /usr/local/bin/npm
这样安装好了以后使用npm
安装的包(比如:ionic serve
),使用包的命令时可能会提示找不到命令,没关系,在用户目录下终端执行下面命令(固定写法):
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
这样我们在所有用户下,都可以使用npm
,也可以使用npm
安装的包的命令。成功的将nodejs
安装并配置到全局环境下。
安装完后,打开命令行终端,输入:
node -v
npm -v
检查一下有没有安装成功
添加国内镜像源
如果没有*的话,可以使用阿里的国内镜像进行加速。
npm config set registry https://registry.npm.taobao.org
3. 安装Hexo
前面git
和nodejs
安装好后,就可以安装hexo
了,你可以先创建一个文件夹MyBlog
,用来存放自己的博客文件,然后cd
到这个文件夹下(或者在这个文件夹下直接右键git bash
打开)。
比如我的博客文件都存放在D:\Study\MyBlog
目录下。
在该目录下右键点击Git Bash Here
,打开git
的控制台窗口,以后我们所有的操作都在git
控制台进行,就不用Windows
自带的cmd
了。
定位到该目录下,输入npm install -g hexo-cli
安装Hexo
。可能会有几个报错,无视它就行。
npm install -g hexo-cli
安装完后输入hexo -v
验证是否安装成功。
至此hexo
就安装完了。
接下来初始化一下hexo
,即初始化我们的网站,输入hexo init
初始化文件夹
hexo init MyBlog
这个MyBlog
可以自己取什么名字都行,然后,接着输入npm install
安装必备的组件。
cd MyBlog //进入这个MyBlog文件夹
npm install
新建完成后,指定文件夹MyBlog
目录下有:
-
node_modules:
依赖包 -
public:
存放生成的页面 -
scaffolds:
生成文章的一些模板 -
source:
用来存放你的文章 -
themes:
主题** -
_config.yml:
博客的配置文件**
这样本地的网站配置也弄好啦,输入hexo g
生成静态网页,然后输入hexo s
打开本地服务器,
hexo g
hexo server(或者简写:hexo s))
然后浏览器打开http://localhost:4000/,就可以看到我们的博客啦,效果如下:
按ctrl+c
关闭本地服务器。
4. 注册Github账号创建个人仓库
接下来就去注册一个github
账号,用来存放我们的网站。大多数小伙伴应该都有了吧,作为一个合格的程序猿(媛)还是要有一个的。
打开https://github.com/,新建一个项目仓库New repository
,如下所示:
然后如下图所示,输入自己的项目名字,后面一定要加.github.io
后缀,README
初始化也要勾上。
要创建一个和你用户名相同的仓库,后面加.http://github.io,只有这样,将来要部署到
GitHub page
的时候,才会被识别,也就是http://xxxx.github.io,其中xxx就是你注册GitHub
的用户名。例如我的:http://shw2018.github.io
5. 生成SSH添加到GitHub
生成SSH
添加到GitHub
,连接Github
与本地。
右键打开git bash
,然后输入下面命令:
git config --global user.name "yourname"
git config --global user.email "youremail"
这里的yourname
输入你的GitHub
用户名,youremail
输入你GitHub
的邮箱。这样GitHub
才能知道你是不是对应它的账户。例如我的:
git config --global user.name "shw2018"
git config --global user.email "hwsun@std.uestc.edu.cn"
可以用以下两条,检查一下你有没有输对
git config user.name
git config user.email
然后创建SSH
,一路回车
ssh
,简单来讲,就是一个秘钥,其中,id_rsa
是你这台电脑的私人秘钥,不能给别人看的,id_rsa.pub
是公共秘钥,可以随便给别人看。把这个公钥放在GitHub
上,这样当你链接GitHub
自己的账户时,它就会根据公钥匹配你的私钥,当能够相互匹配时,才能够顺利的通过git
上传你的文件到GitHub
上。
ssh-keygen -t rsa -C "youremail"
这个时候它会告诉你已经生成了.ssh
的文件夹。在你的电脑中找到这个文件夹。或者git bash
中输入
cat ~/.ssh/id_rsa.pub
将输出的内容复制到框中,点击确定保存。
打开github,在头像下面点击settings
,再点击SSH and GPG keys
,新建一个SSH
,名字随便取一个都可以,把你的id_rsa.pub
里面的信息复制进去。如图:
在git bash
输入ssh -T git@github.com
,如果如下图所示,出现你的用户名,那就成功了。
6. 将hexo部署到GitHub
这一步,我们就可以将hexo
和GitHub
关联起来,也就是将hexo
生成的文章部署到GitHub
上,打开博客根目录下的_config.yml
文件,这是博客的配置文件,在这里你可以修改与博客配置相关的各种信息。
修改最后一行的配置:
deploy:
type: git
repository: https://github.com/shw2018/shw2018.github.io
branch: master
repository
修改为你自己的github
项目地址即可,就是部署时,告诉工具,将生成网页通过git
方式上传到你对应的链接仓库中。
这个时候需要先安装deploy-git
,也就是部署的命令,这样你才能用命令部署到GitHub
。
npm install hexo-deployer-git --save
然后
hexo clean
hexo generate
hexo deploy
其中 hexo clean
清除了你之前生成的东西,也可以不加。 hexo generate
顾名思义,生成静态文章,可以用 hexo g
缩写 ,hexo deploy
部署文章,可以用hexo d
缩写
注意
deploy
时可能要你输入username
和password
。
得到下图就说明部署成功了,过一会儿就可以在http://yourname.github.io 这个网站看到你的博客了!!
7. 设置个人域名
现在你的个人网站的地址是 yourname.github.io
,如果觉得这个网址逼格不太够,这就需要你设置个人域名了。但是需要花钱。
不过,这一步不是必要的,如果目前还不想买域名可以先跳过,继续看后面的,以后想买域名了在还看这块
首先你得购买一个专属域名,xx
云都能买,看你个人喜好了。
这篇以腾讯云为例,腾讯云官网购买:
然后实名认证后进入腾讯云控制台,点云解析进去,找到你刚买的域名,点进去添加两条解析记录,如下图所示:
然后打开你的github
博客项目,点击settings
,拉到下面Custom domain
处,填上你自己的域名,保存:
这时候你的项目根目录应该会出现一个名为CNAME
的文件了。如果没有的话,打开你本地博客/source
目录,我的是D:\Study\MyBlog\source
,新建CNAME
文件,注意没有后缀。然后在里面写上你的域名,保存。最后运行hexo g
、hexo d
上传到github
。
过不了多久,再打开你的浏览器,输入你自己的专属域名,就可以看到搭建的网站啦!
8. 写文章、发布文章
首先在博客根目录下右键打开git bash
,安装一个扩展npm i hexo-deployer-git
。
然后输入hexo new post "article title"
,新建一篇文章。
然后打开D:\Study\MyBlog\source\_posts
的目录,可以发现下面多了一个文件夹和一个.md
文件,一个用来存放你的图片等数据,另一个就是你的文章文件啦。
你可以会直接在vscode
里面编写markdown
文件,可以实时预览,也可以用用其他编辑md
文件的软件的工具编写。
编写完markdown文件后,根目录下输入hexo g
生成静态网页,然后输入hexo s
可以本地预览效果,最后输入hexo d
上传到github
上。这时打开你的github.io
主页就能看到发布的文章啦。
到这儿基本第一部分就完成了,已经完整搭建起一个比较简陋的个人博客了,接下来我们就可以对我们的博客进行个性化定制了。
第二部分 定制
我们要定制自己的博客的话,首先就要来了解一下Hexo
博客的一些目录和文件的作用,以及如何平滑更换漂亮的主题模板并加入自己的定制源代码实现个性化定制
1. Hexo相关目录文件
1.1 博客目录构成介绍
从上图可以看出,博客的目录结构如下:
- node_modules
- public
- scaffolds
- source
- _data
- _posts
- about
- archives
- categories
- friends
- tags
- themes
node_modules
是node.js
各种库的目录,public
是生成的网页文件目录,scaffolds
里面就三个文件,存储着新文章和新页面的初始设置,source
是我们最常用到的一个目录,里面存放着文章、各类页面、图像等文件,themes
存放着主题文件,一般也用不到。
我们平时写文章只需要关注source/_posts
这个文件夹就行了。
1.2 hexo基本配置
在文件根目录下的_config.yml
,就是整个hexo
框架的配置文件了。可以在里面修改大部分的配置。详细可参考官方的配置描述。
1.2.1 网站
参数描述title
网站标题subtitle
网站副标题description
网站描述author
您的名字language
网站使用的语言timezone
网站时区。Hexo
默认使用您电脑的时区。时区列表。比如说:America/New_York, Japan
, 和 UTC
。
其中,description
主要用于SEO
,告诉搜索引擎一个关于您站点的简单描述,通常建议在其中包含您网站的关键词。author
参数用于主题显示文章的作者。
1.2.2 网址
参数描述url
网址root
网站根目录 permalink
文章的永久链接格式permalink_defaults
永久链接中各部分的默认值
在这里,你需要把url
改成你的网站域名。
permalink
,也就是你生成某个文章时的那个链接格式。
比如我新建一个文章叫temp.md
,那么这个时候他自动生成的地址就是http://yoursite.com/2018/09/05/temp
。
以下是官方给出的示例,关于链接的变量还有很多,需要的可以去官网上查找 永久链接 。
参数结果:year/:month/:day/:title/2019/08/10/hello-world :year-:month-:day-:title.html 2019-08-10-hello-world.html :category/:titlefoo/bar/hello-world
再往下翻,中间这些都默认就好了。
theme: landscap
theme
就是选择什么主题,也就是在themes
这个文件夹下,在官网上有很多个主题,默认给你安装的是lanscape
这个主题。当你需要更换主题时,在官网上下载,把主题的文件放在themes
文件夹下,再修改这个主题参数就可以了。
1.2.3 Front-matter
Front-matter
是md
文件最上方以 ---
分隔的区域,用于指定个别文件的变量,举例来说:
title: Hexo+Github博客搭建记录
date: 2019-08-10 21:44:44
下是预先定义的参数,您可在模板中使用这些参数值并加以利用。
参数描述layout
布局title
标题date
建立日期updated
更新日期comments
开启文章的评论功能tags
标签(不适用于分页)categories
分类(不适用于分页)permalink
覆盖文章网址
其中,分类和标签需要区别一下,分类具有顺序性和层次性,也就是说 Foo
,Bar
不等于 Bar
,Foo
;而标签没有顺序和层次。
---
title: Hexo+Github博客搭建记录
date: 2019-08-10 21:44:44
author: 洪卫
img: /medias/banner/7.jpg
coverImg: /medias/banner/7.jpg
top: true
cover: true
toc: true
password: 5f15b28ffe43f8be4f239bdd9b69af9d80dbafcb20a5f0df5d1677a120ae9110
mathjax: true
summary: 这是你自定义的文章摘要内容,如果这个属性有值,文章卡片摘要就显示这段文字,否则程序会自动截取文章的部分内容作为摘要
tags:
- Hexo
- Github
- 博客
categories:
- 软件安装与配置
---
1.2.4 layout(布局)
1.2.4.1 post
当你每一次使用代码
hexo new XXX
它其实默认使用的是post
这个布局,也就是在source
文件夹下的_post
里面。
Hexo
有三种默认布局:post
、page
和draft
,它们分别对应不同的路径,而您自定义的其他布局和post
相同,都将储存到source/_posts
文件夹。
而new这个命令其实是:
hexo new [layout] <title>
只不过这个layout
默认是post
罢了。
1.2.4.2 page
如果你想另起一页,那么可以使用
hexo new page newpage
系统会自动给你在source
文件夹下创建一个newpage
文件夹,以及newpage
文件夹中的index.md
,这样你访问的newpage
对应的链接就是http://xxx.xxx/newpage
1.2.4.3 draft
draft
是草稿的意思,也就是你如果想写文章,又不希望被看到,那么可以
hexo new draft newdraft
这样会在source/_draft
中新建一个newdraft.md
文件,如果你的草稿文件写的过程中,想要预览一下,那么可以使用
hexo server --draft
在本地端口中开启服务预览。
如果你的草稿文件写完了,想要发表到post
中,
hexo publish draft newdraft
就会自动把newdraft.md
发送到post
中。
2. 更换主题
我们在了解Hexo
博客文件基础之后,知道主题文件就放在themes
文件下,那么我们就可以去Hexo官网下载喜欢的主题,复制进去然后修改参数即可。
网上大多数主题都是github排名第一的Next
主题,但是我个人不是很喜欢,我在网上看到一个主题感觉还不错:hexo-theme-matery,地址在传送门。这个主题看着比较漂亮,并且响应式比较友好,点起来很舒服,功能也比较很多。
当然,人各有异,这个主题风格也不一定是你喜欢,那么你也可以跟着这教程类似的方法替换成你喜欢的就行了。
特性:
- 简单漂亮,文章内容美观易读
- Material Design 设计
- 响应式设计,博客在桌面端、平板、手机等设备上均能很好的展现
- 首页轮播文章及每天动态切换
Banner
图片 - 瀑布流式的博客文章列表(文章无特色图片时会有
24
张漂亮的图片代替) - 时间轴式的归档页
- 词云的标签页和雷达图的分类页
- 丰富的关于我页面(包括关于我、文章统计图、我的项目、我的技能、相册等)
- 可自定义的数据的友情链接页面
- 支持文章置顶和文章打赏
- 支持
MathJax
-
TOC
目录 - 可设置复制文章内容时追加版权信息
- 可设置阅读文章时做密码验证
-
Gitalk、Gitment、Valine 和 Disqus 评论模块(推荐使用
Gitalk
) - 集成了不蒜子统计、谷歌分析(
Google Analytics
)和文章字数统计等功能 - 支持在首页的音乐播放和视频播放功能
他的介绍文档写得非常的详细,还有中英文两个版本。效果图如下:
首先先按照文档教程安装一遍主题,然后是可以正常打开的,如果你是一般使用的话,基本没啥问题了。不过有些地方有些地方可以根据你自己的习惯和喜好修改一下, 下面记录一下我这个博客修改了的一些地方。
2.1 新建文章模板修改
首先为了新建文章方便,我们可以修改一下文章模板,建议将/scaffolds/post.md
修改为如下代码:
---
title: {{ title }}
date: {{ date }}
author:
img:
coverImg:
top: false
cover: false
toc: true
mathjax: false
password:
summary:
tags:
categories:
---
这样新建文章后 一些Front-matter
参数不用你自己补充了,修改对应信息就可以了。
2.2 添加404页面
原来的主题没有404
页面,我们加一个。首先在/source/
目录下新建一个404.md
,内容如下:
title: 404
date: 2019-08-5 16:41:10
type: "404"
layout: "404"
description: "Oops~,我崩溃了!找不到你想要的页面 :("
然后在/themes/matery/layout/
目录下新建一个404.ejs
文件,内容如下:
<style type="text/css">
/* don't remove. */
.about-cover {
height: 75vh;
}
</style>
<div class="bg-cover pd-header about-cover">
<div class="container">
<div class="row">
<div class="col s10 offset-s1 m8 offset-m2 l8 offset-l2">
<div class="brand">
<div class="title center-align">
404
</div>
<div class="description center-align">
<%= page.description %>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
// 每天切换 banner 图. Switch banner image every day.
$('.bg-cover').css('background-image', 'url(/medias/banner/' + new Date().getDay() + '.jpg)');
</script>
2.3“关于”页面增加简历(可选)
修改/themes/matery/layout/about.ejs
,找到<div class="card">
标签,然后找到它对应的</div>
标签,接在后面新增一个card
,语句如下:
<div class="card">
<div class="card-content">
<div class="card-content article-card-content">
<div class="title center-align" data-aos="zoom-in-up">
<i class="fa fa-address-book"></i> <%- __('myCV') %>
</div>
<div id="articleContent" data-aos="fade-up">
<%- page.content %>
</div>
</div>
</div>
</div>
这样就会多出一张card
,然后可以在/source/about/index.md
下面写上你的简历了,当然这里的位置随你自己设置,你也可以把简历作为第一个card
。
2.4 数学公式渲染和代码高亮
2.4.1 解决mathjax与代码高亮的冲突
如果你按照教程安装了代码高亮插件hexo-prism-plugin
,单独使用是没有问题的,但如果你又使用了mathjax
,并且按照网上教程,安装kramed
插件并修改了js
文件里的正则表达式(为了解决markdown
和mathjax
的语法冲突),那你的代码就无法高亮了。解决方法很简单,别用kramed
插件了,还用原来自带的marked
插件,直接改它的正则表达式就行了。
2.4.2 加数学公式显示
打开/themes/matery/layout
中的post.ejs
文件,在最下方粘贴如下代码:
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default"></script>
由于markdown
语法与mathjax
语法存在冲突,所以还需要修改源文件。
打开/node_modules/marked/lib
中的marked.js
文件,第539行的escape:
处替换成:
escape: /^$[`*\[\]()#$+\-.!_>])/
第553行的em:
处替换成:
em: /^\*((?:\*\*|[\s\S])+?)\*(?!\*)/
这时在文章里写数学公式基本没有问题了,但是要注意:
数学公式中如果出现了连续两个{,中间一定要加空格!
举个例子:
行内公式:\(y = f(x)\)
代码:
$y = f(x)$
行间公式:
\[y = {f_{ {g_1}}}(x)\]
代码:
\\[y = {f_{ {g_1}}}(x)\\]
注意上面花括号之间有空格!
2.5 增加建站时间
修改/themes/matery/layout/_partial
中的footer.ejs
,在最后加上:
<script language=javascript>
function siteTime() {
window.setTimeout("siteTime()", 1000);
var seconds = 1000;
var minutes = seconds * 60;
var hours = minutes * 60;
var days = hours * 24;
var years = days * 365;
var today = new Date();
var todayYear = today.getFullYear();
var todayMonth = today.getMonth() + 1;
var todayDate = today.getDate();
var todayHour = today.getHours();
var todayMinute = today.getMinutes();
var todaySecond = today.getSeconds();
/* Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
year - 作为date对象的年份,为4位年份值
month - 0-11之间的整数,做为date对象的月份
day - 1-31之间的整数,做为date对象的天数
hours - 0(午夜24点)-23之间的整数,做为date对象的小时数
minutes - 0-59之间的整数,做为date对象的分钟数
seconds - 0-59之间的整数,做为date对象的秒数
microseconds - 0-999之间的整数,做为date对象的毫秒数 */
var t1 = Date.UTC(2017, 09, 11, 00, 00, 00); //北京时间2018-2-13 00:00:00
var t2 = Date.UTC(todayYear, todayMonth, todayDate, todayHour, todayMinute, todaySecond);
var diff = t2 - t1;
var diffYears = Math.floor(diff / years);
var diffDays = Math.floor((diff / days) - diffYears * 365);
var diffHours = Math.floor((diff - (diffYears * 365 + diffDays) * days) / hours);
var diffMinutes = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours) / minutes);
var diffSeconds = Math.floor((diff - (diffYears * 365 + diffDays) * days - diffHours * hours - diffMinutes * minutes) / seconds);
document.getElementById("sitetime").innerHTML = "本站已运行 " +diffYears+" 年 "+diffDays + " 天 " + diffHours + " 小时 " + diffMinutes + " 分钟 " + diffSeconds + " 秒";
}/*因为建站时间还没有一年,就将之注释掉了。需要的可以取消*/
siteTime();
</script>
然后在合适的地方(比如copyright
声明后面)加上下面的代码就行了:
<span id="sitetime"></span>
2.6 修改不蒜子初始化计数
因为不蒜子至今未开放注册,所以没办法在官网修改初始化,只能自己动手了。和上一条一样,我们在/themes/matery/layout/_partial
里的footer.ejs
文件最后加上:
<script>
$(document).ready(function () {
var int = setInterval(fixCount, 50); // 50ms周期检测函数
var pvcountOffset = 80000; // 初始化首次数据
var uvcountOffset = 20000;
function fixCount() {
if (document.getElementById("busuanzi_container_site_pv").style.display != "none") {
$("#busuanzi_value_site_pv").html(parseInt($("#busuanzi_value_site_pv").html()) + pvcountOffset);
clearInterval(int);
}
if ($("#busuanzi_container_site_pv").css("display") != "none") {
$("#busuanzi_value_site_uv").html(parseInt($("#busuanzi_value_site_uv").html()) + uvcountOffset); // 加上初始数据
clearInterval(int); // 停止检测
}
}
});
</script>
然后把上面几行有段代码:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv">
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
</span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv">
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
</span>
<% } %>
修改为:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv" style='display:none'>
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
</span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv" style='display:none'>
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
</span>
<% } %>
其实就是增加了两个style='display:none'
而已。
2.7 添加动漫人物
其实三步就行了,不用像网上有些教程那么复杂。
第一步:
npm install --save hexo-helper-live2d
第二步:
npm install live2d-widget-model-shizuku
这里的动漫模型可以改,只需要下载对应模型就行了,你可以官方仓库去看有哪些模型,下载你喜欢的就行。
第三步:
在根目录配置文件中添加如下代码:
live2d:
enable: true
scriptFrom: local
pluginRootPath: live2dw/
pluginJsPath: lib/
pluginModelPath: assets/
tagMode: false
log: false
model:
use: live2d-widget-model-shizuku
display:
position: right
width: 150
height: 300
mobile:
show: false
react:
opacity: 0.7
然后hexo g
再hexo s
就能预览出效果了,但是有个注意的地方,这个动漫人物最好不要和不蒜子同时使用,不然不蒜子会显示不出来。至于解决办法后续更新。
解决动漫人物和不蒜子不能同时使用的
bug
(2019.08.11):
打开themes\matery\layout\_partial
中的footer.ejs
,将本站总访问量和访客数的代码改为如下:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalTraffic) { %>
<span id="busuanzi_container_site_pv" style='display:none'></span>
<i class="fa fa-heart-o"></i>
本站总访问量 <span id="busuanzi_value_site_pv" class="white-color"></span>
<% } %>
<% if (theme.busuanziStatistics && theme.busuanziStatistics.totalNumberOfvisitors) { %>
<span id="busuanzi_container_site_uv" style='display:none'></span>
人次, 访客数 <span id="busuanzi_value_site_uv" class="white-color"></span> 人.
<% } %>
变化就在下面两句,将源代码对应字段后面的</span>
写在前面了。
<span id="busuanzi_container_site_pv" style='display:none'></span>
<span id="busuanzi_container_site_uv" style='display:none'></span>
发现按照上面改了过后,又出现一个新
bug
:文章头部的阅读次数不显示了,解决办法:(2019.08.11):
打开themes\matery\layout\_partial
中的post-detail.ejs
,找到对应代码字段:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.enable) { %>
<div id="busuanzi_container_page_pv" class="info-break-policy">
<i class="fa fa-eye fa-fw"></i><%- __('readCount') %>:
<span id="busuanzi_value_page_pv" ></span>
</div>
<% } %>
修改为下面的就可以了:
<% if (theme.busuanziStatistics && theme.busuanziStatistics.enable) { %>
<span id="busuanzi_container_site_pv" style='display:none'></span>
<i class="fa fa-eye fa-fw"></i><%- __('readCount') %>:
<span id="busuanzi_value_page_pv" ></span>
<% } %>
2.8 添加评论插件
由于这个主题自带了gittalk
、gitment
、valine
等评论插件,所以我们只需要对应插件参数就行了,这个博客用的是gittalk
,如下:
当然也可以用其他评论插件,只需要配置对应项就是了,不是自带的可以照着网上的教程自己弄一个,类似的文章有很多,可以搜索关键字就行了。
2.9 添加网易云音乐BGM
写文章的时候,想插入一段BGM
怎么办?
其实我们可以借助一些在线音乐的外链播放方式,首先打开网易云网页版,找到想听的歌曲,然后点击生成外链:
可能你会遇到问题,比如点击生成外链会提示你由于版权原因,不能生成,那么可以用下面办法(目前还有效,不知道后面会不会失效)
- (以
Chrome
为例,其他浏览器类似) 打开歌单页面,在“生成外链播放器”上右击,点击审查元素(检查)ctrl+shift+i; - 接着找到生成外链播放器这段文字直接双击复制前面的
/outchain/2/20707408/
- 然后在浏览器地址栏修改歌单链接,示例:http://music.163.com/#//outchain/2/20707408/
- 然后就转到外链设置页面了。
复制如下代码:
粘贴到文章对应位置就行了,为了美观,设置一下居中,具体代码如下:
<div align="middle">这里粘贴刚刚复制的代码</div>
2.10 博客音乐板块
如果我们自己写博客写疲劳了,想放松一下听听歌又不想切出博客主页,那么我们可以自己定制一个博客音乐播放界面,把自己喜欢的歌曲都放进来,这里用到是Aplayer插件,但是歌曲来源需要我们自己定义,但是,因为各大音乐平台,由于版权原因,很多歌曲是不支持外链播放的,难道我们就必须每首歌下载然后上传云空间,再获取词曲封面么?这就比较麻烦了。其实不然,研究了半个小时,我发现可以采取下面的办法,很方便:
- 首先我们找到网易云在线平台,任意找到一首歌点进去播放,可以在地址栏拿到音乐
ID
号 - 然后通过下面网址:http://music.163.com/song/media/outer/url?id=XXXXXX.mp3,
XXXXXX
就是歌曲ID
号,每一首歌我们只需要换掉这个ID
号就行了,就相当于每一首的外链了 - 最后封面图也可以按
F12
去找页面元素的链接,填到对应的musics.jason
文件中就可以,批量填入,听到好听的歌曲随时更换随时新增,很方便。
操作如下图:
2.11 增加emoji支持
为博客新增对emoji
表情的支持,使用到了 hexo-filter-github-emojis 的 Hexo 插件来支持 emoji
表情的生成,把对应的markdown emoji
语法(::
,例如:
Hexo+Github: 博客网站搭建完全教程(看这篇就够了)的更多相关文章
-
Hexo+Github博客最简教程-Dockerfile自动搭建
闲谈 拿出你的气质,打开你的电脑,借你半小时搭建好属于你的hexo博客,小生用dockerfile自动帮你搭建好:你只需要在你的mac或linux或windows上提前把docker安装好,如何安装不 ...
-
搭建minima主题的github博客网站
layout: post title: "搭建minima主题的github博客网站" date: 2019-04-20 19:20:20 +0800 --- 作者:吴甜甜 个人博 ...
-
超详细Hexo+Github博客搭建小白教程
原文链接:超详细Hexo+Github博客搭建小白教程 去年9月的时候开始搭建了第一个自己的独立博客,到现在也稍微像模像样了.很多小伙伴应该也想过搭建一个自己的博客,网上也有一堆详细教程.我在此稍稍总 ...
-
搭载hexo+github博客系统
一.安装 Node.js 在官网 http://nodejs.org/ 下载winwos版本,点击安装完成即可. 二.git环境安装 对于git的安装,网上已经大量资料,就不赘述了. 三.安装 hex ...
-
hexo+github 博客绑定域名
关于博客的搭建分为以下几步: 申请域名可以在万维网上申请一个自己的独特域名,本博客的域名即为zhengwei.xyz. 域名解析域名申请成功后继续在万维网上进行操作,进入管理自己的域名界面,在要解析的 ...
-
hexo&;github博客搭建
闲来无事,偶然看到hexo,便试着玩玩,hexo是一种静态博客工具,使用nodejs流生成静态博客,速度快,主题多,附地址:https://hexo.io/ 下面详细介绍如何使用hexo在github ...
-
Hexo+Github博客搭建
一.准备 1.安装git 点击下载:链接:https://pan.baidu.com/s/1eToStns 密码:r93r 安装参考之前随笔:http://www.cnblogs.com/jiangb ...
-
Hexo NexT 博客本地搭建指南
0x01 写在前面的话 第一次见到这个这个Hexo主题,是在查找lucene学习指南时看到了阿里中间件博客,文章写的自然不错,但博客程序主题更是令我喜欢不已. 于是我便萌生了也想撸一个的冲动. 既然想 ...
-
如何从零搭建hexo个人博客网站
https://www.jianshu.com/p/adf65cbad393?utm_source=oschina-app 准备工作 github账号 node.js 环境搭建 git使用 mar ...
随机推荐
-
案例1.用Ajax实现用户名的校验
用Ajax实现用户名的校验 java的验证类 public class UserDao { public boolean checkUserName(String name) { //这里的name是 ...
-
基于分类的Vad效果
提取出频谱特征,然后使用gmm.svm.dnn模型进行训练和分类,实时话语检测. 原始文件 VAD处理,剔除静音后的效果:
-
jQuery事件绑定on()、bind()与delegate() 方法详解
jquery中有四种事件绑定函数,bind(),live(),on(),delegate(),由于live现在并不常用,因此不做过多解释. 1. bind()用法 $("div p" ...
-
Python基于pandas的数据处理(一)
import pandas as pd, numpy as np dates = pd.date_range(', periods=6) df = pd.DataFrame(np.random.ran ...
-
免费Flash图表工具FusionChart
图表显示是很多开发工作所必不可少的一项功能,今天我介绍一个前段时间发现的免费的Flash图表开发工具,可以通过Adobe Flash实现数据的图表化,动态化以及相互交互. FusionChart是一个 ...
-
全栈必备Linux 基础
Linux 几乎无处不在,不论是服务器构建,还是客户端开发,操作系统的基础技能对全栈来说都是必备的.系统的选择Linux发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行 ...
-
Android内存优化之——static使用篇
在Android开发中,我们经常会使用到static来修饰我们的成员变量,其本意是为了让多个对象共用一份空间,节省内存,或者是使用单例模式,让该类只生产一个实例而在整个app中使用.然而在某些时候不恰 ...
-
nginx+lua+redis构建高并发应用(转)
nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis, ...
-
编译器报错:&#39;IHTMLControlElement&#39; : redefinition
由于我安装了platform SDK,编译导致错误: error C2367: 'IHTMLControlElement' : redefinition; different uuid specifi ...
-
Android SDK安装及配置模拟器
环境搭建 1.安装JDK 2.下载Android sdk exe格式和zip格式都可以 3.安装installer_r24.4.1-windows.exe文件,里面有两个应用程序: "SDK ...