AngryGantz

Заметки о Web-стройках

Секция категорий в сайдбаре Octopress

| Comments

В стандартной поставке Octopress остутствует как ни странно модуль для сайдбара со списком категорий блога. Исправляем сей небольшой недостаток.

Плагин

В папке плгинов ( root/plugins ) создаем файл category_list_tag.rb вот такого содержания:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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']
        category_url = File.join(category_dir, category.gsub(/_|\P{Word}/, '-').gsub(/-{2,}/, '-').downcase)
        html << "<li class='category'><a href='/#{category_url}/'>#{category} (#{posts_in_category})</a></li>\n"
      end
      html
    end
  end
end

Liquid::Template.register_tag('category_list', Jekyll::CategoryListTag)

Шаблон секции

Создаем файл root/source/_includes/asides со следующим содержанием:

1
2
3
4
5
6
<section>
  <h1>Categories</h1>
  <ul id="categories">
    
  • JCFYii (6)  
  • Linux (1)  
  • Octopress (2)  
  • Slitaz (1)  
  • Yii (3)  
  • </ul> </section>

    Подключение

    в файле root/_config.yml в разделе включения модулей сайдбара добавляем наш:

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

    Собственно всё.

    Comments