Fix rendering Liquid constructs in excerpts (#6970)

Merge pull request 6970
This commit is contained in:
Pat Hawks 2018-04-30 19:49:16 -05:00 committed by jekyllbot
parent d0b907c2e6
commit a89bba3712
2 changed files with 27 additions and 1 deletions

View File

@ -34,6 +34,25 @@ Feature: Post excerpts
And I should see exactly "<p>content for entry1.</p>" in "_site/2007/12/31/entry1.html" And I should see exactly "<p>content for entry1.</p>" in "_site/2007/12/31/entry1.html"
And I should see exactly "<p>content for entry1.</p>" in "_site/index.html" And I should see exactly "<p>content for entry1.</p>" in "_site/index.html"
Scenario: An excerpt with Liquid constructs from a post with a layout
Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}"
And I have a configuration file with "baseurl" set to "/blog"
And I have a _posts directory
And I have a _layouts directory
And I have a post layout that contains "{{ page.excerpt }}"
And I have the following posts:
| title | date | layout | content |
| entry1 | 2007-12-31 | post | {{ 'assets/style.css' \| relative_url }} |
When I run jekyll build
Then I should get a zero exit status
And the _site directory should exist
And the _site/2007 directory should exist
And the _site/2007/12 directory should exist
And the _site/2007/12/31 directory should exist
And the "_site/2007/12/31/entry1.html" file should exist
And I should see exactly "<p>/blog/assets/style.css</p>" in "_site/2007/12/31/entry1.html"
And I should see exactly "<p>/blog/assets/style.css</p>" in "_site/index.html"
Scenario: An excerpt from a post with a layout which has context Scenario: An excerpt from a post with a layout which has context
Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}" Given I have an "index.html" page that contains "{% for post in site.posts %}{{ post.excerpt }}{% endfor %}"
And I have a _posts directory And I have a _posts directory

View File

@ -9,9 +9,12 @@ module Jekyll
attr_writer :output attr_writer :output
def_delegators :@doc, :site, :name, :ext, :extname, def_delegators :@doc, :site, :name, :ext, :extname,
:render_with_liquid?, :collection, :related_posts, :collection, :related_posts,
:coffeescript_file?, :yaml_file?,
:url, :next_doc, :previous_doc :url, :next_doc, :previous_doc
private :coffeescript_file?, :yaml_file?
# Initialize this Excerpt instance. # Initialize this Excerpt instance.
# #
# doc - The Document. # doc - The Document.
@ -84,6 +87,10 @@ module Jekyll
false false
end end
def render_with_liquid?
!(coffeescript_file? || yaml_file? || !Utils.has_liquid_construct?(content))
end
protected protected
# Internal: Extract excerpt from the content # Internal: Extract excerpt from the content