New features (templates and menus)
- From:
- Graham Ashton
- Date:
- 2010-12-11 @ 17:01
One of the most frequently asked questions about Nesta is "How do I make a
site like the PeepCode blog?", on which every page has a different design.
My stock answer has always been to suggest that you add your own metadata
key which controls which stylesheet to use when rendering the page. That
works, but only gets you so far as you can't use this approach to render
different HTML on each page.
Now you can; I just added two new options that you can set at the top of
each page:
Layout: shop
Template: product
Categories: products
# Buy my Flugelbinders
...
Docs are here:
http://effectif.com/nesta/metadata-reference#layout
http://effectif.com/nesta/metadata-reference#template
And while I'm talking about new stuff, I committed support for Nested
menus yesterday. Probably best explained with an example. Imagine you'd
put this in menu.txt:
home
blog
docs
docs/download
docs/getting-started
faq
about
... this in your app.rb file:
@menu = Nesta::Menu.full_menu
... and this in your template:
- display_menu(@menu, :levels => 1)
You'd just get links to home, blog, documentation and about in your menu
(i.e. primary nav). The :levels setting controls how far down the menu
tree it goes when rendering <ul> and <li> tags, so for primary nav 1 is a
good bet.
Or you could get secondary nav for a section, by asking for a menu beneath
a specific part of the tree:
# in app.rb
first_part_of_path = request.path.split('/')[1] # e.g. 'docs'
@menu = Nesta::Menu.for_path(first_part_of_path)
# in your template
- display_menu(@menu, :levels => 3)
I've not written any docs for this yet, but hopefully you get the idea.
There's a new Menu class in lib/models.rb, and the view helper is in the
default app.rb file.
Here are the relevant patches:
https://github.com/gma/nesta/commit/69ef15ab357c5e39bfa8ddbe06504de154b046a8
https://github.com/gma/nesta/commit/2c2bbcbd9dde10e30ccbe4daf7c15307526e3e8f
Now it's time for the gem...