Incorporate `relative_url` within `post_url` tag (#7589)
Merge pull request 7589
This commit is contained in:
parent
c985dc5899
commit
2591f33aa8
|
@ -22,6 +22,25 @@ and fetch the latest version of Jekyll:
|
||||||
gem update jekyll
|
gem update jekyll
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<div class="note warning">
|
||||||
|
<h5><code>post_url</code> Tag and Baseurl</h5>
|
||||||
|
<p> </p>
|
||||||
|
<p>
|
||||||
|
The <code>post_url</code> tag now incorporates the <code>relative_url</code> filter within itself
|
||||||
|
and therefore automatically prepends your site's <code>baseurl</code> to the post's <code>url</code>
|
||||||
|
value.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Please ensure that you change all instances of the <code>post_url</code> usage as following:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
{% highlight diff %}
|
||||||
|
- {{ site.baseurl }}/{% post_url 2018-03-20-hello-world.markdown %}
|
||||||
|
+ {% post_url 2018-03-20-hello-world.markdown %}
|
||||||
|
{% endhighlight %}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
## Template rendering
|
## Template rendering
|
||||||
|
|
||||||
We've slightly altered the way Jekyll parses and renders your various templates
|
We've slightly altered the way Jekyll parses and renders your various templates
|
||||||
|
|
|
@ -708,6 +708,15 @@ h5 > code,
|
||||||
0 -1px 0 rgba(0,0,0,.5));
|
0 -1px 0 rgba(0,0,0,.5));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.note .highlight {
|
||||||
|
width: 94%;
|
||||||
|
pre code {
|
||||||
|
font-size: 0.9em;
|
||||||
|
background-color: transparent;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.note code {
|
.note code {
|
||||||
background-color: #333;
|
background-color: #333;
|
||||||
background-color: rgba(0,0,0,0.2);
|
background-color: rgba(0,0,0,0.2);
|
||||||
|
|
|
@ -71,7 +71,7 @@ Feature: PostUrl Tag
|
||||||
When I run jekyll build
|
When I run jekyll build
|
||||||
Then I should get a zero exit status
|
Then I should get a zero exit status
|
||||||
And the _site directory should exist
|
And the _site directory should exist
|
||||||
And I should see "<p><a href=\"/2019/02/04/hello-world.html\">Welcome</a></p>" in "_site/index.html"
|
And I should see "<p><a href=\"/blog/2019/02/04/hello-world.html\">Welcome</a></p>" in "_site/index.html"
|
||||||
|
|
||||||
Scenario: Posts with categories
|
Scenario: Posts with categories
|
||||||
Given I have a _posts directory
|
Given I have a _posts directory
|
||||||
|
|
|
@ -56,6 +56,10 @@ Gem::Specification.new do |s|
|
||||||
You should no longer prepend `{{ site.baseurl }}` to `{% link foo.md %}`
|
You should no longer prepend `{{ site.baseurl }}` to `{% link foo.md %}`
|
||||||
For further details: https://github.com/jekyll/jekyll/pull/6727
|
For further details: https://github.com/jekyll/jekyll/pull/6727
|
||||||
|
|
||||||
|
* Our `post_url` tag now comes with the `relative_url` filter incorporated into it.
|
||||||
|
You shouldn't prepend `{{ site.baseurl }}` to `{% post_url 2019-03-27-hello %}`
|
||||||
|
For further details: https://github.com/jekyll/jekyll/pull/7589
|
||||||
|
|
||||||
* Our `highlight` tag no longer parses Liquid and Liquid-like constructs in the
|
* Our `highlight` tag no longer parses Liquid and Liquid-like constructs in the
|
||||||
tag's content body. While this means you no longer need to enclose the content
|
tag's content body. While this means you no longer need to enclose the content
|
||||||
within a `{% raw %}{% endraw %}` block, it also means that you can no longer
|
within a `{% raw %}{% endraw %}` block, it also means that you can no longer
|
||||||
|
|
|
@ -57,6 +57,8 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
class PostUrl < Liquid::Tag
|
class PostUrl < Liquid::Tag
|
||||||
|
include Jekyll::Filters::URLFilters
|
||||||
|
|
||||||
def initialize(tag_name, post, tokens)
|
def initialize(tag_name, post, tokens)
|
||||||
super
|
super
|
||||||
@orig_post = post.strip
|
@orig_post = post.strip
|
||||||
|
@ -72,24 +74,25 @@ module Jekyll
|
||||||
end
|
end
|
||||||
|
|
||||||
def render(context)
|
def render(context)
|
||||||
|
@context = context
|
||||||
site = context.registers[:site]
|
site = context.registers[:site]
|
||||||
|
|
||||||
site.posts.docs.each do |p|
|
site.posts.docs.each do |document|
|
||||||
return p.url if @post == p
|
return relative_url(document) if @post == document
|
||||||
end
|
end
|
||||||
|
|
||||||
# New matching method did not match, fall back to old method
|
# New matching method did not match, fall back to old method
|
||||||
# with deprecation warning if this matches
|
# with deprecation warning if this matches
|
||||||
|
|
||||||
site.posts.docs.each do |p|
|
site.posts.docs.each do |document|
|
||||||
next unless @post.deprecated_equality p
|
next unless @post.deprecated_equality document
|
||||||
|
|
||||||
Jekyll::Deprecator.deprecation_message "A call to "\
|
Jekyll::Deprecator.deprecation_message "A call to "\
|
||||||
"'{% post_url #{@post.name} %}' did not match " \
|
"'{% post_url #{@post.name} %}' did not match " \
|
||||||
"a post using the new matching method of checking name " \
|
"a post using the new matching method of checking name " \
|
||||||
"(path-date-slug) equality. Please make sure that you " \
|
"(path-date-slug) equality. Please make sure that you " \
|
||||||
"change this tag to match the post's name exactly."
|
"change this tag to match the post's name exactly."
|
||||||
return p.url
|
return relative_url(document)
|
||||||
end
|
end
|
||||||
|
|
||||||
raise Jekyll::Errors::PostURLError, <<~MSG
|
raise Jekyll::Errors::PostURLError, <<~MSG
|
||||||
|
|
Loading…
Reference in New Issue