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
有关为什么变更帖子的.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 %}
产量
<div class="postbaz">Foo</div>
<div class="postbaz">Foo</div>
<div class="postbaz">Foo</div>
<div class="pagebaz"></div>
<div class="pagebaz"></div>
答案 0 :(得分:1)
你错过了什么。向progressbar
添加值对页面和帖子都非常有效。
请参阅my repository以供参考。
Here我添加&#39; foo&#39;归属于所有页面和帖子
<强> _plugins / foo.rb 强>
data
我在这里添加&#39; foo&#39;发布布局:
<强> post.html 强>
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
<强> page.html中强>
<article class="post-content">
{{ content }}
{{ page.foo }}
</article>
我运行<article class="post-content">
{{ content }}
{{ page.foo }}
</article>
后,我可以看到post和page中的输出,就在我预期的位置。
在单独的分支中,我重新创建了您的设置,您可以遍历所有页面和帖子:
default.html(source)
jekyll b
_plugins / foo.rb(source)
{% for post in site.posts %}
<div class="postbaz">{{ post.foo }}</div>
{% endfor %}
{% for page in site.pages %}
<div class="pagebaz">{{ page.foo }}</div>
{% endfor %}
(注意该属性是&#39; bar&#39;用于页面,&#39; baz&#39;用于发布。)
按预期呈现:
site / index.html(source)
site.pages.each do |page|
page.data['foo'] = 'bar'
end
site.posts.each do |post|
post.data['foo'] = 'baz'
end