在Github上搭建Jekyll博客和创建主题

之前本来想展开写的,后来发现Jekyll官网的教程已经非常完善了就没有多写,所以只有这篇。
但是过了这么久,发现很多人还是不清楚怎么搭建,所以这里打算详细写一下,并且把自己对图片的解决方案以及主题的创建步骤也一并写下。

本篇主要谈如何搭建,不再讲为什么用它们。

说明:本篇用到的代码中,为了防止解析冲突,一律多了\这个来防止被误解析

创建一个库

在Github上新开一个库,名字叫做username.github.io,然后当别人在地址栏输入相应url的时候就可以访问进来了。

在这个库中完全可以只上传一个index.html,来讲自己要写的东西写进去,但是这样会丧失很多灵活性,所以需要Jekyll的帮助来创建自己的博客。

设定目录结构

把自己的库clone到本地来,建立如下目录结构:

├── CNAME
├── README.md
├── _config.yml
├── _includes
│   ├── disqus.html
│   ├── footer.html
│   ├── googleanalytics.html
│   ├── header.html
│   └── navside.html
├── _layouts
│   ├── base.html
│   ├── book.html
│   ├── page.html
│   └── post.html
├── _posts
│   ├── Book
│   ├── Life
│   ├── Resource
│   ├── Technology
│   └── Tool
├── index.html
├── pages
│   ├── about.html
│   ├── archive.html
│   └── atom.xml
├── public
│   ├── css
│   ├── fonts
│   ├── img
│   ├── js
│   └── upload
└── sitemap.txt

这个目录结构是我自己设定的,也可以有不同的目录结构,看官网。

接下来我主要解释这里面每一个目录的功能。

配置文件

_config.yml里写有整个站点的主要配置项,我的如下:

permalink: /:year/:month/:day/:title.html   #博文的固定链接
paginate: 10                                #分页时每页博文数量
author:                                     #自定义常亮name: 闫肃email: yansu0711@gmail.comlink: http://yansu.org
title: 闫肃的博客                             #自定义常量
locals:                                     #自定义常量tags: 标签about: 关于
active: 技术                                 #自定义常量
subscribe_rss: /pages/atom.xml              #订阅地址
markdown: redcarpet                         #markdown解释器

这里的自定义常量可以在模板中使用,以后有修改的时候就不需要跑去改代码了。尤其是对一些私人的选项,可以在这里定义。现在我的博客中出了disqus和googleanalytics外都直接在这里设定就好了。

域名配置

CNAME这个文件写明了这个站点的域名,如果不喜欢username.github.io的话,可以像我一样改掉

yansu.org

改法只要在这个文件中写入域名就可以了。不过你需要去域名服务商那里设定域名解析规则。

只要把主机记录@,www的记录值写成username.github.io就好了。

博客存放

_posts下的所有目录中的所有博客,都会被Jekyll处理成为静态的html文件,然后放在_site下。我这里没有_site目录,是因为我在.gitignore文件中把这个目录屏蔽掉了,它不会上传到Github上。

_site/
_drafts/
.DS_Store

以上是我的.gitignore文件内容。

_posts下的符合YYYY-MM-DD-xxxxxx.md的文件,都会被Jekyll认定为博客内容。我在_posts下又新建了一些文件夹,主要是方便自己本地管理博客。

在上述这些文件中,必须先定义一些配置项,例如这篇博客的md文件中,开头是这样的:


layout: post                                   #这个博客的布局文件
title: 在Github上搭建自己的Jekyll博客             #博客标题
category: 工具                                  #博客分类
tags: Jekyll                                   #博客标签
keywords: Jekyll,Github                        #自定义常量
description:                                   #自定义常量

除了自定义常量外的必须包含进去,自定义变量在这个布局中可以访问。

模版文件

剩余的目录,基本都属于模板文件了,我解释一下各自的作用:

  • _includes 可以在模板中随时包含的文件
  • _layouts 布局文件,在博客头配置中可以选择
  • pages 站内固定的页面
  • public 公共资源,包括js,css,img等,还有我博客中调用的图片,我都放这里
  • index.html 站点的首页,整个站的入口文件
  • sitemap.txt 给搜索引擎看的,如何爬取这个站

创建自己的主题

上面讲了如何布局好站内文件结构,接下来主要就是如何创建一个自己的主题了。

布局文件是整个主题最重要的文件,这些文件告诉Jekyll如何去形成一个html页面。

首先我说一下我最基础的page.html文件,因为它决定了入口文件index.html的布局。


layout: base<div class="row"><div class="col-md-12 aside3-title"><br><h2 id="#identifier">{\{ page.title }}</h2></div><div class="col-md-12 aside3-content"><div id="page-content">{\{ content }}</div><hr>{\% include disqus.html %}</div>
</div>

从这里可以看到这个文件写起来一点都不复杂,但是为什么开头还有个layout呢?因为它也不是最基本的布局文件,最基本的是base.html,我们看一下它的内容。

<!doctype html>
<html>
<head>{\% include header.html %}
</head>
<body><div class="container"><div class="row">{\% include navside.html %}<div class="col-md-8 col-lg-8 col-sm-12 col-xs-12 aside3"><div id="container"><div id="pjax">{\{ content }}</div></div></div></div></div>{\% include footer.html %}{\% include googleanalytics.html %}
</body>
</html>

这个文件就更像一个HTML文件了,用PHP或者Python写过web应用的人看到{\% %}这样的标签应该不陌生,这不就是模板标签嘛。其实Jekyll也是借用了一下模板系统的,官网说明在这里,看到开头第一句讲的它用了Liquid了吧。如果Jekyll的文档不能满足你的话,可以去Liquid那里查查。

我解释一下base.html中几个标签的功能。

  • {\% include header.html %}_includes中把header.html包含进来放在这里
  • {\% include navside.html %} 同上
  • {\{ content }} 这句的作用是将继承这个Layout的文件中的代码,放在这里

所以再看page.html文件就很容易了,它就是把配置项下面的内容,填补到base.html中的{\{ content }}处形成了一个文件。那么page.html中的{\{ content }}做什么用呢?因为别人也可以以page.html来作为自己的布局文件。

入口文件index.html就是这么干的:

layout: page
title: 首页
...

这里看到选择了page作为布局文件,那么title干嘛用的呢?其实它是在被包含的header.html中被用到了。来看看header.html怎么写的:

<meta charset="utf-8">
<title>{\{ page.title }} | {\{ site.title }}</title>
<meta name="author" content="闫肃">
{\% if page.keywords %}<meta name="keywords" content="Jekyll,Github">
{\% endif %}
{\% if page.description  %}<meta name="description " content="">
{\% endif %}...

这里又使用了一些新标签——{\{ }\},这个标签就是用来书写变量的,通过在配置处配置变量,或者使用系统的自定义变量,可以轻松改变页面内的一些元素或者内容。

系统变量查询可以去这里

其实整个主题书写就是这么简单,如果有不清楚的可以再看看官网的文档。动一动手就非常明白了。

插入图片

很多人感觉用Jekyll最不方便的就是插入图片了,其实我也是这么觉得的。所以只能自己去想些办法。

图片统一存放

图片我都放在了/public/upload下,所以我在插入图片的时候只要用![xxx](http://7u2ho6.com1.z0.glb.clouddn.com/xxx)就可以了。

方便的图片导入

导入图片的方式是我将upload文件夹做了个软连接,放到mac的dock上就行了,有图片要用的时候直接往里面一拖。

方便的截图

很多时候图片都是现截取的,比如用QQ的截图工具,或者系统的截图工具,但是他们截取完都存放在了user/Pictures里面,来回移动太累了。我这里介绍一个Mac下的一个工具——Trickster,看图

这个工具可以看到刚刚修改过的图片,而且还有一个收藏的文件夹,我每次截取完图以后,从左边往右边一拖,然后在markdown中就可以继续书写了。一点都不耗时。

本地预览及提交

本地预览自己的修改很容易,只要进入username.github.io目录,执行

jekyll serve

然后访问http://localhost:4000就OK了,安装Jekyll的方式自行谷歌吧…

自己预览过没有问题以后,就提交到服务端吧,Git三步走

git add xxx
git commit -m "xxx"
git push

其他

我觉得自己的这个主题设定的算是比较好修改和移植的了,如果大家有什么问题,可以尽管问。

另外一些特别的功能,比如三栏、评论、谷歌分析,这些都不难,相信你稍微打开Github读一下这个主题的代码就很快明白了。

代码地址戳这里

from: http://yansu.org/2014/02/12/how-to-deploy-a-blog-on-github-by-jekyll.html?utm_source=tuicool&utm_medium=referral

在Github上搭建Jekyll博客和创建主题相关推荐

  1. jekyll php,使用Jekyll在Github上搭建个人博客(文章分类索引)

    系列文章传送门: 今天又滚出去野了一天,打牌输了,好在输的不多,聊天聊到了以后的路子,不太好走啊... 使用Category分类 一般来说,一个个人博客的文章会分为很多种,比如说有记录生活情感的.技术 ...

  2. hexo在github上搭建个人博客详细步骤

    hexo搭建个人博客详细步骤 本片博文讲详细讲解搭建过程,经历鉴于我搭建托管博客所遇到的错误!为了避免读者重蹈覆辙.我将尽量详细,和一些遇到的错误与大家分享. 第一步 1 首先我们先去准备[githu ...

  3. 在github上搭建个人博客

    1.平台注册账号,新建域名 github(源码托管服务站):https://github.com/ 到GitHub官网,注册自己的账号,填好用户名,密码,邮箱,并完成邮箱验证就可以啦! 默认的域名是h ...

  4. 在github上搭建hexo博客

    cnblog的MarkDown太糟心了,干脆换hexo和github pages用用. 这个随笔给自己当备忘录用的,网上有更详细的教程. hexo官方文档 安装git,安装nodejs windows ...

  5. github上搭建个人博客

    为什么80%的码农都做不了架构师?>>>    http://blog.csdn.net/liumengxinfly/article/details/7419144 http://w ...

  6. 尝鲜之在Github上搭建Octopress博客

    参考这两篇文章足矣. 1.http://blog.163.com/fuhaocn@126/blog/static/366650802012115103842500/ 2.http://www.cnbl ...

  7. 最全面的github pages搭建个人博客教程

    作为一个程序员怎么能没有自己的个人博客呢,这里详细记录和分享我的博客搭建经验,让你轻轻松松拥有自己的博客网站.傻瓜式一站式教你用 github pages 来搭建博客,详细记录全过程,保证你能学会. ...

  8. 利用Github Page 搭建个人博客网站

    利用Github Page 搭建个人博客网站 转载请注明出处: http://blog.csdn.net/tzs_1041218129/article/details/53214497 http:// ...

  9. Github Pages搭建个人博客(2018年10月版)

    Github Pages搭建个人博客(2018年10月版) 前言 几年前看到网上大神自己搭建的个人博客网站,就想过搭建一个属于自己的个人博客网站,为此还专门去研究了建站所需技能,但是购买了域名和云虚拟 ...

最新文章

  1. php7 $this-,在PHP中如何为匿名函数指定this?
  2. 十天学会php之第五天
  3. 跟锦数学2017年04月
  4. 使用java的HttpClient实现抓取网页数据
  5. vmware workstation17环境安装centos7
  6. 2021-10-28 python爬虫学习
  7. 微信地位,牢不可破?
  8. 关于Mybatis的一点小记录(parameterType)
  9. php7.1.1一键安装/配置文件简单优化
  10. 惠普打印机墨盒更换教程_惠普打印机安装步骤 打印机墨盒加墨方法
  11. WPS Office 11.5.5 for Android 8848钛金
  12. 数据库系统的结构/三级模式结构
  13. display属性详解
  14. python中graphviz画决策树
  15. spire.doc 让java操作word文档更简单优雅
  16. 中国杀软套路深:CIA怼遍全世界竟然干不过它
  17. 珞珈一号全国一张图相关信息及对于影像校正的一些思考
  18. Mount namespaces, mount propagation, and unbindable mounts
  19. EtherCAT协议介绍
  20. 安装完Windows Server 2008后怎么配置

热门文章

  1. SpringBoot - 统一格式封装及高阶全局异常处理
  2. JVM - 写了这么多年代码,你还不知道new对象背后的逻辑?
  3. Java-Java I/O流解读之Object Serialization and Object Streams
  4. Spring-AOP 引介切面
  5. java round指令_Java PApplet.round方法代码示例
  6. C#教程3:基本语言结构
  7. 2020-12-07 Halcon初学者知识【2】打开图像和显示
  8. linux安装virtualbox命令,在Linux中从命令行查找Virtualbox Version的方法
  9. mysql 1个月多少天_在MySQL日期间隔中,1个月是否与30天相同? 1个季度与3个月相同吗?等等?...
  10. 计算机二级考试3月时间安排,2017年3月份计算机二级考试时间安排