Для преобразования выходных данных можно использовать фильтры. Фильтры это обычные функции.
Первый аргумент пишется слева от имени фильтра и отделяется от него символом "|" (труба).
Результатом работы фильтра является преобразованный элемент, который подставляется в это место текста.
Исходные данные, например значения переменных, которые являлись аргументом фильтра, сохраняют своё прежнее значение.
Привет, {{ name | upcase }}!
В слове 'магазин' {{ 'магазин' | length }} букв
{{ product.price | money }}
Результат выполнения фильтра может быть первым аргументом для следующего фильтра, находящегося справа от него, если таковой имеется.
{{ array | sort | last }}
Если у фильтра больше одного аргумента, то остальные аргументы перечисляются справа от имени фильтра после символа ":" (двоеточие) через запятую:
{{ 'Яндекс' | link_to: 'http://yandex.ru' }} => <a href="http://yandex.ru" title="">Яндекс</a>
{{ 'Яндекс' | link_to: 'http://yandex.ru', 'ссылка на яндекс' }} => <a href="http://yandex.ru" title="ссылка на яндекс">Яндекс</a>
Далее словом input обозначается первый аргумент фильтра; тот, что записывается слева от названия фильтра, словом array - массив; словом text - текстовая последовательность символов.
Фильтр используется для преобразования первой буквы строки в заглавную
Пример:
@ {{ 'string' | capitalize }} #=> String @
Фильтр используется для преобразовывания специальных и национальных символов в URL представление (percent-encoding: пробел в %20, например) в тексте ссылки. Это необходимо, согласно стандарта RFC1738 - Uniform Resource Locators (URL).
Пример:
@ {{ link.title | escape }} @ {{ http://wiki.insales.ru/Оглавление | escape }} #=> http://wiki.insales.ru/%D0%9E%D0%B3%D0%BB%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5
Фильтр используется для добавления указанных символов к концу указанной строки.
Пример:
@ {{ 'sales' | append: '.jpg' }} #=> sales.jpg @
Фильтр используется для добавления указанных символов к началу указанной строки.
Возвращает размер массива или строки.
Пример:
@ {{ 'this is an 30 character string' | size }} #=> 30 @
Фильтр используется для сортировки массива. Второй параметр - необязательный.
Пример: {% assign characteristics_sort = property.characteristics | sort: 'title' %}
{% for property in collection.properties %} <p><b>{{property.title}}:</b> {% assign characteristics_sort = property.characteristics | sort: 'title' %} {% for characteristic in characteristics_sort %} <span>{{characteristic.title}} </span> {% endfor %} </p> {% endfor %}
Отсортирует значения параметров по названию.
Фильтр объединяет массив в строку, используя как разделитель элементов указанную последовательность символов.
Пример:
@ {{ product.tags | join: ', ' }} #=> wooden, deepsnow, season2006 @
Разбивает строку на массив подстрок по указанному разделителю
Пример:
@ {% assign string = 'wooden, deepsnow, season2006' %} @ {% assign array = string | split: ', '%} @ {{array[0]}} #=> wooden
Фильтр преобразовывает строку к нижнему регистру.
Пример:
@ {{ 'StRiNg' | downcase }} #=> string @
Фильтр преобразовывает строку к верхнему регистру.
Пример:
@ {{ 'StRiNg' | upcase }} #=> STRING @
Этот фильтр изымает из указанного текста все HTML-теги. Очень эффективен в сочетании с truncate.
Фильтр изымает из указанной последовательности символов служебный символ "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).
Фильтр укорачивает строки до указанного количества символов удалением конца строки.
В случае, если обрабатываемый текст содержит HTML-теги, можно сперва применить фильтр strip_html(см. выше).
Фильтр укорачивает строку до указанного количества символов удалением конца строки.
Фильтр преобразует формат даты в указанный (все даты - григорианского календаря)
%a - Сокращённое обозначение дня недели %A - Полное обозначение дня недели %b - Сокращённое обозначение названия месяца %B - Полное обозначение названия месяца %c - Предпочтительное местное представление даты и времени %d - День месяца (01..31) %H - Час суток, 24-часовое представление (00..23) %I - Час суток, 12-часовое представление (01..12) %j - Номер дня года (001..366) %m - Номер месяца года (01..12) %M - Номер минуты часа (00..59) %p - Указатель времени суток (``AM'' or ``PM'') ''после полудня'' или ''до полудня'' соответственно %S - Секунда минуты (00..60) %U - Неделя текущего года, начиная с первого воскресенья года как первого дня первой недели (00..53) %W - Неделя текущего года, начиная с первого понедельника года как первого дня первой недели (00..53) %w - Номер дня недели (Воскресенью соответствует 0, 0..6) %x - Предпочтительное представление только даты, без указания времени %X - Предпочтительное представление только времени, без указания даты %y - Номер года двузначный (00..99) %Y - Номер года четырёхзначный %Z - Имя временной зоны %% - Обозначает символ ``%''
{{ 'now' | date: "%Y" }}
выведет текущий год в четырёхзначном формате (другие параметры текущей даты, выводятся аналогично)
Фильтр возвращает первый элемент из массива
Пример:
{{ product.images | first }}
Фильтр возвращает элемент из массива
Пример:
{{ product.images | last }}
Фильтр добавляет тег конца строки <br /> перед каждым служебным символом "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).
Фильтр заменяет все вхождения в input последовательности substring на последовательность replacement
Пример:
{{ product.description | replace: 'super', 'mega' }}
Фильтр заменяет первое вхождение в input последовательности substring на последовательность replacement
Пример:
{{ product.description | replace_first: 'super', 'mega' }}
Фильтр удаляет из input все вхождения последовательности substring
Пример:
{{ product.description | remove: 'way too expensive'}}
Фильтр удаляет из input первое вхождение последовательности substring
Пример:
{{ product.description | remove_first: 'remove-me'}}
Фильтр возвращает результат сложения input и operand. Если это строки, то они приводятся к формату "целое" перед сложением.
Пример:
Showing {{ paginate.current_offset }}-{{ paginate.current_offset | plus: paginate.page_size }} items
Фильтр возвращает результат вычитания operand из input. Если это строки, то они приводятся к формату "целое" перед вычитанием.
Пример:
{{ product.price | minus: 10 | money }}
Фильтр возвращает результат округления operand до input знаков после разделителя.
Пример:
{{ product.price | round: 2 | money }}
Фильтр возвращает результат умножеия input и operand.
Пример:
{{ 5 | times:4 }} #=> 20 {{ '5' | times:'4' }} #=> 20
Для обычных строк операция не работает:
{{ 'foo' | times:4 }} #=> 0 а не 'foofoofoofoo'
Фильтр возвращает результат деления input на operand.
Пример:
{{ 10 | divided_by:2 }} #=> 5
В ПО InSales дополнительно к стандартным реализовано несколько специфических фильтров.
Фильтр формирует полный путь до ассета темы
{{ 'reset.css' | asset_url }}
Фильтр формирует полный путь до глобального ассета (файлы, доступные для всех магазинов)
{{ 'shadowbox/shadowbox.js' | global_asset_url }}
Фильтр формирует полный путь до файла из раздела Сайт->Файлы
{{ 'image.png' | file_url }}
Фильтр выводит сумму денег
{{product.sale_price | money}}
Фильтр преобразует URL с учетом текущего языка (нужно только в мультиязычных магазинах)
{{'/page/about' | locale_url}}