Liquid

Материал из Insales Wiki
Перейти к: навигация, поиск

Введение

Язык шаблонов Liquid был разработан компанией jadedPixel в рамках проекта shopify.com и сейчас является open source проектом, более подробная информация о нем, а так же полная документация на английском языке находится на сайте http://www.liquidmarkup.org/. Более подробная инструкция http://wiki.github.com/tobi/liquid/liquid-for-designers .


Вывод данных

Пример вывода данных:

 Привет, {{ name }}!
Привет, {{ user.name }}!
Привет, {{ 'Имярек' }}!


Фильтры

Фильтры - это набор функций, которыми можно преобразовать вывод данных, например:

 Привет, {{ name | upcase }}!
 В слове 'магазин' {{ 'магазин' | length }} букв
 {{ product.sale_price | money }} 

Можно использовать несколько фильтров подряд:

 {{ array | sort | last }} 


Список стандартных фильтров

  • capitalize – сделать первую букву строки заглавной
  • date – преобразовать дату в нужный формат
  • downcase – привести строку к нижнему регистру
  • first – вернуть первый элемент массива
  • join – соединить элементы массива в строку
  • last – вернуть последний элемент массива
  • size – вернуть размер массива или строки
  • sort – отсортировать массив
  • strip_html – вырезать html-теги
  • truncate – обрезать строку до x символов
  • truncatewords - обрезить строку до x слов
  • upcase – привести строку к верхнему регистру

Теги

Теги используются для управления выводом в шаблоне.

Комментарии

{% comment %} закомментированный текст {% endcomment %}

Условия if / else

{% if user %}
  Привет {{ user.name }}
{% endif %}



Цикл For

Цикл для обхода массивов

{% for item in array %} 
  {{ item }}
{% endfor %}

При обходе массива доступны дополнительные переменные:

 forloop.length      # => количество элементов в массиве
 forloop.index       # => номер текущей итерации 
 forloop.index0      # => номер текущей итерации (считая от нуля) 
 forloop.rindex      # => сколько элементов осталось
 forloop.rindex0     # => сколько элементов осталось (считая от нуля)
 forloop.first       # => первая итерация?
 forloop.last        # => последняя итерация?

Можно задавать сдвиг и максимальное числое элементов для обхода:

# array = [1,2,3,4,5,6]
{% for item in array limit:2 offset:1 %} 
  {{ item }}
{% endfor %}
# 2,3

Таблицы

По аналогии с циклом for можно создавать таблицы:

  {% tablerow item in items cols: 2 limit: 6 %}
    {{ item }}
  {% endtablerow %}
 Дополнительные переменные, доступные при обходе массива:
 tablerowloop.length       # => количество элементов в массиве
 tablerowloop.index        # => номер текущей итерации 
 tablerowloop.index0       # => номер текущей итерации (считая с нуля) 
 tablerowloop.rindex       # => сколько элементов осталось
 tablerowloop.rindex0      # => сколько элементов осталось (считая  с нуля)
 tablerowloop.first        # => первый элемент?
 tablerowloop.last         # => последний элемент? 
 tablerowloop.col          # => номер колонки в текущей строчке
 tablerowloop.col0         # => номер колонки в текущей строчке (считая с нуля)
 tablerowloop.col_first    # => первая колонка?
 tablerowloop.col_last     # => последняя колонка?