# encoding: utf-8moduleJekyllclassSitedefcreate_category_listwrite_to_tag_cloudif@config['category_tag_cloud']write_to_sidebarif@config['category_sidebar']endprivate# generate category tag list and write to 'source/_includes/asides/categories_tag.html'defwrite_to_tag_cloudputs' => Creating Categories Tag Cloud'lists={}max,min=1,1@categories.keys.sort_by{|str|str.downcase}.eachdo|category|count=@categories[category].countlists[category]=countmax=countifcount>maxendhtml=''lists.eachdo|category,counter|url=get_category_urlcategorystyle="font-size: #{100+(60*Float(counter)/max)}%"if@config['category_counter']html<<" <a href='#{url}' style='#{style}'>#{category.capitalize}(#{@categories[category].count})</a> "elsehtml<<" <a href='#{url}' style='#{style}'>#{category.capitalize}</a> "endendFile.open(File.join(@source,'_includes/asides/categories_tag.html'),'w')do|file|file<<"""{% if site.category_tag_cloud %}<section><h1>#{@config['category_title']||'Categories'}</h1><span class='categories_tag'>#{html}</span></section>{% endif %}"""endend# generate category lists and write to 'source/_includes/asides/categories_sidebar.html'defwrite_to_sidebarputs' => Creating Categories Sidebar'html="<ul>\n"# case insensitive sorting@categories.keys.sort_by{|str|str.downcase}.eachdo|category|url=get_category_urlcategoryif@config['category_counter']html<<" <li><a href='#{url}'>#{category.capitalize} (#{@categories[category].count})</a></li>\n"elsehtml<<" <li><a href='#{url}'>#{category.capitalize}</a></li>\n"endendhtml<<"</ul>"File.open(File.join(@source,'_includes/asides/categories_sidebar.html'),'w')do|file|file<<"""{% if site.category_sidebar %}<section><h1>#{@config['category_title']||'Categories'}</h1>#{html}</section>{% endif %}"""endenddefget_category_url(category)dir=@config['category_dir']||'categories'File.join@config['root'],dir,category.gsub(/_|\P{Word}/,'-').gsub(/-{2,}/,'-').downcaseendendclassCategoryList<Generatorsafetruepriority:lowdefgenerate(site)ifsite.config['category_list']puts"## Generating Categories.."site.create_category_listendendendend
程式碼寫得有點髒,應該有更漂亮的寫法 :)
再來,請打開根目錄的_config.yml,加上一些設定:
123456789101112131415
# ----------------------- ## Categories ## ----------------------- ## create categories pagecategory_list:true# use counter after categoriescategory_counter:true# category titlecategory_title:分類# create an include categories list in @source/_includes/asides/categories_sidebar.html# and don't forget to add 'asides/categories_sidebar.html' into @default_asides if you want to enable it.category_sidebar:true# create an include categories tag cloud page in @source/_includes/asides/categories_tag.html# and don't forget to add 'asides/categories_tag.html' to @default_asides if you want to enable it.category_tag_cloud:true