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>&nbsp;</a>
    {% endfor %}</span>

为了避免手动创建tag.md 新增一个Generator插件,显示的时候自动检查tag有没被创建,根据需要创建tags

asset_img & 公式显示


/// 直接展示图片
{% asset_img img.png imgWidthNumber %}

/// 图片链接
{% img_link titile img.png%}

插件代码

no-style-please2-plugins

内部链接

这个比较费劲了些,如果修改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主题