Например, да кажа, че искам да генерирам този масив:
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. И вътре в шаблона, искам масив, с който мога да повторя, не искам низ.
Как може да се направи това в Джекил?
Отговори:
6 за отговор № 1Е, трябва да имате плъгин: 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 има много заобикалящи решения.