layouts_dir is now configurable. Closes #899
This commit is contained in:
parent
149f6ffa5b
commit
d0cd3e3cf9
|
@ -12,6 +12,7 @@
|
||||||
3.1.0.rc.2
|
3.1.0.rc.2
|
||||||
===
|
===
|
||||||
|
|
||||||
|
* `layouts_dir` is now configurable
|
||||||
* Custom template classes can now override the file used for creating the project Gemfile.
|
* Custom template classes can now override the file used for creating the project Gemfile.
|
||||||
* Add an "empty" template that produces the minimum necessary structure for a Middleman project.
|
* Add an "empty" template that produces the minimum necessary structure for a Middleman project.
|
||||||
* Fix ignoring layouts from the sitemap when the source directory has been set to something other than 'source'. #896
|
* Fix ignoring layouts from the sitemap when the source directory has been set to something other than 'source'. #896
|
||||||
|
|
30
middleman-core/features/layouts_dir.feature
Normal file
30
middleman-core/features/layouts_dir.feature
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
Feature: Layouts dir
|
||||||
|
Scenario: Find layouts in a custom layouts dir
|
||||||
|
Given a fixture app "layouts-dir-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
set :layouts_dir, 'layouts2'
|
||||||
|
"""
|
||||||
|
And the Server is running
|
||||||
|
When I go to "/index.html"
|
||||||
|
Then I should see "contents of the custom layout"
|
||||||
|
|
||||||
|
Scenario: Find layouts in a nested custom layouts dir
|
||||||
|
Given a fixture app "layouts-dir-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
set :layouts_dir, 'nested/layouts2'
|
||||||
|
"""
|
||||||
|
And the Server is running
|
||||||
|
When I go to "/index.html"
|
||||||
|
Then I should see "contents of the nested layout"
|
||||||
|
|
||||||
|
Scenario: Find layouts in the default layouts dir
|
||||||
|
Given a fixture app "layouts-dir-app"
|
||||||
|
And a file named "config.rb" with:
|
||||||
|
"""
|
||||||
|
"""
|
||||||
|
And the Server is running
|
||||||
|
When I go to "/index.html"
|
||||||
|
Then I should see "contents of the layout"
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
|
||||||
|
Hello
|
|
@ -0,0 +1,3 @@
|
||||||
|
contents of the layout
|
||||||
|
|
||||||
|
<%= yield %>
|
|
@ -0,0 +1,3 @@
|
||||||
|
contents of the custom layout
|
||||||
|
|
||||||
|
<%= yield %>
|
|
@ -0,0 +1,3 @@
|
||||||
|
contents of the nested layout
|
||||||
|
|
||||||
|
<%= yield %>
|
|
@ -97,6 +97,10 @@ module Middleman
|
||||||
# @return [String]
|
# @return [String]
|
||||||
config.define_setting :partials_dir, "", 'Location of partials within source'
|
config.define_setting :partials_dir, "", 'Location of partials within source'
|
||||||
|
|
||||||
|
# Location of layouts within source. Used by renderers.
|
||||||
|
# @return [String]
|
||||||
|
config.define_setting :layouts_dir, "layouts", 'Location of layouts within source'
|
||||||
|
|
||||||
# Where to build output files
|
# Where to build output files
|
||||||
# @return [String]
|
# @return [String]
|
||||||
config.define_setting :build_dir, "build", 'Where to build output files'
|
config.define_setting :build_dir, "build", 'Where to build output files'
|
||||||
|
|
|
@ -153,7 +153,7 @@ module Middleman
|
||||||
content = render_individual_file(path, locs, opts, context)
|
content = render_individual_file(path, locs, opts, context)
|
||||||
path = File.basename(path, File.extname(path))
|
path = File.basename(path, File.extname(path))
|
||||||
rescue LocalJumpError
|
rescue LocalJumpError
|
||||||
raise "Tried to render a layout (calls yield) at #{path} like it was a template. Non-default layouts need to be in #{source}/layouts."
|
raise "Tried to render a layout (calls yield) at #{path} like it was a template. Non-default layouts need to be in #{source}/#{layout_dir}."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -369,7 +369,7 @@ module Middleman
|
||||||
|
|
||||||
# Check layouts folder
|
# Check layouts folder
|
||||||
if !layout_path
|
if !layout_path
|
||||||
layout_path, layout_engine = resolve_template(File.join("layouts", name.to_s), :preferred_engine => preferred_engine)
|
layout_path, layout_engine = resolve_template(File.join(config[:layouts_dir], name.to_s), :preferred_engine => preferred_engine)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -380,7 +380,7 @@ module Middleman
|
||||||
|
|
||||||
# Check layouts folder, no preference
|
# Check layouts folder, no preference
|
||||||
if !layout_path
|
if !layout_path
|
||||||
layout_path, layout_engine = resolve_template(File.join("layouts", name.to_s))
|
layout_path, layout_engine = resolve_template(File.join(config[:layouts_dir], name.to_s))
|
||||||
end
|
end
|
||||||
|
|
||||||
# Return the path
|
# Return the path
|
||||||
|
|
Loading…
Reference in a new issue