L 记事本
使用Jekyll构建txt风格博客
为什么?
本来用的Hexo NexT主题, 网上冲浪的时候,看到一个主题 no-style-please
Nice! 没有过多的样式,给人一种返璞归真的美感。 以前,东西没写多少,反而折腾了好些此博客,实在是有些本末倒置了。
打开github,发现是 Jekyll 版本的,看了下issue,有人问能不能迁移到Hexo,但是 很久也没收到回复,看来作者没关注这个repo了 :(
好吧,自己动手,也是一个学习的过程,简单记录下。
开始迁移
于是,开始迁移工作, 按照 repo 一顿操作,发现一些功能还是不能满足需求。 设计简洁,但功能不能简陋啊
- 没有tag,这样查找博客不方便
- 站内链接索引
- 不能加密博客。
有些内容当做日记记录的,不想直接po到网上,不想被搜索引擎索引 - 原来的图片导入不能正常工作
- 公式不能正常显示
自己弄吧,ruby还没写过,正好试试。
自定义插件
缺失的功能都通过Jekyll插件来实现
tags
通过liquid tag功能,在 _layouts/post.html模板文件中添加代码显示tag, 但是这样要求每次新建tag时候还得新建一个tag.md 文件,比较麻烦
{% capture tag_name %}{{ tag }}{% endcapture %}
<a href="/tags/{{ tag_name }}"><text><nobr>#{{ tag_name }}</nobr></text> </a>
{% endfor %}</span>
为了避免手动创建tag.md 新增一个Generator插件,显示的时候自动检查tag有没被创建,根据需要创建tags
asset_img & 公式显示
/// 直接展示图片
{% asset_img img.png imgWidthNumber %}
/// 图片链接
{% img_link titile img.png%}
插件代码
内部链接
这个比较费劲了些,如果修改post编译顺序,似乎代码要求改动比较大,需要非常熟悉jekyll源码,
还有交叉引用比较难以处理。
最后编译两次,第一次获取每个post路径,第二次真实的写入链接。
如何重新触发编译,这个也是在Jekyll源代码里面翻了几次才找到,
site.process // 触发编译
{% post_link 另一篇文章标题 %}
博客加密
这个也是主要原因,大概就是加密html 为了安全起见,实现了以下功能:
- 支持文章自定义key,在FrontMatter(就是markdown文件开头) 加入key
- 支持在_config.yml 中根据tag设置key
enc_tags:
- tag: ZZ
password: '1'
- tag: Z2
password: '2'
- tag: TestEnc
password: AwAIACAAIQAbXSqib4KMwu4fgXtgXOxm+/hj6zNTpHkqOUqVtmxr9pk0AKLKWOvUAjSUyelT4QHmsjQHqbW+ibwIWU6VabD3MElf8zdolGheKUSs
- tag: TestEnc2
password: AwAIACAAIQC6gndrmOm97/UITza0u77pcH5JuN36PYD3hihoWbKXIAg7qqahtCiqAxsyXZWbawPlk3HrtHfWL++OlP2c3b2HhEV6fkFgHGYtwXyy3XWu
key 可以直接写成明文,但是强烈不建议这么干。敏感信息不要放在代码里面
可以使用ECC加密
所以写了个ltec 的 gem 包,用来实现ECC加解密。
build 之前 JEKYLL_EC_PRIVATEKEY
设置到环境里面
"export set JEKYLL_EC_PRIVATEKEY=xxxxxxxxxxxxx"
有空弄个研究下发布个主题repo详解吧
写了个jekyll主题