sOlOHsU's Blogβ

灯火阑珊处

为Octopress添加Categories侧边栏

增加category_list插件

保存到 plugins/category_list_tag.rb:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 # encoding: UTF-8
  module Jekyll
    class CategoryListTag < Liquid::Tag
      def render(context)
        html = ""
        categories = context.registers[:site].categories.keys
        categories.sort.each do |category|
          posts_in_category = context.registers[:site].categories[category].size
          category_dir = context.registers[:site].config['category_dir']
          html << "<li class='category'><a href='/#{category_dir}/#{category.to_url}/'>#{category} (#{posts_in_category})</a></li>\n"
        end
        html
      end
    end
  end
  
  Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag)

注意:一定要在文件的开始添加# encoding: UTF-8这一行,否则无法支持中文分类。

增加aside

保存到 source/_includes/asides/category_list.html:

1
2
3
4
5
6
 <section>
    <h1>Categories</h1>
    <ul id="categories">
      \{\% category_list %\}\   //添加时去掉4个\
    </ul>
  </section>

修改_config.yml文件

将category_list添加到default_asides:

1
   default_asides: [asides/category_list.html, asides/recent_posts.html]

安装这个插件后直接可以支持中文分类,url中使用的是分类的拼音,如「数据库」对应「shu-ju-ku」。如果使用中文分类时遇到各种错误,请参考下面这两篇文章: