No commit activity in last 3 years
No release in over 3 years
Plugin that adds index page subpages methods and helpers
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

>= 0.9.11
 Project Readme

Nesta Subpages Plugin

Add two new methods to the Nesta::Page class that finds any subpages for an index page. A subpage is considered to be a sibling page in the same directory as the index page and any index pages within immediate subdirectories. For example:

/content/pages/parent/
/content/pages/parent/index.mdown
/content/pages/parent/page-1.mdown
/content/pages/parent/page-2.mdown
/content/pages/parent/subdir-1/
/content/pages/parent/subdir-1/index.haml
/content/pages/parent/subdir-2/
/content/pages/parent/subdir-2/some-other-pages.mdown

Page.find_by_path('parent').subpages() => [page-1, page-2, subdir-1]

The returned array contains the Page instances themselves, not their string paths, and they will be sorted based on their titles.

Next, there is also #has_subpages? helper method that returns true or false if the page has any subpages.

Subpages are cached within an instance variable the first time that #subpages is called, but this should not be a problem in most cases.

Also, there is a helper defined called subpages_for that takes either a Page instance or a string path and returns the same array.

Lastly, if for some reason you do not want a subpage listed, merely give it the metadata tag of skip subpage: true and it will indeed be skipped in the list.

There are two options that you can pass to subpages in a hash to modify what it does:

:do_sort         - Defaults to true; sorts the pages by title.
:include_subdirs - Defaults to true; includes index pages of
                   immediate subdirectories.

Also, if you give the method a block, each page will be yielded and the method will return nil.

Installation

Add this line to your application's Gemfile:

gem 'nesta-plugin-subpages'

And then execute:

$ bundle

Or install it yourself as:

$ gem install nesta-plugin-subpages

Usage

Not much to do! Simply call the #subpages method on your Page object when you want to use the array of subpages! Easy peasy, m'friend. For example, in the sidebar, you might do this:

- if @page.has_subpages?
  #nav.subpages
    %h1 Subpages
    - display_menu(@page.subpages, :class => "menu")

Or, if you wanna iterate of the pages:

- @page.subpages do |page|
  = page.title

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request