module Middleman::CoreExtensions::Routing::ClassMethods
def page(url, options={}, &block)
page "/about.html", :layout => false
The page method allows the layout to be set on a specific path
def page(url, options={}, &block) url = url.gsub(%r{#{settings.index_file}$}, "") url = url.gsub(%r{(\/)$}, "") if url.length > 1 paths = [url] paths << "#{url}/" if url.length > 1 && url.split("/").last.split('.').length <= 1 paths << "#{path_to_index(url)}" options[:layout] = settings.layout if options[:layout].nil? paths.each do |p| get(p) do return yield if block_given? process_request(options) end end end
def path_to_index(path)
def path_to_index(path) parts = path ? path.split('/') : [] if parts.last.nil? || parts.last.split('.').length == 1 path = File.join(path, settings.index_file) end path.gsub(%r{^/}, '') 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 = settings.layout set :layout, layout_name class_eval(&block) if block_given? ensure set :layout, old_layout end