Search code examples
jekyllliquid

What Jekyll syntax to filter key:value pair in Front Matter?


In my Jekyll site, I have a page that stores an array of data in front matter, like this:

---
layout: page
title: MyTitle
array:
  - key1: value1
  - key2: value2
---

What I want to do in my template: given a keyX, obtain valueX from the array.

I figured out a way to access the array:

{% assign subpage = site.pages | where: 'title', 'MyTitle' %}
{% assign array = subpage[0].array %}

Now the query that I need to write is: "from the array, extract the value that matches keyX".

Is there a way to search through the array, without the need for looping? All the examples I can find are based on one-dimensional arrays...


Solution

  • Your array is an array of non standardized objects (they don't have the same keys).

    {{ page.array | inspect }} 
    

    returns

    [{"key1"=>"value1"}, {"key2"=>"value2"}]
    

    Here the only way to search is to loop over all array's items.

    If you refactor your array to become an object, you can then get value from a key.

    ---
    [...]
    object:
      key1: value1
      key2: value2
    ...
    

    Example :

    {% assign searched = "key1" %}
    {{ page.object[searched] }}