Назначьте литерал массива переменной в шаблоне Liquid
Единственный способ, которым я знаю, создать массив из моего жидкого шаблона:
{% assign my_array = "one|two|three" | split: "|" %}
Есть ли другой способ сделать это?
Ответы
Ответ 1
Frontmatter
Это хороший обходной путь, добавьте в начало вашего файла:
---
my_array:
- one
- two
- three
---
тогда используйте это как:
{{ page.my_array }}
Аналогично сайту site.data.my_array
для _config
или в _data/some_file.yml
.
Обновление Jekyll 3 для макетов
Если frontmatter - это макет, вам нужно использовать:
{{ layout.style }}
вместо. См.: fooobar.com/questions/195125/...
Ответ 2
Есть ли другой способ сделать это?
Нет, ваш фильтр split
- это способ сделать это.
Ответ 3
Вот еще один способ сделать это, сначала используя метод capture
как дружественный способ присваивать значения, разделенные символом новой строки, переменной, а затем преобразовывать эту переменную в массив с параметром assign
и несколькими фильтрами:
{% capture my_array %}
one
two
three
{% endcapture %}
{% assign my_array = my_array | strip | newline_to_br | strip_newlines | split: "<br />" %}
Фильтры делают следующее:
-
strip
удаляет начальные пробелы перед one
и завершающие пробелы после three
. -
newline_to_br
заменяет переводы строк тегами <br/>
. -
strip_newlines
удаляет возможные посторонние символы новой строки. -
split
преобразует строку в массив, используя <br/>
в качестве разделителя.