module Middleman::CoreExtensions::Routing::InstanceMethods
def page(url, opts={}, &block)
page "/about.html", :layout => false
The page method allows the layout to be set on a specific path
def page(url, opts={}, &block) if url.include?("*") url = Regexp.new(url.gsub("*", "(.*)").gsub(/^\//, "^")) end if url.is_a?(Regexp) && !opts.empty? provides_metadata_for_path url do |url| { :options => opts } end return end opts[:layout] = layout if opts[:layout].nil? url = full_path(url) if opts.has_key?(:proxy) reroute(url, opts[:proxy]) if opts.has_key?(:ignore) && opts[:ignore] ignore(opts[:proxy]) opts.delete(:ignore) end opts.delete(:proxy) else if opts.has_key?(:ignore) && opts[:ignore] ignore(url) opts.delete(:ignore) end end a_block = block_given? ? block : nil if a_block || !opts.empty? sitemap.page(url) do template.options = opts template.blocks = [a_block] end end end
def with_layout(layout_name, &block)
page "/admin/login.html"
page "/admin/"
with_layout :admin do
Takes a block which allows many pages to have the same layout
def with_layout(layout_name, &block) old_layout = layout set :layout, layout_name instance_exec(&block) if block_given? ensure set :layout, old_layout end