Fre*_*all 5 ruby liquid jekyll
Jekyll版本2.5.3
我们正在尝试编写一个插件来宣传与页面或帖子无关的内容.但是,页面和帖子之间存在一些不明确的区别.
# this does not work
site.pages.each do |page|
# this does not show up in liquid
page.data['baz'] = 'Foo'
end
# this does work
site.posts.each do |post|
# this does show up in liquid
post.data['baz'] = 'Bar'
end
Run Code Online (Sandbox Code Playgroud)
关于为什么要改变.data帖子的哈希值的任何想法都可以在流动中访问,但改变.data页面的哈希值没有效果?
我们也对此进行了测试.data["title"],但它会产生影响posts但page标题不受影响.
{% for post in site.posts %}
<div class="postbaz">{{ post.baz }}</div>
{% endfor %}
{% for page in site.pages %}
<div class="pagebaz">{{ page.baz }}</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
产量
<div class="postbaz">Foo</div>
<div class="postbaz">Foo</div>
<div class="postbaz">Foo</div>
<div class="pagebaz"></div>
<div class="pagebaz"></div>
Run Code Online (Sandbox Code Playgroud)
你缺少一些东西。添加值到data对于页面和帖子都非常有效。
请参阅我的存储库以供参考。
这里我为所有页面和帖子添加 'foo' 属性
_插件/foo.rb
module Foo
class Generator < Jekyll::Generator
def generate(site)
puts "Our plugin is running"
puts site.pages.inspect
puts site.posts.inspect
site.pages.each do |page|
page.data['foo'] = 'bar'
end
site.posts.each do |post|
post.data['foo'] = 'bar'
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
这里我将“foo”添加到帖子布局中:
帖子.html
<article class="post-content">
{{ content }}
{{ page.foo }}
</article>
Run Code Online (Sandbox Code Playgroud)
以及页面布局:
页面.html
<article class="post-content">
{{ content }}
{{ page.foo }}
</article>
Run Code Online (Sandbox Code Playgroud)
运行后jekyll b我可以在帖子和页面中看到输出中看到输出,就在我期望的位置。
在单独的分支中,我重新创建了您的设置,您可以在其中迭代所有页面和帖子:
默认.html(来源)
{% for post in site.posts %}
<div class="postbaz">{{ post.foo }}</div>
{% endfor %}
{% for page in site.pages %}
<div class="pagebaz">{{ page.foo }}</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
_plugins/foo.rb(来源)
site.pages.each do |page|
page.data['foo'] = 'bar'
end
site.posts.each do |post|
post.data['foo'] = 'baz'
end
Run Code Online (Sandbox Code Playgroud)
(请注意,页面的属性为“bar”,帖子的属性为“baz”。)
它按预期呈现:
site/index.html(来源)
<div class="postbaz">baz</div>
<div class="pagebaz">bar</div>
<div class="pagebaz">bar</div>
<div class="pagebaz">bar</div>
<div class="pagebaz">bar</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |