本文介绍了我在Windows操作系统下,从零开始搭建基于Octopress的博客,并且为自己的博客添加一些个性化内容的简要流程。
一、准备工作
- 安装Git for Windows:可以到Git官网下载安装。
- 安装Ruby:可以到Ruby官网下载安装,我所下载的Ruby版本是2.2.4。
- 安装Python2.7:可以到Python官网下载安装,安装后运行
easy_install pygments
安装代码高亮脚本。 - 需要注意的是,安装上述工具的过程中,最好都勾选上“添加到系统环境变量”一项,否则需要稍后自己手动设置。
二、安装Octopress
我们可以直接从Github上将Octopress的对应源代码clone下来并进行安装:
1 2 |
|
此时在the_directory_of_your_blog/
目录下应该有一个名为octopress
的文件夹了。
1 2 3 4 |
|
这样就算完成了Octopress的安装流程。我们可以在命令行中执行rake preview
,然后在浏览器中输入localhost:4000
,来测试是否安装成功。如果安装顺利,我们便可以看到自己博客的“雏形”了。
三、部署到Github
当然刚才我们只是可以在本地访问自己的博客,为了让它可以被互联网中的用户访问到,我们可以将其部署到Github上。
首先我们在Github上新建一个Repository,命名为username.github.io
。
然后我们就可以进行部署工作了,以本博客为例(我的Github账号为smwlover,新建的Repository名称为smwlover.github.io
):
1 2 3 |
|
注意:在执行rake deploy
之前,请确认自己有访问对应Repository的权限。
四、常用操作:
rake new_post['article title']
可以用来新建一篇博文,该命令会在source/_posts/
文件夹下生成一个对应的markdown文件,我们可以打开该文件,编辑博文的内容。rake install['theme name']
可以用来安装一个新的Octopress主题。rake preview
可以用来对博客进行预览,通过浏览器访问localhost:4000
即可。rake generate
可以用来生成博客对应的静态网页,生成到public/
目录下。rake deploy
则将博客对应的静态网页部署到Github上。
五、个性化之_config.yml
在Octopress的根目录下,我们可以看到一个名为_config.yml
的文件,该文件包含了自己博客的一些最基本的配置。
1. title:
对应博客的标题,subtitle:
对应博客的副标题,author:
则会显示在博客的页脚处。我们可以尝试着修改它们对应的值,然后观察产生的效果。注意:在修改的时候,一定要注意冒号后面有一个半角的空格,否则会出错。以下同理。
2. default_asides:
中的内容会在侧边栏按照顺序依次显示。
3. github_user:
对应我们的Github用户名,如果我们设置在侧边栏中显示Github条目,Octopress会自动获取该用户创建的Repository的信息。
4. disqus_short_name:
对应我们的Disqus用户名,Octopress默认支持Disqus评论系统,它会在每篇博文的最底部显示该用户所对应的评论信息。
六、个性化之自定义侧边栏
上面已经提到,在default_asides:
中可以添加侧边栏中要显示的内容。侧边栏中的每条内容都对应着一个html
文件,其中Octopress默认支持的内容位于source/_includes/asides/
目录下,自定义的内容则最好放在source/_includes/custom/asides/
目录下。下面我会简单介绍一下我的博客中“博客简介”、“歌曲列表”和“友情链接”的添加流程。
博客简介:
在source/_includes/custom/asides/
目录下创建about.html
,然后在default_asides:
对应的数组中添加custom/asides/about.html
。本博客的about.html
内容如下:
1 2 3 4 5 |
|
歌曲列表:
在source/_includes/custom/asides/
目录下创建music.html
并且在default_asides:
中添加对应路径。目前包括网易云音乐和虾米音乐在内的很多音乐平台都支持外链播放器的功能,我们只需要获取到html格式的外链,然后加入到music.html
中即可。
因为本博客利用的是虾米音乐的歌曲外链,在Safari浏览器下好像无法正常工作,所以我在music.html
首先判断是否是Safari浏览器,如果不是再加入html内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
友情链接:
和上面的方法类似,先创建一个friend.html
页面,然后向其中加入一些带有链接的条目,最后在_config.yml
中的default_asides:
中加入该文件的路径即可,不再赘述。
1 2 3 4 5 6 7 8 9 10 11 |
|
七、个性化之自定义样式
有关样式的所有内容都在sass/
目录下,我们可以通过修改sass/custom/_layout.scss
来修改博客的布局,比如调节侧边栏的宽度,或者调节标题的字体大小等。
我们可以向sass/custom/_styles.scss
文件中添加自定义背景图片的代码,对应的图片background.png
则需要放置于source/images/
目录下:
1 2 3 4 5 6 7 8 9 10 11 |
|
在添加完背景图片之后,我们可能会发现标题栏的背景色有些突兀,我们想要将标题栏的背景色修改为透明。经过百般寻找,我们发现标题栏的背景色在sass/base/_theme.scss
中设置,直接将透明度修改为0即可:
1
|
|
在标题栏透明之后,我们可能更喜欢导航栏的左上角和右上角更加圆滑一些,这时我们可以在sass/custom/_styles.scss
添加如下代码:
1 2 3 4 5 6 7 8 9 |
|
八、在侧边栏中增加分类列表
如同本博客所示,侧边栏的分类列表会按照博文的类别对博文进行整理与归纳,十分方便。为了达到这样的效果,首先我们需要定义一个插件。Octopress的插件是以plugins/*.rb
文件的形式存在的。我们要写的分类列表插件,需要归纳出所有博文的类型,然后显示出一系列形如category_name(post_number)
的标签,并且还要定义每个标签指向的超链接位置。
我们在plugins/
目录下添加category_list_tag.rb
文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
然后,像之前往侧边栏添加内容时一样,我们在source/_includes/custom/asides
目录下添加category_list.html
文件,并且在_config.yml
中的default_asides:
中加入该文件的路径:
1 2 3 4 5 6 |
|
九、在首页添加“个人简介”(关于)选项卡:
我们可以在source/_includes/custom/navigation.html
文件中自定义导航栏中选项卡的内容。为了加入“个人简介”选项卡,首先我们需要通过命令rake new_page['about']
,在source/
目录下创建一个about/
目录,里面包含一个index.markdown
文件。然后我们只需要在导航栏中添加一个指向该页面的标签即可:
1 2 3 4 5 |
|
十、添加返回顶部按钮:
当自己的博文长度很长时,每次手动返回顶部就显得很不方便。我们可以在页面的右下角加入一个返回顶部按钮。首先,我们在source/javascripts/
文件夹中加入top.js
,这是实现返回顶部功能的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|
然后我们需要写一个按钮,该按钮可以调用这段代码。我们在source/_includes/custom
文件夹下创建totop.html
,代码如下:
1 2 3 4 |
|
我们需要修改source/_layouts/default.html
,使其包含进我们刚才写的totop.html
:
1 2 3 4 5 6 |
|
最后,我们可以在sass/custom/_styles.scss
中利用分类器自己定义该按钮的样式,包括鼠标悬浮时的效果等等。我定义的样式如下:
1 2 3 4 5 6 7 8 9 10 11 |
|
当然,我们需要将按钮对应的图片top.png
放入source/images/
路径下。
十一、优化加载速度:
到此为止,我们已经有了一个比较个性化的博客了,但是我们发现每次打开页面的速度相当慢,这是由于打开博客的时候有些条目需要访问Google的资源所致。我们可以将这些条目删除,使打开博客的速度快如闪电。
1. 将source/_includes/head.html
文件中的Google的jquery脚本地址改成百度的。
2. 将source/_includes/custom/head.html
文件中的Google Font请求注释掉。
3. 将_config.yml
文件中的twitter内容注释掉。