class Jekyll::OpenProjectHelpers::IndexPageGenerator

Below passes the `items` variable to normal (unfiltered) index page layout.

Public Instance Methods

generate(site) click to toggle source
# File lib/jekyll-theme-open-project-helpers/filterable_index.rb, line 90
def generate(site)
  site.config['max_featured_software'] = 3
  site.config['max_featured_specs'] = 3
  site.config['max_featured_posts'] = 3

  INDEXES.each do |index_name, params|
    if site.config['is_hub']
      collection_name = 'projects'
    else
      collection_name = index_name
    end

    if site.collections.key? collection_name
      # Filters items from given collection_name through item_test function
      # and makes items available in templates via e.g. site.all_specs, site.all_software

      items = get_all_items(site, collection_name, params[:item_test])

      if items.length == 1
        site.config["one_#{index_name}"] = items[0]
      end

      site.config["all_#{index_name}"] = items
      site.config["num_all_#{index_name}"] = items.size

      featured_items = items.select { |item| item.data['feature_with_priority'] != nil }
      site.config["featured_#{index_name}"] = featured_items.sort_by { |item| item.data['feature_with_priority'] }
      site.config["num_featured_#{index_name}"] = featured_items.size

      non_featured_items = items.select { |item| item.data['feature_with_priority'] == nil }
      site.config["non_featured_#{index_name}"] = non_featured_items
      site.config["num_non_featured_#{index_name}"] = non_featured_items.size
    end
  end
end