本文介绍基于 Jekyll 的站点,怎么实现对站内所有标签下的文章进行分页列表展示。阅读本文前,建议先预读了解《Jekyll 插件 - 文章分页》。

插件实现思路

实现插件逻辑代码

laijinman-tag-post-list-page-generator.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Laijinman
    class TagPostListPageGenerator < Jekyll::Generator
        safe true
        
        def generate(site)
            paginate = site.config['paginate'] || 10;
            dir      = 'tag'
            layout   = 'posts'
            
            pre_page = paginate.to_i
            
            if site.layouts.key? layout
                site.tags.each do |tag|
                    total_posts = tag.last.size
                    total_pages = total_posts.fdiv(pre_page).ceil
                    
                    for page in 1..total_pages
                        paginator = Paginator.new(tag.last, pre_page, page, File.join(dir, tag.first))

                        data = Hash.new()
                        data['paginator'] = paginator
                        site.pages << Page.new(site, paginator.page_path, data, layout)
                    end
                end
            end
        end
    end
end

演示

  • Jekyll 标签为Jekyll文章列表。

相关链接