导航栏添加自定义category列表
前两天参考别人在侧边栏加category列表的方法给自己的博客添加了category导航。
基本步骤
首先在plugins/
路径下添加category_list_tag.rb
文件
其次jekyll的插件category_generator.rb
默认在创建categories目录时是不存在index.html
索引文件的, 因为她无法知道你每次创建category的路径地址, 所以我们只能手动在source/blog/categories/
路径下创建index.html
文件
1 |
|
最后在source/_includes/custom/navigation.html
中加如下代码:
1 | <li><a href="/blog/categories">Categories</a></li> |
现在就可以为博客归一下类了
1 |
|
关于第一次rake generate
遇到的Liquid Exception: incompatible encoding regexp match (ASCII-8BIT regexp with UTF-8 string) in index.html
问题,原因是正则字符串以ASCII-8BIT
被编译,只需在category_list_tag.rb
文件头部加上如下声明,当Ruby在语法分析时,你代码中每一个字符(包括正则,字符串等等)都会被设定为UTF-8
编码:1
#encoding: utf-8
关于中文category
上面的流程走完之后,于是顺手给一篇文章加了个中文名称的分类,WTF,文件路径都正确就是,索引文件也有,就是找不到。仔细观察url发现category的url没有被读取为字符串
-字符串
而是直接以实际的形式(即中文编码后的格式)链接过去,但实际public/blog/categories/下各个子分类都是以字符串
-字符串
的命名存储的,这也就是为什么找不到目录下的索引文件。知道原因,这样问题就好办了。首先我选择了最笨的办法就是找到那篇博文的主人直接问人家,然后就没有然后了……
好吧只能靠自己了,url读取问题应该是出在正则表达式上,打开category_list_tag.rb
文件,也找到正则这句
1 | category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase) |
好吧,大致没看懂,但它确实是把category的名字完全匹配到了,这里是不是有个汉字转拼音的插件就可以解决问题呢?Google一下你就知道了。还真有ruby-pinyin,看起来好复杂。再看看还有别的筏子吗,打开plugins/category_generator.rb
文件,看看它到底是肿么把汉字转成字符串
-字符串
格式的路径的,看到这句时眼前突现了日出东山的万丈光芒:
1 | self.write_category_index(File.join(dir, category.to_url), category) |
看样子category.to_url
应该就是干这个活儿的,那么用它把category_list_tag.rb
中的正则替换掉应该是能行,下面是修改后的样子:
1 | #category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase) |
新问题:codeblock没法使用start:#
mark:#,#-#