Фильтры Liquid

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


Для преобразования выходных данных используются фильтры. Фильтр имеет следующий синтаксис: данные | имя_фильтра [:необязательные параметры фильтра].
В качестве данных могут использоваться константы, переменные и результаты выполнения других фильтров. В последнем случае организуется цепочка фильтров.

Примеры использования фильтров:

Привет, {{ name | upcase }}!
В слове 'магазин' {{ 'магазин' | length }} букв
Цена товара {{ product.price | money }} 
Сегодня {{ now | date: "%Y %b %d" }}
Описание товара без html тегов и длинной до 20 символов: {{ product.description | strip_html | truncate: 20 }}

Результатом выполнения кода будет:

Привет, Александр!
В слове 'магазин' 7 букв
Цена товара $10 
Сегодня 2012 Янв 01
Описание товара без html тегов и длинной до 20 символов: apple iphone 4s white 32gb


Содержание

Стандартные фильтры Liquid

date

Преобразует дату к различным форматам.

Пример:

Сегодня {{ now | date: "%Y %b %d" }}

Результат выполнения кода:

Сегодня 2012 Янв 01

Список возможных параметров:

%a - Аббревиатура дня недели ('Пон')
%A - Полное название дня недели ('Понедельник')
%b - Аббревиатура названия месяца ('Янв')
%B - Полное название месяца ('Январь')
%c - Текущее дата и время в полном формате (Пон Янв 01 11:00:00 2012)
%d - День месяца (01..31)
%H - Час дня, 24-часовой формат (00..23)
%I - Час дня, 12-часовой формат (01..12)
%j - День года (001..366)
%m - Месяц года (01..12)
%M - Минута часа (00..59)
%p - Индикатор полудня ('AM'  или  'PM')
%S - Секунда минуты (00..60)
%U - Номер недели текущего года, начиная с первого Воскресенья как первого дня первой недели (00..53)
%W - Номер недели текущего года, начиная с первого Понедельника как первого дня первой недели (00..53)
%w - День недели (Воскресенье это 0, 0..6)
%x - Текущее дата в полном формате, без времени (01/31/12)
%X - Текущее время в полном формате, без даты (11:00:00)
%y - Год без столетия (00..99)
%Y - Год со столетием (2012)
%Z - Имя временной зоны
%% - Литерал символа '%'

capitalize

Преобразует первую букву входной строки к верхнему регистру (делает ее заглавной).

Пример:

<span>название варианта: {{ variant.title | capitalize }}</span>

Результат выполнения кода:

название варианта: Синяя майка

Обратите внимание что преобразуется только первая буква, если Вам необходимо преобразовать к верхнему каждое слово строки то необходимо использовать CSS трансформацию.
Информация о CSS трансформациях на w3schools.com: http://www.w3schools.com/Css/pr_text_text-transform.asp

downcase

Преобразует входную строку к нижнему регистру (все символы прописными).

Пример:

<span>{{ 'Привет МИР' | downcase }}</span>

Результат выполнения кода:

привет мир

upcase

Преобразует входную строку к верхнему регистру (все символы заглавными).

Пример:

<span>{{ 'Привет МИР' | upcase }}</span>

Результат выполнения кода:

ПРИВЕТ МИР

first

Возвращает первый элемент переданного массива.

Пример:

{{ product.images | first }}

last

Возвращает последний элемент переданного массива.

Пример:

{{ product.images | last }}

join

Объединяет элементы массива переданным символом

Пример:

{{ product.view.title | join: ', ' }}

Результат выполнения кода:

galaxy 2, iphone 4s

sort

Cортирует элементы массива по возрастанию (в порядке увлечения значения элементов).

Пример использования фильтра:

{{ product.view.title | sort | join: ', ' }}

Результат выполнения кода:

galaxy 2, iphone 4s

map

Для каждого элемента массива вызывает метод указный как параметр и возвращает массив с результатом вызовов:

Пример использования фильтра:

{{ products | map: 'view'  | map: 'title'  | join: ', ' }}

Результат выполнения кода:

galaxy 2, iphone 4s

size

Возвращает количество элементов массива или строки.

Пример:

{{ 'эта строка содержит 27 букв' | size }}

Результат выполнения кода:

27

escape

Экранирует в строке специальные символы HTML: &"<> .

Пример:

{{ 'foo "bar" <baz>' | escape }}

Результат выполнения кода:

'foo &quot;bar&quot; &lt;baz&gt;'

escape_once

Экранирует в строке специальные символы HTML: &"<> . Не меняет специальные символы HTML, которые уже экранированы.

Пример:

{{ '1 < 2 &amp; 3' | escape_once }}

Результат выполнения кода:

'1 &lt; 2 &amp; 3'

strip_html

Удаляет все html теги из переданной строки текста.

Пример:

{{ '<span class="red_label">Отличное описание продукта.</span>' | strip_html }}

Результат выполнения кода:

'Отличное описание продукта.'

strip_newlines

Удаляет все символы новая строка (\n) из переданной строки текста.

Пример:

{{ 'отличное описание\n\n' | strip_newlines }}

Результат выполнения кода:

'отличное описание'

newline_to_br

Заменяет все символы новая строка (\n) на html тег br.

Пример:

{{ 'отличное описание\n\n' | newline_to_br }}

Результат выполнения кода:

'отличное описание<br/><br/>'

replace

Заменяет каждое вхождение подстроки на другую подстроку.

Пример:

{{ 'foofoo' | replace:'foo','bar' }}

Результат выполнения:

'barbar'

replace_first

Заменяет первое вхождение подстроки на другую подстроку.

Пример:

{{ 'barbar' | replace_first:'bar','foo' }}

Результат выполнения:

'foobar'

remove

Удаляет из строки каждое вхождение подстроки

Пример:

{{ 'foobarfoobar' | remove:'foo' }}

Результат выполнения:

'barbar'

remove_first

Удаляет из строки первое вхождение подстроки.

Пример:

{{ 'barbar' | remove_first:'bar' }}

Результат выполнения:

'bar'


truncate

Обрезает строку до X символов. Второй необязательный параметр позволяет задать что Вы хотите добавлять в конце обрезанной строки вместо '...' .

Пример:

{{ '123456789' | truncate: 5 }}
{{ '123456789' | truncate: 5, '' }}

Результат выполнения:

'12345...'
'12345'

truncatewords

Обрезает строку до X слов. Второй необязательный параметр позволяет задать что Вы хотите добавлять в конце обрезанной строки вместо '...' .

Пример:

{{ 'one two three' | truncatewords: 2 }}
{{ 'one two three' | truncatewords: 2, '' }}

Результат выполнения:

'one two...'
'one two'

prepend

Добавляет подстроку в начало строки.

Пример:

{{ 'bar' | prepend:'foo' }}

Результат выполнения:

'foobar'

append

Добавляет подстроку к концу строки.

Пример:

{{ 'foo' | append:'bar' }}

Результат выполнения:

'foobar'

minus

Производит математическую операцию вычитание.

Пример:

{{ 4 | minus:2 }}

Результат выполнения:

2

plus

Производит математическую операцию сложение.

Пример:

{{ '1' | plus:1 }}
{{ 1 | plus:1 }}

Результат выполнения:

'11'
2

times

Производит математическую операцию умножение.

Пример:

{{ 5 | times:4 }}

Результат выполнения:

20

divided_by

Производит математическую операцию деление.

Пример:

{{ 10 | divided_by:2 }}

Результат выполнения:

5

split

Разбивает строку на основе переданного патерна и возвращает массив строк.

Пример:

{{ "a~b" | split:~ }}

Результат выполнения:

['a','b']

Дополнительные фильтры

signature

Генерирует подпись для блока данных. В качестве параметра принимает время, в течение которого валидна подпись. Время в часах (hour, hours) или днях (day, days), например, 1 year или 5.days

Пример:

{{ "this is text for signing" | signature: '1.hour' }}

Результат выполнения:

20120822160960220f8a52fe4854b2f2853cc0ed2ed8

money

Выводит денежное значение. В качестве первого необязательного параметра принимает валюту (объект или код), в качестве второго необязательного параметра принимает точность. Если параметры не заданы используются данные активной валюты.

Пример:

Цена в активной валюте: {{ product.variants.first.price.current | money }}
Цена в рублях: {{ product.variants.first.price.current | money: 'RUB' }}

Результат выполнения:

Цена в активной валюте: $10
Цена в рублях: 350 руб.

translate

Подставить значение из словаря

Пример:

{{ 'This is test message' | translate }}.

Результат выполнения:

Это тестовое сообщение.

uri

Формирует ссылку. Принимает необязательные неименованные и именованные параметры.

Если в качестве неименованных параметров передаются объекты, то они используются как контекст к ссылке. Например, для формирования ссылки на новость, можно передавть качестве контекста ленту, и тогда ссылка будет сформирована с пределах указанной ленты.

Существуют специальные именованные параметры:

  • absolute - для формирования абсолютной ссылки
  • locale - для указания языка
  • query - для указания дополнительных параметров запроса (строка вида param1=value1&param2=value2 или массив вида ['param1', 'value1', 'param2', 'value2'])

Другие именованные параметры, рассматриваются как параметры запроса


В качестве обязательного параметра может выступать:

  • объект - для формирования ссылки на объект
  • urn:special:admin - ссылка на административную панель
  • urn:api:* - ссылка на API, где *, название контроллера и экшн (например urn:api:captcha/key.jsonp )
  • urn:action-type:* - ссылка на действие указанного типа, с наивысшим приоритетом, где *, название типа действия
  • имя действия (строка) - если специальная константа не указана, то строка интерпретируется как внутреннее название действия
  • ссылка - если ни один из вышеперечисленных вариантов не подходит, считается что передана ссылка


Пример:

Каноническая ссылка на товар: {{ product | uri }}
Cсылка на товар: {{ product | uri: category }}
Ссылка на страницу: {{ page | uri: feed }}
Ссылка на конкретное действие: {{ 'feedback' | uri }}
Ссылка с параметрами: {{ 'search' | uri: page: 1, per_page: 20, query:'query=test' }}
Ссылка на API: {{ 'urn:api:captcha/key.jsonp' | uri: query:'callback=myfunc' }}
Ссылка на действие определенного типа: {{ 'urn:action-type:manage_customer' | uri }}

Результат выполнения:

Каноническая ссылка на товар: /products/2345
Cсылка на товар: /category/4891/product/1012282
Ссылка на страницу: /feed/88/page/206
Ссылка на конкретное действие: /feedback
Ссылка с параметрами: /search?page=1&per_page=20&query=test
Ссылка на API: https://api1.cartenergy.ru/captcha/key.jsonp?callback=myfunc
Ссылка на действие определенного типа: /cusomer

md5

Генерация хэш-кода

Пример:

{{ 'Data' | md5 }}

Результат выполнения:

f6068daa29dbb05a7ead1e3b5a48bbee