Jekyll Page数据不会持续

时间:2015-07-24 22:17:20

标签: ruby jekyll liquid

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>

1 个答案:

答案 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

pages layout

<强> page.html中

<article class="post-content">
  {{ content }}
  {{ page.foo }}
</article>

我运行<article class="post-content"> {{ content }} {{ page.foo }} </article> 后,我可以看到postpage中的输出,就在我预期的位置。

在单独的分支中,我重新创建了您的设置,您可以遍历所有页面和帖子:

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