8

例如,假设我想生成这个数组:

random_numbers = []
1000.times { random_numbers << rand(2) }

并将其传递给模板,以便我可以从 Liquid 访问它:

{% for num in random_numbers %} 
  ... here I'd use logic around the number to generate something.
{% endfor %}

注意:我想在 Ruby 中动态生成数组。在模板内部,我想要一个可以迭代的数组,我不想要一个字符串。

在 Jekyll 中如何做到这一点?

4

1 回答 1

6

好吧,你需要一个插件:https ://github.com/mojombo/jekyll/wiki/Plugins

如果您乐于将逻辑放入您的插件中,您可以在自定义 Liquid::Tag 中执行此操作,但您的要求听起来像是需要一个生成器,这没关系。我只是把它放在一起,它似乎可以按照你的意愿工作:

module Jekyll

class RandomNumberGenerator < Generator

  def generate(site)
    site.pages.each do |page|
      a = Array.new
      1000.times { a << rand(2) }
      page.data['random_numbers'] = a
    end
  end

end

end

这应该放在你的 _plugins/ 目录中(如 rand.rb 或其他东西)。在您的模板中,您可以执行

<ul>
    {% for number in page.random_numbers %}
        <li>{{ number }}</li>
    {% endfor %}
</ul>

或者任何你想要的。我假设您需要为每个页面设置一组不同的数字 - 但如果您需要为整个站点设置一组,您可以轻松地生成一次数组,然后将其附加到站点对象或每个页面。

这不适用于 Github Pages 上的自动生成(出于显而易见的原因,它们不允许自定义插件),但这应该不是问题 - 即使您使用的是 Github Pages,也有很多解决方法。

于 2012-11-01T20:39:09.497 回答