Map
map filter
Return a new list with the given property from every object in the input list.
Examples
Use the map filter to map blog posts to their linked title. The map filter could just as easily be used for any other property as well.
{% blog_posts posts = limit: 10 sort_by 'post_date' sort_direction:'desc' %}
{{ posts | map: 'linked_title' | join: '<br />' }}
Use the list methods and filters to create and manage lists of data in your templates
{% datastore_items var featured_houses = datastore:"houses" query:"is_featured = true" %}
{% datastore_items var houses_by_folder = datastore:"houses" folder:entity.folder %}
{% datastore_items var houses = featured_houses houses_by_folder unique %}
{% var houses = featured_houses | concat: houses_by_folder %}
{% var houses = houses | uniq %}
{% var random_house = houses | rand %}
{% set houses = houses | shuffle %}
{% var one_rooms = houses | where: "rooms", "1" | sort: "price" %}
{% var cheapest = one_rooms | first %}
{% var mid_houses = one_rooms | slice: 1, 6 %}
{% var expensive_houses = one_rooms | slice: 7 %}
{% var num_expensive_houses = expensive_houses | size %}
{% var few_rooms = houses | where_exp: "house", "house.rooms.value < 3" %}
{% var grouped_by_rooms = houses | group_by: "rooms" | sort: "Key" %}
{% for list in grouped_by_rooms %}
<p>{{list.Key | default: "Unknown"}} Rooms ({{list.Value | size }} houses)</p>
{% endfor %}
{% var mapped_by_rooms = grouped_by_rooms | map: "Value" %}
{% for list in mapped_by_rooms %}
<h4>{{list[0].rooms | default: "Unknown"}} Rooms</h4>
<ul>
<li>{{list | map: "description" | compact | join: "</li><li>" }}</li>
</ul>
{% endfor %}
{% map %}
Creates a new list of strings from the output when a block of liquid markup is executed for each item in a list or collection.
This method behaves exactly the same as the for method, except that instead of outputting the results directly to the template, it saves them in a list instead. It may be helpful to think of the map method as the capture method for lists. You can even assign varaibles by reference (eg: {% map &newcollection for item in oldcollection %}).
Note that you can also use the forloop properties and tags inside a map block (see the for tag documentation for details).
Examples
{% map assign post_html for post in blogposts -%}
<h3>{{ post.linked_title }}</h3>
{% if post.image.is_valid %}
<p>{% img post.image link:post.default_page_url preset:"thumb" title:post.title %}</p>
{% endif %}
<div class="summary">{{ post.summary_html }}</div>
{%- endmap %}
<div class="mainpost">{{post_html[0]}}</div>
{% let smallcontent = post_html | slice: 1 %}
{% include "_small_content" contents:smallcontent %}
Use the map filter to map blog posts to their linked title. The map filter could just as easily be used for any other property as well.
{% blog_posts posts = limit: 10 sort_by 'post_date' sort_direction:'desc' %}
{{ posts | map: 'linked_title' | join: '<br />' }}
{% for entity in collection.items -%}
{{ entity.linked_title }}{% unless forloop.first -%}{% if forloop.length == 2 %} and {% else %}, {% if forloop.last %}and {% endif %}{% endif %}{% endunless %}
{%- endfor %}
Use the list methods and filters to create and manage lists of data in your templates
{% datastore_items var featured_houses = datastore:"houses" query:"is_featured = true" %}
{% datastore_items var houses_by_folder = datastore:"houses" folder:entity.folder %}
{% datastore_items var houses = featured_houses houses_by_folder unique %}
{% var houses = featured_houses | concat: houses_by_folder %}
{% var houses = houses | uniq %}
{% var random_house = houses | rand %}
{% set houses = houses | shuffle %}
{% var one_rooms = houses | where: "rooms", "1" | sort: "price" %}
{% var cheapest = one_rooms | first %}
{% var mid_houses = one_rooms | slice: 1, 6 %}
{% var expensive_houses = one_rooms | slice: 7 %}
{% var num_expensive_houses = expensive_houses | size %}
{% var few_rooms = houses | where_exp: "house", "house.rooms.value < 3" %}
{% var grouped_by_rooms = houses | group_by: "rooms" | sort: "Key" %}
{% for list in grouped_by_rooms %}
<p>{{list.Key | default: "Unknown"}} Rooms ({{list.Value | size }} houses)</p>
{% endfor %}
{% var mapped_by_rooms = grouped_by_rooms | map: "Value" %}
{% for list in mapped_by_rooms %}
<h4>{{list[0].rooms | default: "Unknown"}} Rooms</h4>
<ul>
<li>{{list | map: "description" | compact | join: "</li><li>" }}</li>
</ul>
{% endfor %}