class Jekyll::Paginate::Pagination
Public Class Methods
first_page_url(site)
click to toggle source
Static: Fetch the URL of the template page. Used to determine the
path to the first pager in the series.
site - the Jekyll::Site object
Returns the url of the template page
# File pagination.rb, line 64 def self.first_page_url(site) if page = Pagination.new.template_page(site) page.url else nil end end
Public Instance Methods
generate(site)
click to toggle source
Generate paginated pages if necessary.
site - The Site.
Returns nothing.
# File pagination.rb, line 15 def generate(site) if Pager.pagination_enabled?(site) if template = template_page(site) paginate(site, template) else Jekyll.logger.warn "Pagination:", "Pagination is enabled, but I couldn't find " + "an index.html page to use as the pagination template. Skipping pagination." end end end
paginate(site, page)
click to toggle source
Paginates the blog’s posts. Renders the index.html file into paginated directories, e.g.: page2/index.html, page3/index.html, etc and adds more site-wide data.
site - The Site. page - The index.html Page that requires pagination.
{“paginator” => { “page” => <Number>,
"per_page" => <Number>, "posts" => [<Post>], "total_posts" => <Number>, "total_pages" => <Number>, "previous_page" => <Number>, "next_page" => <Number> }}
# File pagination.rb, line 40 def paginate(site, page) all_posts = site.site_payload['site']['posts'] all_posts = all_posts.reject { |p| p['hidden'] } all_posts = all_posts.reject { |p| p['language'] != site.config['languages'][0] } pages = Pager.calculate_pages(all_posts, site.config['paginate'].to_i) (1..pages).each do |num_page| pager = Pager.new(site, num_page, all_posts, pages) if num_page > 1 newpage = Page.new(site, site.source, page.dir, page.name) newpage.pager = pager newpage.dir = Pager.paginate_path(site, num_page) site.pages << newpage else page.pager = pager end end end
template_page(site)
click to toggle source
Public: Find the Jekyll::Page which will act as the pager template
site - the Jekyll::Site object
Returns the Jekyll::Page which will act as the pager template
# File pagination.rb, line 77 def template_page(site) site.pages.dup.select do |page| Pager.pagination_candidate?(site.config, page) end.sort do |one, two| two.path.size <=> one.path.size end.first end