Merge pull request #4943 from pathawks/fp/fix-layout-var-overflow
Merge pull request 4943
This commit is contained in:
commit
0ca45a48e5
|
@ -35,3 +35,36 @@ Feature: Layout data
|
||||||
When I run jekyll build
|
When I run jekyll build
|
||||||
Then the "_site/index.html" file should exist
|
Then the "_site/index.html" file should exist
|
||||||
And I should see "page content\n foo: my custom data" in "_site/index.html"
|
And I should see "page content\n foo: my custom data" in "_site/index.html"
|
||||||
|
|
||||||
|
Scenario: Inherit custom layout data and clear when not present
|
||||||
|
Given I have a _layouts directory
|
||||||
|
And I have a "_layouts/default.html" file with content:
|
||||||
|
"""
|
||||||
|
---
|
||||||
|
bar: i'm default
|
||||||
|
---
|
||||||
|
{{ content }} foo: '{{ layout.foo }}' bar: '{{ layout.bar }}'
|
||||||
|
"""
|
||||||
|
And I have a "_layouts/special.html" file with content:
|
||||||
|
"""
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
foo: my special data
|
||||||
|
bar: im special
|
||||||
|
---
|
||||||
|
{{ content }}
|
||||||
|
"""
|
||||||
|
And I have a "_layouts/page.html" file with content:
|
||||||
|
"""
|
||||||
|
---
|
||||||
|
layout: default
|
||||||
|
bar: im page
|
||||||
|
---
|
||||||
|
{{ content }}
|
||||||
|
"""
|
||||||
|
And I have an "index.html" page with layout "special" that contains "page content"
|
||||||
|
And I have an "jekyll.html" page with layout "page" that contains "page content"
|
||||||
|
When I run jekyll build
|
||||||
|
Then the "_site/index.html" file should exist
|
||||||
|
And I should see "page content\n foo: 'my special data' bar: 'im special'" in "_site/index.html"
|
||||||
|
And I should see "page content\n foo: '' bar: 'im page'" in "_site/jekyll.html"
|
||||||
|
|
|
@ -209,10 +209,13 @@ module Jekyll
|
||||||
|
|
||||||
used = Set.new([layout])
|
used = Set.new([layout])
|
||||||
|
|
||||||
|
# Reset the payload layout data to ensure it starts fresh for each page.
|
||||||
|
payload["layout"] = nil
|
||||||
|
|
||||||
while layout
|
while layout
|
||||||
Jekyll.logger.debug "Rendering Layout:", path
|
Jekyll.logger.debug "Rendering Layout:", path
|
||||||
payload["content"] = output
|
payload["content"] = output
|
||||||
payload["layout"] = Utils.deep_merge_hashes(payload["layout"] || {}, layout.data)
|
payload["layout"] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {})
|
||||||
|
|
||||||
self.output = render_liquid(layout.content,
|
self.output = render_liquid(layout.content,
|
||||||
payload,
|
payload,
|
||||||
|
|
|
@ -136,10 +136,13 @@ module Jekyll
|
||||||
|
|
||||||
used = Set.new([layout])
|
used = Set.new([layout])
|
||||||
|
|
||||||
|
# Reset the payload layout data to ensure it starts fresh for each page.
|
||||||
|
payload["layout"] = nil
|
||||||
|
|
||||||
while layout
|
while layout
|
||||||
payload['content'] = output
|
payload['content'] = output
|
||||||
payload['page'] = document.to_liquid
|
payload['page'] = document.to_liquid
|
||||||
payload['layout'] = Utils.deep_merge_hashes(payload['layout'] || {}, layout.data)
|
payload['layout'] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {})
|
||||||
|
|
||||||
output = render_liquid(
|
output = render_liquid(
|
||||||
layout.content,
|
layout.content,
|
||||||
|
|
Loading…
Reference in New Issue