本博客对应的github repository:https://github.com/marquistj13/MyBlog
模板来源
改编自:LessOrMore
此模板特性
简单来说是用来记笔记的。
因为post类型的文章使用markdown的时候,不能插入 _posts
目录的图片,这一点我感觉不太好,幸好Jekyll还有一种Collection类型的“文章库”,Collection中的md文件可以插入对应Collection目录的图片,再基于Jekyll的一个特性:设置frontmatter
的文件就用Liquid
模板渲染一下,没有设置frontmatter
的文件就原样copy到_site
目录,因此我打算将其改造成利用Collection进行note-taking的blog。
使用
本模板主要是自己捣鼓着用的,没有时间和精力进行打磨,所以有很多瑕疵,不过够自己用了。
以下为对此捣鼓过程的总结。
下载
使用git从 MyBlog 主页下载项目
git clone https://github.com/marquistj13/MyBlog.git
配置
本模板的所有配置文件均在位于根目录的文件夹 _config_with_python
中。
由于本模板改编自 LessOrMore ,因此基本配置和LessOrMore相同,即配置根目录的文件_config.yml
。本模板配置不同之处在于:用户需要配置的文件不是根目录的_config.yml
,而是位于根目录的文件夹 _config_with_python
中,即template_config.yml
文件用于设置blog的meta data,详情请参考 LessOrMore。在此对于本配置文件的修改注意事项进行重申:template_config.yml
中的baseurl修改为你的github的项目名,如果项目是’***.github.io’,则设置为空’’
本模板比LessOrMore增加的特性:collection的配置,即使用使用 menu_config.yml
配置blog header的菜单项,举个例子:
menus:
- menu_name_cn: 阅读笔记
menu_name_en: ReadingNotes
menu_list:
- Book_NeuralNetworksAndDeepLearning
- test
- menu_name_cn: 学术积累
menu_name_en: ScholarThings
menu_list: [test_scholar]
很容易看懂,我就是新建两个下拉菜单项,阅读笔记以及学术积累,阅读笔记的英文名ReadingNotes用于建立文件夹的时候使用,阅读笔记下面一共有两个collection项(分别对应两个文件夹,即Book_NeuralNetworksAndDeepLearnin和test,这俩文件夹下面可以存放对应的笔记,同理,学术积累菜单项下面只有一个collection即test_scholar
小提示:在每一个collection下面可以放入子文件夹,本模板亦可以根据子文件夹创建此collection下对于子文件夹中的文件的索引目录,这个功能是根据文章的url实现的,主要参考的是 这篇文章.但由于文件夹名字转换为url之后变成了ASCII码,因此从url中提取的子文件夹名字得用Liquid
模板语言的一个filter:url_decode
,这个filter只有新版本的Liquid的支持,如果遇到老版本的Liquid那就不行,所以,如果你对子文件夹含有中文,列出来的索引目录就是对应的ASCII码,我暂时就这么凑合着用吧,哈哈。
在每次对template_config.yml
或者menu_config.yml
进行修改以后必须运行一次buildMenu.py
。buildMenu.py
依赖于两个Python library:PyYAML
和jinja2
。
如果在本地安装了Jekyll,就不需要每次push到github去看效果:可以使用jekyll serve -w -b ""
方便地进行博客的实时预览,这在书写markdown的时候非常有用。
推荐的本地运行脚本
在Windows机器上,将以下文件保存为*.bat
,运行即可:
@echo on
cd C:\Users\Marquis\Documents\GitLocalFile\MyBlog\_config_with_python
C:\Users\Marquis\Anaconda3\envs\py27\python.exe buildMenu.py
cd ..\
Jekyll serve --port 3000 -b ""
update:
使用bundle之后,就得将jekyll serve --port 3000 -b ""
改成bundle exec jekyll serve --port 3000 -b ""
,详见重装系统:软件安装过程记录
因此改成:
@echo on
cd C:\Users\Marquis\Documents\GitLocalFile\MyBlog\_config_with_python
C:\Users\Marquis\Anaconda3\envs\py27\python.exe buildMenu.py
cd ..\
bundle exec Jekyll serve --port 3000 -b ""
关于Python的安装,我最近弃掉了canopy,改用anaconda3,而anaconda3默认带的是py3.6,因此得安装一个py2.7的环境,另外顺便安装以下两个Python library:PyYAML
和jinja2
conda -n py27 python=2.7 PyYAML jinja2
这样就会在Anaconda3\envs
目录下生成py27目录。
由于anaconda不推荐将Python加入环境变量,因此,我们直接用其绝对路径C:\Users\Marquis\Anaconda3\envs\py27\python.exe
即可。
update
jekyll的安装详见重装系统:软件安装过程记录