博客迁移至 Pelican

2016-03-27

Octopress 挺麻烦的,还有些问题,依赖太多,Ruby 我也不会,看不懂插件也看不懂模板。想试一下 Hexo 的来着,都不能初始化工程,不知道什么毛病。Hugo 就不尝试了,Go 现在没时间学,就差不多只剩下一个 Python 的 Pelican 了。搜了下也基本搞好了,模板也能看得懂,就挑了一个简单的模板 gilsondev/pelican-clean-blog,每篇文章都有题图,能直接引用本地的图片,能直接在 Markdown 中引用另一篇文章或者页面,RSS 什么的也都有,生成也很快,开发环境也挺方便,改了模板也能立刻看到改变。

move-to-pelican

RSS 设置

pelicanconf.py:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Feed generation is usually not desired when developing
FEED_DOMAIN = '/'
FEED_ALL_ATOM = 'feeds/all.atom.xml'
CATEGORY_FEED_ATOM = None
TRANSLATION_FEED_ATOM = None
AUTHOR_FEED_ATOM = None
AUTHOR_FEED_RSS = None

# Social widget
SOCIAL = (('rss', 'http://blog.breakwire.me/feeds/all.atom.xml'),
('Twitter', 'https://twitter.com/lsdvincent'),
('Instagram', 'https://instagram.com/lsdvincent'),
('GitHub', 'https://github.com/lsdlab'),
('Medium', 'https://medium.com/@breakwire'),)

RSS 的设置就是三个地方要改动,FEED_DOMAINFEED_ALL_ATOMSOCIAL 就是页边底部的几个图标,

本地图片的引用

在文章中要引用本地图片需要设置静态目录:

1
STATIC_PATHS = [u"images"]

这是个数组,在 content 目录下新建一个 images 目录,要想在 content 中的一篇文章中直接引用图片就是这样:

1
![posters2](https://breakwire.oss-cn-shanghai.aliyuncs.com/poster2.jpg)

make html 生成文件的时候他会把 images 目录中的文件复制到 output 中的 images 目录中。

还有一个就是 gilsondev/pelican-clean-blog 的每篇文章都有个题图能设置,和直接在文章中引用是一样的:

1
Header_Cover: /images/my-road-bike.jpg

需要注意的是图片文件名不能有中文

在文章中直接引用另一篇文章

应用的默认目录是 content,所以我在 pagesAbout 页面中想引用一篇文章应该是这样:

1
Ref to [Working for living]({filename}/2016-03-19.md).

要在一篇文章中引用一个页面也很简单:

1
Ref to [Working for living]({filename}/pages/about.md).

新文章以及更新至 GitHub Pages 的 shell 脚本

lsdlab/newblog.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /bin/zsh

cd content/

fileName=`date "+%Y-%m-%d"`
currentTime=`date "+%Y-%m-%d %H:%M:%S"`

cat>${fileName}.md<<EOF
Title:
Date: ${currentTime}
Modified: ${currentTime}
Category:
Tags:
Slug:
Authors: Chen Jian
Summary:
EOF

lsdlab/publishblog.sh

1
2
3
4
5
6
7
#! /bin/zsh

make html
cd output
git add .
git commit -m "update"
git push origin master