How do I shuffle the order of an array in Jekyll?
jekyll, liquid, ruby
Solution
I managed to achieve this by adding a custom filter via Jekyll's plugin system:
# _plugins/shuffle.rb
module Jekyll
module ShuffleFilter
def shuffle(array)
array.shuffle
end
end
end
Liquid::Template.register_filter(Jekyll::ShuffleFilter)
And using:
{% assign shuffled_array = page.array | shuffle %}
{% for i in shuffled_array %}
<p>{{ i }}</p>
{% endfor %}
Problem
Specifically I'm looking to list an array's contents in random order on a page each time it is generated. So, given `page.array = [1, 2, 3]` the following: ``` {% for i in page.array %} <p>{{ i }}</p> {% endfor %} <!-- Yields: <p>1</p> <p>2</p> <p>3</p> --> ``` How do I randomize that order? (hopefully with syntax somewhat like the following) ``` {% for i in page.array.shuffle %} <p>{{ i }}</p> {% endfor %} <!-- Yielding something like this, or a random reordering: <p>3</p> <p>1</p> <p>2</p> --> ```