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>

またはあなたが望むものは何でも。ページごとに異なる数値のセットが必要だと仮定しましたが、サイト全体に 1 つのセットが必要な場合は、配列を一度簡単に作成してから、サイト オブジェクトまたはすべてのページに添付することができます。

これは、Github Pages の自動生成では機能しません (明らかな理由から、カスタム プラグインは許可されていません) が、問題にはなりません。Github Pages を使用している場合でも、回避策はたくさんあります。

于 2012-11-01T20:39:09.497 に答える