Переменные liquid

Product

Переменные доступные в шаблоне product.liquid, а так же в цикле продуктов коллекции.

Смотреть видео об интеграции карточки товара.

Product

Данные о товаре

product.available Если ли товар в наличии. boolean

Если ли товар в наличии.
Liquid
        
          

{% if product.available %}
  Товар в наличии
  {% else %}
  Товара нет в наличии
{% endif %}

product.collections Список категорий, в которых выставлен товар. array

Список категорий, в которых выставлен товар.
Liquid
        
          

{% for collection in product.collections %}
  {{ collection.title }}
{% endfor %}

product.description Описание товара. <html>

Описание товара.
Liquid
        
          

На странице товара:
{{ product.description }}

 

Внутри массива товаров:
{% for product in collection.products %}
  {{ product.description }}
{% endfor %}

product.first_image Первое (основное) изображение товара. (small_url, thumb_url, compact_url, medium_url, large_url, original_url) string

Первое (основное) изображение товара. (small_url, thumb_url, compact_url, medium_url, large_url, original_url)
Liquid
        
          

Ссылка на первое изображение товара:
{{ product.first_image.medium_url }}

Имя первого изображения товара:
{{ product.first_image.title }}

Имя файла первого изображения товара:
{{ product.first_image.file_name}}

Возможные размеры:

48x48 small_url

100x100 thumb_url

160x160 compact_url

240x240 medium_url

480x480 large_url

original image original_url

 

product.handle Пермалинк товара (название товара в URL) string

Пермалинк товара (название товара в URL)
Liquid
        
          

Ссылка на товар - demo.myinsales.ru/product/my_product
{{ product.handle }}
>> my_product

product.id Идентификатор товара (уникальный числовой номер). number

Идентификатор товара (уникальный числовой номер).
Liquid
        
          

<form action="{{ cart_url }}" method="post" data-product-id="{{ product.id }}">
  {% if product.show_variants? %}
    <select name="variant_id" data-product-variants>
      {% for variant in product.variants %}
        <option value="{{ variant.id }}">{{ variant.title | escape }}</option>
      {% endfor %}
    </select>
  {% else %}
    <input type="hidden" name="variant_id" value="{{product.variants.first.id}}" >
  {% endif %}
  <input type="text" name="comment" value="">
  <div data-quantity>
    <input type="text" name="quantity" value="1" />
    <span data-quantity-change="-1">-</span>
    <span data-quantity-change="1">+</span>
  </div>
  <button type="submit" data-item-add>
    Добавить в корзину
  </button>
</form>

product.images Массив изображений товара Возможные размеры: 48x48 small_url 100x100 thumb_url 160x160 compact_url 240x240 medium_url 480x480 large_url original image original_url array

Массив изображений товара

Возможные размеры:

48x48 small_url

100x100 thumb_url

160x160 compact_url

240x240 medium_url

480x480 large_url

original image original_url
Liquid
        
          

<div class="images">
{% for image in product.images %}
  <div class="images-item">
    <img src="{{ image.large_url }}" alt="{{ image.title }} " />
  </div>
{% endfor %}
</div>

product.meta_description string

meta description страницы товара

Liquid
        
          

<meta name="description" content="{{ product.meta_description }}">

На всём сайте следует пользваться следующим примером:
<meta name="description" content="{{ description }}">

product.meta_keywords string

meta keywords страницы товара

Liquid
        
          

{% if product.meta_keywords %}
  Meta keywords страницы товара: {{ product.meta_keywords }}
{% endif %}

product.old_price number

Старая цена товара (цена до скидки).

Liquid
        
          

{% if product.old_price %}
  Старая цена: {{ product.old_price | money }}
{% endif %}

product.old_price_max number

Максимальная старая цена товара (если несколько модификаций).

Liquid
        
          

{% if product.old_price_varies? %}
  {{ product.old_price_min }} - {{ product.old_price_max }}
  {% else %}
  {{ product.old_price }}
{% endif %}

product.old_price_min number

Минимальная старая цена товара (если несколько модификаций).

Liquid
        
          

{% if product.old_price_varies? %}
  {{ product.old_price_min }} - {{ product.old_price_max }}
  {% else %}
  {{ product.old_price }}
{% endif %}

product.old_price_varies? boolean

Отличаются ли старые цены на модификации у товара (если несколько модификаций).

Liquid
        
          

{% if product.old_price_varies? %}
  {{ product.old_price_min }} - {{ product.old_price_max }}
  {% else %}
  {{ product.old_price }}
{% endif %}

product.options array

Свойства товара. Например, вывод всех свойств товара вместе с их значениями

Liquid
        
          

{% for option in product.options %}
  {{ option.title }} : {% for value in option.values %}{{ value.title }}{% unless forloop.last %},{% endunless %}{% endfor %}
{% endfor %}

product.price number

Цена товара (минимальная цена, если несколько модификаций).

Liquid
        
          {{ product.price | money }}
        
      

product.price_max number

Максимальная цена товара (если несколько модификаций).

Liquid
        
          

{% if product.price_varies? %}
  от {{ product.price_min | money }} до {{ product.price_max | money }}
{% endif %}

product.price_min number

Минимальная цена товара (если несколько модификаций).

Liquid
        
          

{% if product.price_varies? %}
  от {{ product.price_min | money }} до {{ product.price_max | money }}
{% endif %}

product.price_varies? boolean

Отличаются ли цены на модификации у товара (если несколько модификаций).

Liquid
        
          

{% if product.price_varies? %}
  от {{ product.price_min | money }} до {{ product.price_max | money }}
{% endif %}

product.properties object

Параметры товара.

Liquid
        
          

{% for property in product.properties %}
  {{property.name}}: {% for item in property.characteristics %}{{item.name}},{% endfor %}
{% endfor %}

Так же можно обращаться к параметру напрямую, зная его пермалинк (handle):

{{ product.properties.handle.characteristics.first.name }}

product.rating number

Рейтинг товара, основанный на отзывах.

Liquid
        
          

{% if product.rating %}
  Рейтинг товара: {{ product.rating }} 
{% endif %}

product.related_products array

Сопутствующие товары.

Liquid
        
          

{% if product.related_products.size > 0 %}
  <div class="related_products">
    <div class="related_products-title">
      Сопутствующие товары
    </div>
    <div class="related_products-slider">
      {% for product in product.related_products %}
        <div class="product_preview">
          <div class="product_preview-img">
            <a href="{{ product.url }}">
              <img src="{{ product.first_image.large_url }}" alt="{{ product.title }}" />
            </a>
          </div>
          <div class="product_preview-price">
            {{ product.price | money }}
          </div>
          <div class="product_preview-title">
            <a href="{{ product.url }}">
              {{ product.title }}
            </a>
          </div>
        </div>
      {% endfor %}
    </div>
  </div>
{% endif %}

product.reviews array

Массив отзывов на товар 

Liquid
        
          

{% if account.reviews_enabled? %}
  {% if product.reviews == empty %}
    <div class="notice notice--info">
      Пока нет отзывов
    </div>
  {% else %}
  <ul class="reviews-list">
    {% for review in product.reviews %}
    <li class="review">
      <div class="review-details">
        <span class="review-name">{{ review.author }}</span> {{ review.created_at | date: "%d.%m.%Y %H:%M" }}
      </div>
      
      <div class="review-content">
        {{ review.content | newline_to_br }}
      </div>
      
      {% if review.rating %}
      <div class="review-rating rating">
        Оценка: {{ review.rating }}
      </div>
      {% endif %}
    </li>
    {% endfor %}
  </ul>
  {% endif %}
{% endif %}

product.reviews_count number

Количество отзывов на товар.

Liquid
        
          

{% if product.reviews_count > 0 %}
<ul class="reviews-list">
    {% for review in product.reviews %}
    <li class="review">
      <div class="review-details">
        <span class="review-name">{{ review.author }}</span> {{ review.created_at | date: "%d.%m.%Y %H:%M" }}
      </div>
      
      <div class="review-content">
        {{ review.content | newline_to_br }}
      </div>
      
      {% if review.rating %}
      <div class="review-rating rating">
        Оценка: {{ review.rating }}
      </div>
      {% endif %}
    </li>
    {% endfor %}
  </ul>
{% endif %}

product.short_description string

Краткое описание товара.

Liquid
        
          

{% if product.short_description %}
  <div class="product-short_description">
    {{ product.short_description }}
  </div>
{% endif %}

product.show_variants? boolean

Есть ли модификации для отображения (true, если больше одной, либо если одна и она не является дефолтной базовой модификацией).

Liquid
        
          

{% if product.show_variants? %}
  <div class="product-variants">
    <select name="variant_id" id="variant-select">
      {% for variant in product.variants %}
        <option value="{{ variant.id }}">{{ variant.title | escape }}</option>
      {% endfor %}
    </select>
  </div>
{% else %}
  <input type="hidden" name="variant_id" value="{{ product.variants.first.id }}" />
{% endif %}

product.similar_products array

Аналогичные товары.

Liquid
        
          

{% if product.similar_products.size > 0 %}
  <div class="similar_products">
    <div class="similar_products-title">
      Аналогичные товары
    </div>
    <div class="similar_products-slider">
      {% for product in product.similar_products %}
        <div class="product_preview">
          <div class="product_preview-img">
            <a href="{{ product.url }}">
              <img src="{{ product.first_image.large_url }}" alt="{{ product.title }}" />
            </a>
          </div>
          <div class="product_preview-price">
            {{ product.price | money }}
          </div>
          <div class="product_preview-title">
            <a href="{{ product.url }}">
              {{ product.title }}
            </a>
          </div>
        </div>
      {% endfor %}
    </div>
  </div>
{% endif %}

product.title string

Название товара.

Liquid
        
          

<div class="product">
  <div class="product-title">
    {{ product.title }}
  </div>
  {% if product.description %}
  <div class="product-description">
    {{ product.description }}
  </div>
  {% endif %}
</div>

product | json object

JSON-объект товара.

js
        
          

// результат функции console.log({{product | json}}), использовать можно только в ликвид файле, а именно шаблоне product.liquid

{
 'id': 60749685,
 'url': '/collection/napitki/product/mokkachino',
 'title': 'Моккачино',
 'short_description': 'Мокаччи́но — кофейный напиток, созданный в Америке и являющийся разновидностью латте с добавлением шоколада.',
 'available': true,
 'unit': 'pce',
 'permalink': 'mokkachino',
 'images': [ {
   'created_at': '2016-06-16T14:06:21+03:00',
   'id': 82136971,
   'image_processing': false,
   'position': 1,
   'product_id': 60749685,
   'title': null,
   'url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/thumb_Mokkachino.jpg',
   'original_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/Mokkachino.jpg',
   'medium_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/medium_Mokkachino.jpg',
   'small_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/micro_Mokkachino.jpg',
   'thumb_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/thumb_Mokkachino.jpg',
   'compact_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/compact_Mokkachino.jpg',
   'large_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/large_Mokkachino.jpg',
   'filename': 'Mokkachino.jpg'
  } ],
 'first_image': {
  'created_at': '2016-06-16T14:06:21+03:00',
  'id': 82136971,
  'image_processing': false,
  'position': 1,
  'product_id': 60749685,
  'title': null,
  'url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/thumb_Mokkachino.jpg',
  'original_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/Mokkachino.jpg',
  'medium_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/medium_Mokkachino.jpg',
  'small_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/micro_Mokkachino.jpg',
  'thumb_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/thumb_Mokkachino.jpg',
  'compact_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/compact_Mokkachino.jpg',
  'large_url': 'https://static-eu.insales.ru/images/products/1/3979/82136971/large_Mokkachino.jpg',
  'filename': 'Mokkachino.jpg'
 },
 'category_id': 4911689,
 'canonical_url_collection_id': 5681718,
 'price_kinds': [ ],
 'option_names': [ {
   'id': 612392,
   'position': 1,
   'title': 'Размер'
  } ],
 'properties': [ {
   'backoffice': false,
   'id': 2018587,
   'is_hidden': false,
   'is_navigational': true,
   'position': 2,
   'permalink': 'ingredient',
   'title': 'Ингредиент'
  } ],
 'characteristics': [ {
   'id': 19611934,
   'property_id': 2018587,
   'position': 1,
   'title': 'шоколад',
   'permalink': 'shokolad'
  } ],
 'variants': [ {
   'id': 95292397,
   'available': true,
   'product_id': 60749685,
   'title': 'Стандарт',
   'base_price': '120.0',
   'prices': [   ],
   'price': '120.0',
   'old_price': null,
   'sku': null,
   'barcode': null,
   'option_values': [   {
     'id': 5954429,
     'option_name_id': 612392,
     'position': 8,
     'title': 'Стандарт'
    }   ],
   'quantity': null,
   'weight': null,
   'created_at': '2016-06-16T14:06:10+03:00',
   'updated_at': '2016-06-16T14:08:29+03:00'
  }, {
   'id': 95292614,
   'available': true,
   'product_id': 60749685,
   'title': 'Большой',
   'base_price': '150.0',
   'prices': [   ],
   'price': '150.0',
   'old_price': null,
   'sku': null,
   'barcode': null,
   'option_values': [   {
     'id': 5954430,
     'option_name_id': 612392,
     'position': 9,
     'title': 'Большой'
    }   ],
   'quantity': null,
   'weight': null,
   'created_at': '2016-06-16T14:08:40+03:00',
   'updated_at': '2016-06-16T14:08:44+03:00'
  } ]
}

product.unit string

Единица измерения товара. Доступные значения: "шт", "кг", "л; дм3", "м", "м2", "г", "т"

Liquid
        
          

{{ product.unit }}
>> шт

product.url string

URL продукта

Liquid
        
          

{% for product in collection.products %}
  <a href="{{ product.url }}">{{ product.title }}</a>
{% endfor %}

product.variants array

Модификации товара.

Liquid
        
          

{% if product.show_variants? %}
  <div class="product-variants">
    <select name="variant_id" id="variant-select">
      {% for variant in product.variants %}
        <option value="{{ variant.id }}">{{ variant.title | escape }}</option>
      {% endfor %}
    </select>
  </div>
{% else %}
  <input type="hidden" name="variant_id" value="{{ product.variants.first.id }}" />
{% endif %}

product.fields object

возвращает дополнительные поля товара в формате пермалинк:значение. Например, есть поле "Название книги", с пермалинком - "book" и со значением для конкретного товара "Как увеличить продажи в интернете"

Liquid
        
          

{{ product.fields.book.value }},{{ product.fields.book.title }}

>> "Как увеличить продажи в интернете","Название книги"

product.is_bundle Является ли товар комплектом? boolean

Является ли товар комплектом?
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    <div class="bundle-title">
      Состав комплекта:
    </div>
    <div class="bundle-list">
      {% for bundle_component in product.bundle_components %}
      <div class="bundle-item">
        <div class="bundle-img">
          <img src="{{ bundle_component.product.first_image.medium_url }}" />
        </div>
        <div class="bundle-name">
          {{ bundle_component.product.title }}
        </div>
        <div class="bundle-price">
          {% if bundle_component.is_free %}
            В подарок
            {% else %}
            {{ bundle_component.quantity }} × {{ bundle_component.product.sale_price | money }}
          {% endif %}
        </div>
      </div>
      {% endfor %}
    </div>
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
        Экономия: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

product.bundle_components Массив товаров входящих в комплект. array

Массив товаров входящих в комплект.
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    <div class="bundle-title">
      Состав комплекта:
    </div>
    <div class="bundle-list">
      {% for bundle_component in product.bundle_components %}
      <div class="bundle-item">
        <div class="bundle-img">
          <img src="{{ bundle_component.product.first_image.medium_url }}" />
        </div>
        <div class="bundle-name">
          {{ bundle_component.product.title }}
        </div>
        <div class="bundle-price">
          {% if bundle_component.is_free %}
            В подарок
            {% else %}
            {{ bundle_component.quantity }} × {{ bundle_component.product.sale_price | money }}
          {% endif %}
        </div>
      </div>
      {% endfor %}
    </div>
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
        Экономия: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

product.bundle_discount Разница между ценой за комплект и суммой всех товаров комплекта. Например если комплект стоит 500 р., а сумма всех товаров комплетка 1200 р., product.bundle_discount => 700 р.. Если комплект стоит 5000 р., а сумма всех товаров комплетка 2000 р., product.bundle_discount => -3000 р.. number

Разница между ценой за комплект и суммой всех товаров комплекта.
Например если комплект стоит 500 р., а сумма всех товаров комплетка 1200 р., product.bundle_discount => 700 р..
Если комплект стоит 5000 р., а сумма всех товаров комплетка 2000 р., product.bundle_discount => -3000 р..
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
      Экономия при покупке комплекта: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

product.canonical_collection Каноническая категория товара object

Каноническая категория товара
Liquid
        
          

<a href="{{ product.canonical_collection.url }}">
  {{ product.canonical_collection.title }}
</a>

product.base_price Значение типа базовой(первой) типа цены. Актуально если используются дополнительные(priceN) типы цен в разделе Настройки - Типы цен number

Значение типа базовой(первой) типа цены. Актуально если используются дополнительные(priceN) типы цен в разделе Настройки - Типы цен

Значение типа базовой(первой) типа цены. Актуально если используются дополнительные(priceN) типы цен в разделе Настройки - Типы цен

product.related_articles Список статей, к которым привязан товар array

Список статей, к которым привязан товар

product.variants.size Количество модификаций number

Количество модификаций
Liquid
        
          

Кол-во модификаций: {{ product.variants.size }} 

product.dimensions Габариты object

Габариты
Liquid
        
          

{{product.dimensions.width}}x{{product.dimensions.depth}}x{{product.dimensions.height}}

product.updated_at Дата обновления товара date

Дата обновления товара
Liquid
        
          

{{ product.updated_at | date: '%d.%m.%y' }}

product.related_bundles Комплекты в которые входит данный товар array

Комплекты в которые входит данный товар

product.related_bundles - является массивом комплектов.

Liquid
        
          

Можно купить в комплекте:

{% for related_bundle in product.related_bundles %}
<div class="bundle">
  <a href="{{ related_bundle.url }}" class="bundle-title">
    Комплект: {{ related_bundle.title }}
  </a>
  <div class="bundle-list">
    Состав комплекта: 
    {% for bundle_component in related_bundle.bundle_components %}
      <div>
        {{ bundle_component.product.title }}
      </div>
    {% endfor %}
  </div>
</div>
{% endfor %}

variant in product.variants

Модификации товара

variant.id Id модификации number

Id модификации
Liquid
        
          

{% if product.show_variants? %}
  <div class="product-variants">
    <select name="variant_id" id="variant-select">
      {% for variant in product.variants %}
        <option value="{{ variant.id }}">{{ variant.title | escape }}</option>
      {% endfor %}
    </select>
  </div>
{% else %}
  <input type="hidden" name="variant_id" value="{{ product.variants.first.id }}" />
{% endif %}

variant.available boolean

Есть ли в наличии

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      <div class="variant-available">
        {% if variant.available %}
          {% assign variant_available = 'в наличии' %}
          {% else %}
          {% assign variant_available = 'нет в наличии' %}
        {% endif %}
        Наличие: {{ variant_available }}
      </div>
    </div>
  {% endfor %}
  </div>
</div>

variant.weight number

Вес модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      {% if variant.weight %}
        <div class="variant-old_price">
          Вес модификации: {{ variant.weight }} {{ product.unit }}
        </div>
      {% endif %}
    </div>
  {% endfor %}
  </div>
</div>

variant.title string

Название модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      <div class="variant-available">
        {% if variant.available %}
          {% assign variant_available = 'в наличии' %}
          {% else %}
          {% assign variant_available = 'нет в наличии' %}
        {% endif %}
        Наличие: {{ variant_available }}
      </div>
      <div class="variant-quantity">
        {% if variant.quantity %}
          {% assign variant_quantity = variant.quantity %}
          {% else %}
          {% assign variant_quantity = 'много' %}
        {% endif %}
        Остаток: {{ variant_quantity }}
      </div>
      {% if variant.sku %}
        <div class="variant-sku">
          Артикул: {{ variant.sku }}
        </div>
      {% endif %}
      {% if variant.barcode %}
        <div class="variant-barcode">
          Штрих-код: {{ variant.barcode }}
        </div>
      {% endif %}
      <div class="variant-price">
        Цена модификации: {{ variant.price | money }}
      </div>
      {% if variant.old_price %}
        <div class="variant-old_price">
          Старая цена модификации: {{ variant.old_price | money }}
        </div>
      {% endif %}
      {% if variant.weight %}
        <div class="variant-old_price">
          Вес модификации: {{ variant.weight }} {{ product.unit }}
        </div>
      {% endif %}
    </div>
  {% endfor %}
  </div>
</div>

variant.price number

Цена модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      <div class="variant-price">
        Цена модификации: {{ variant.price | money }}
      </div>
    </div>
  {% endfor %}
  </div>
</div>

variant.option_values array

Массив значений свойств товара, характеризующих данную модификацию.

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-option_values">
  {% for variant in product.variants %}
    <div>
      Модификация: {{ variant.title }}
    </div>
    <div>
      Свойства модификации:
    </div>
    {% for option_value in variant.option_values %}
      <div>
        {{ option_value.option_name.title }}: {{ option_value.title }}
      </div>
    {% endfor %}
  {% endfor %}
  </div>
</div>

variant.old_price number

Старая цена модификации.

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      {% if variant.old_price %}
        <div class="variant-old_price">
          Старая цена модификации: {{ variant.old_price | money }}
        </div>
      {% endif %}
    </div>
  {% endfor %}
  </div>
</div>

variant.barcode string

Штрих-код модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      {% if variant.barcode %}
        <div class="variant-barcode">
          Штрих-код: {{ variant.barcode }}
        </div>
      {% endif %}
    </div>
  {% endfor %}
  </div>
</div>

variant.quantity number

Остатки модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      <div class="variant-quantity">
        {% if variant.quantity %}
          {% assign variant_quantity = variant.quantity %}
          {% else %}
          {% assign variant_quantity = 'много' %}
        {% endif %}
        Остаток: {{ variant_quantity }}
      </div>
    </div>
  {% endfor %}
  </div>
</div>

variant.sku string

Артикул модификации

Liquid
        
          

<div class="variants">
  <div class="variants-title">
    Модификации товара:
  </div>
  <div class="variants-list">
  {% for variant in product.variants %}
    <div class="variant">
      <div class="variant-title">
        Имя модификации: {{ variant.title }}
      </div>
      {% if variant.sku %}
        <div class="variant-sku">
          Артикул: {{ variant.sku }}
        </div>
      {% endif %}
    </div>
  {% endfor %}
  </div>
</div>

variant.first_image Первое (основное) изображение варианта. string

Первое (основное) изображение варианта.
Liquid
        
          

Ссылка на первое изображение варианта:
{{ variant.first_image.medium_url }}

property in product.properties

Параметры товара

property.name Название параметра. string

Название параметра.
Liquid
        
          

{% for property in product.properties %}
  {{property.name}}: {% for item in property.characteristics %}{{item.name}},{% endfor%}
{% endfor %}

Так же можно обращаться к параметру напрямую, зная его пермалинк (handle):

{{ product.properties.handle.characteristics.first.name }}

property.characteristics Массив значений данного параметра. Например, вывод всех характеристик с указанием числа товаров. array

Массив значений данного параметра. Например, вывод всех характеристик с указанием числа товаров.
Liquid
        
          

{% for property in product.properties %}
  {{ property.name }}: {% for characteristic in property.characteristics %}{{ characteristic.name }},{% endfor%}
{% endfor %}
Так же можно обращаться к параметру напрямую, зная его пермалинк (handle):
{% if product.properties.handle.characteristics.size > 0 %}
  {% for characteristic in product.properties.handle.characteristics %}
    {{ characteristic.name }}
  {% endfor %}
{% endif %}

property.handle Пермалинк параметра. Пермалинк можно посмотреть в бэк-офисе Настройки -> Параметры товаров -> редактировать параметр string

Пермалинк параметра.
Пермалинк можно посмотреть в бэк-офисе Настройки -> Параметры товаров -> редактировать параметр
Liquid
        
          

Обращение к параметру зная его пермалинк (handle):
{% if product.properties.handle.characteristics.size > 0 %}
  {% for characteristic in product.properties.handle.characteristics %}
    {{ characteristic.name }}
  {% endfor %}
{% endif %}

property.gt_value Минимальное значение числового параметра number

Минимальное значение числового параметра

property.lt_value Максимальное значение числового параметра number

Максимальное значение числового параметра

characteristic in property.characteristics

Значения параметров товара

characteristic.name Название характеристики. string

Название характеристики.
Liquid
        
          

{% for property in product.properties %} 
  <div>
    {{ property.name }}: {% for characteristic in property.characteristics %}{{ characteristic.name }},{% endfor %} 
  </div>
{% endfor %}

characteristic.handle Прмалинк характеристики. string

Прмалинк характеристики.
Liquid
        
          

Применение characteristic.handle на примере вывода стикеров через параметры. В нашем случае handle характеристики стикер — stiker.

Из characteristic.handle мы формируем уникальные css классы, чтобы каждому стикеру сделать свой стиль.

{% assign labels_list = '' %}
{% if product.properties.stiker %}
  {% for characteristic in product.properties.stiker.characteristics %}
    {% assign labels_list = labels_list | append: '<div class="stiker stiker-'| append: characteristic.handle | append: '">' | append: characteristic.title | append: '</div>' %}
  {% endfor %}
{% endif %}

<div class="product">
  {{ labels_list }}
  <div class="product-title">
    {{ product.title }}
  </div>
</div>

characteristic.property object

Параметр, которому принадлежит данная характеристика.

Liquid
        
          

{% for property in product.properties %}
  {% for characteristic in property.characteristics %}
    {{ characteristic.property.name }} / {{ characteristic.property.handle }} / {{ characteristic.property.characteristics.size }}
  {% endfor %}
{% endfor %}

characteristic.url string

URL для фильтрации товаров по данной характеристике в текущей коллекции. (Доступно только в коллекции)

Liquid
        
          

{% for property in collection.properties %}
  <div class="property">
      <div class="property-title">
        {{ property.title }}
      </div>
      <div class="property-characteristics">
        {% for characteristic in property.characteristics %}
          <div class="characteristic {% if characteristic.current? %}is-checked{% endif %}">
            <a href="{{ characteristic.url }}">
              {{ characteristic.title }}&nbsp;({{characteristic.products_count}})
            </a>
          </div>
        {% endfor %}
      </div>
  </div>
{% endfor %}

characteristic.products_count number

Число товаров с данной характеристикой в текущей коллекции.  (Доступно только в коллекции)

Liquid
        
          

{% for property in collection.properties %}
  <div class="property">
      <div class="property-title">
        {{ property.title }}
      </div>
      <div class="property-characteristics">
        {% for characteristic in property.characteristics %}
          <div class="characteristic {% if characteristic.current? %}is-checked{% endif %}">
            <a href="{{ characteristic.url }}">
              {{ characteristic.title }}&nbsp;({{characteristic.products_count}})
            </a>
          </div>
        {% endfor %}
      </div>
  </div>
{% endfor %}

characteristic.current? Текущая характеристика? (Доступно только в коллекции) boolean

Текущая характеристика? (Доступно только в коллекции)
Liquid
        
          

{% for property in collection.properties %}
  <div class="property">
      <div class="property-title">
        {{ property.title }}
      </div>
      <div class="property-characteristics">
        {% for characteristic in property.characteristics %}
          <div class="characteristic {% if characteristic.current? %}is-checked{% endif %}">
            <a href="{{ characteristic.url }}">
              {{ characteristic.title }}&nbsp;({{characteristic.products_count}})
            </a>
          </div>
        {% endfor %}
      </div>
  </div>
{% endfor %}

characteristic.id id значения параметра number

id значения параметра

option_name in product.options

Свойства товара

option_name.id Id свойства. number

Id свойства.
Liquid
        
          

{%for option_name in product.options %}
  <div>
    Имя свойства: {{ option_name.title }}
  </div>
  <div>
    ID свойства: {{ option_name.id }}
  </div>
{%endfor%}

option_name.values array

Значения свойства. 

Liquid
        
          

{%for option_name in product.options %} 
  {{ option_name.title }} : {% for option_value in option_name.values %}{{ option_value.title }}{% unless forloop.last %},{% endunless %} {% endfor %} 
{%endfor%} 

option_name.title Название свойства. string

Название свойства.
Liquid
        
          

{%for option_name in product.options %}
  <div>
    Имя свойства: {{ option_name.title }}
  </div>
  <div>
    Кол-во значений свойства: {{ option_name.values.size }}
  </div>
{%endfor%}

option_value in option_name.values

Значение свойств товара

option_value.id Id значения свойства. number

Id значения свойства.
Liquid
        
          

{%for option_name in product.options %}
  {% for option_value in option_name.values %}
    {{ option_value.title }} / {{ option_value.id }}
  {% endfor %}
{%endfor%}

option_value.title number

Название значения свойства.

Liquid
        
          

<div class="options">
  {% for option_name in product.options %}
    <div class="option">
      <div class="option-title">
        {{ option_name.title }}
      </div>
      <div class="option-values">
        {% for option_value in option_name.values %}
          <div class="option-value">
            {{ option_value.title }} 
          </div>
        {% endfor %}
      </div>
    </div>
  {% endfor %}
</div>

option_value.option_name object

Свойства товара, значением которого является данное значение.

Liquid
        
          

{%for option_name in product.options %}
  {% for option_value in option_name.values %}
    {{ option_value.option_name.title }} / {{ option_value.option_name.id }} / {{ option_value.option_name.values.size }}
  {% endfor %}
{%endfor%}

option_value.selected Отмеченное значение в фильтре свойств? (доступно только в коллекции) boolean

Отмеченное значение в фильтре свойств? (доступно только в коллекции)
Liquid
        
          

{% for option in collection.options %}
  <div class="option">
    <div class="option-title">
      {{ option.title }}
    </div>
    <div class="option-values">
      {% for option_value in option.values %}
        <div class="option-value {% if option_value.selected %}is-selected{% endif %}">
          {{ option_value.title }}
        </div>
      {% endfor %}
    </div>
  </div>
{% endfor %}

option_value.products_count Кол-во товара с данным значением свойства. (доступно только в коллекции) number

Кол-во товара с данным значением свойства. (доступно только в коллекции)
Liquid
        
          

{% for option in collection.options %}
  <div class="option">
    <div class="option-title">
      {{ option.title }}
    </div>
    <div class="option-values">
      {% for option_value in option.values %}
        <div class="option-value {% if option_value.selected %}is-selected{% endif %}">
          {{ option_value.title }} ({{ option_value.products_count }})
        </div>
      {% endfor %}
    </div>
  </div>
{% endfor %}

review in product.reviews

Отзывы к товару

review.author Имя автора отзыва string

Имя автора отзыва
Liquid
        
          

{% ifaccount.reviews_enabled? %}
  {% if product.reviews == empty %}
    <div class="notice notice--info">
      Пока нет отзывов
    </div>
  {% else %}
  <ul class="reviews-list">
    {% for review in product.reviews %}
    <li class="review">
      <div class="review-details">
        <span class="review-name">{{ review.author }}</span> {{ review.created_at | date: "%d.%m.%Y %H:%M" }}
      </div>
      
      <div class="review-content">
        {{ review.content | newline_to_br }}
      </div>
      
      {% if review.rating %}
      <div class="review-rating rating">
        Оценка: {{ review.rating }}
      </div>
      {% endif %}
    </li>
    {% endfor %}
  </ul>
  {% endif %}
{% endif %}

review.action_url string

урл используемый для отправки post запроса на создание отзыва.

Liquid
        
          

<div id="review_form" class="review_form">
  <form action="{{ review.action_url }}" method="post">
    <h3>Оставить отзыв</h3>

    {% if form.posted_successfully? %}

      {% if account.reviews_moderated? %}
        <div class="review_form-notice notice notice--success">
          Отзыв успешно отправлен.<br />
          Он будет промодерирован владельцем магазина перед публикацией.
        </div>
      {% else %}
        <div class="review_form-notice notice notice--success">Отзыв добавлен.</div>
      {% endif %}

    {% endif %}

    {% if review.errors.size > 0 %}
      <div class="review_form-notice notice notice--warning">
        Не все поля заполнены правильно!
      </div>
    {% endif %}

    <div class="notice notice--info">
      Все поля обязательны к заполнению
    </div>

    <div class="review_form-input input input--required
                {% if review.errors contains 'author' %} input--error{% endif %}"
    >
      <label for="review_author" class="input-label">
        Имя
      </label>

      <input  type="text"
              name="review[author]"
              value="{{ review.author }}"
              class="input-field"
      />

    </div>

    <div class="review_form-input input input--required
                {% if review.errors contains 'email' %} input--error{% endif %}"
    >
      <label for="review_email" class="input-label">
        E-mail (на сайте не публикуется)
      </label>

      <input  type="email"
              name="review[email]"
              value="{{ review.email }}"
              class="input-field"
      />

    </div>

    <div class="review_form-input input input--required
                {% if review.errors contains 'content' %} input--error{% endif %}"
    >
      <label for="review_body" class="input-label">
        Отзыв
      </label>

      <textarea name="review[content]"
                rows="4"
                class="input-field"
      >{{ review.content }}</textarea>

      <span class="input-notice notice notice--warning">
        нам интересно Ваше мнение о товаре
      </span>
    </div>

    <div class="review_form-input rating_wrapper">
      <label for="rating" class="rating-label">Оцените товар:</label>

      <select class="js-rating" name="review[rating]">
        <option value=""></option>
        {% for i in (1..5) %}
          <option value="{{ i }}">{{ i }}</option>
        {% endfor %}
      </select>
    </div>

    {% if review.captcha_enabled? %}
      <div id="captcha"
            class="review_form-input input input--captcha input--required
                  {% if review.errors contains 'captcha_solution' %} input--error{% endif %}"
      >
        <label class="input-label">
          Наберите текст, изображённый на картинке
        </label>

        <div id="captcha_challenge" class="input-captcha">
          {{ review | captcha_challenge }}
        </div>

        <input type="text"
                name="review[captcha_solution]"
                class="input-field"
        />

      </div>
    {% endif %}

    {% if account.reviews_moderated? %}
      <div class="notice notice--info">
        Перед публикацией отзывы проходят модерацию
      </div>
    {% endif %}

    <input type="submit"
            class="review_form-submit button"
            value="Отправить отзыв"
    />

  </form>
</div>

review.created_at date

Дата создания отзыва.

Liquid
        
          

{% for review in product.reviews %}

  {{ review.created_at | date: "%d.%m.%Y %H:%M" }}

{% endfor %}

review.email Email автора отзыва. (Как правило не следует выводить email автора на сайт) string

Email автора отзыва. (Как правило не следует выводить email автора на сайт)
Liquid
        
          

{% for review in product.reviews %}
  {{ review.email }}
{% endfor %}

review.errors array

Список имен неправильно заполненных полей.

Liquid
        
          

{{ review.errors }}
>> captcha_solutionemail

 

{% for error in review.errors %}
  {{ error }}
{% endfor %}
>> captcha_solution
>> email

review.rating number

Оценка товара, поставленная в отзыве.

Liquid
        
          

{% for review in product.reviews %}
  {% assign r = 5 %}
  {% for i in (1..5) %}
    <span class="star-item {% if review.rating == r %}active{% endif %}"></span>
    {% assign r = r | minus: 1 %}
  {% endfor %}
{% endfor %}

review.content Текст отзыва. <html>

Текст отзыва.
Liquid
        
          

{% ifaccount.reviews_enabled? %}
  {% if product.reviews == empty %}
    <div class="notice notice--info">
      Пока нет отзывов
    </div>
  {% else %}
  <ul class="reviews-list">
    {% for review in product.reviews %}
    <li class="review">
      <div class="review-details">
        <span class="review-name">{{ review.author }}</span> {{ review.created_at | date: "%d.%m.%Y %H:%M" }}
      </div>
      
      <div class="review-content">
        {{ review.content | newline_to_br }}
      </div>
      
      {% if review.rating %}
      <div class="review-rating rating">
        Оценка: {{ review.rating }}
      </div>
      {% endif %}
    </li>
    {% endfor %}
  </ul>
  {% endif %}
{% endif %}

review.manager_reply Ответ менеджера string

Ответ менеджера
Liquid
        
          

{% for review in product.reviews %}
<div class="reviews-item">
 <div class="review-header">
   <div class="author">{{ review.author }}</div>
   <div class="date">{{ review.created_at | date: "%d.%m.%Y %H:%M" }}</div>
 </div>
 <div class="review-body">
   <div class="text">
     {{ review.content }}
   </div>
   {% if review.replied? %}
   <div class="review-manager_reply">
     {{ review.manager_reply }}
   </div>
   <div class="review-replied_at">
     {{ review.replied_at | date: "%d.%m.%Y %H:%M" }}
   </div>
   {% endif %}
 </div>
</div>
{% endfor %}

review.replied_at Дата и время ответа date

Дата и время ответа

review.replied? Есть ответ менеджера к отзыву? boolean

Есть ответ менеджера к отзыву?

bundle_component in product.bundle_components

Комплекты

bundle_component.product Ссылка на товар из списка товаров комплекта object

Ссылка на товар из списка товаров комплекта
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    <div class="bundle-title">
      Состав комплекта:
    </div>
    <div class="bundle-list">
      {% for bundle_component in product.bundle_components %}
      <div class="bundle-item">
        <div class="bundle-img">
          <img src="{{ bundle_component.product.first_image.medium_url }}" />
        </div>
        <div class="bundle-name">
          {{ bundle_component.product.title }}
        </div>
        <div class="bundle-price">
          {% if bundle_component.is_free %}
            В подарок
            {% else %}
            {{ bundle_component.quantity }} × {{ bundle_component.product.sale_price | money }}
          {% endif %}
        </div>
      </div>
      {% endfor %}
    </div>
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
        Экономия: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

bundle_component.variant Cодержит информацию о конкретном варианте товара, который привязан к комплекту object

Cодержит информацию о конкретном варианте товара, который привязан к комплекту

bundle_component.quantity Колличество товарной позиции в комплекте number

Колличество товарной позиции в комплекте
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    <div class="bundle-title">
      Состав комплекта:
    </div>
    <div class="bundle-list">
      {% for bundle_component in product.bundle_components %}
      <div class="bundle-item">
        <div class="bundle-img">
          <img src="{{ bundle_component.product.first_image.medium_url }}" />
        </div>
        <div class="bundle-name">
          {{ bundle_component.product.title }}
        </div>
        <div class="bundle-price">
          {% if bundle_component.is_free %}
            В подарок
            {% else %}
            {{ bundle_component.quantity }} × {{ bundle_component.product.sale_price | money }}
          {% endif %}
        </div>
      </div>
      {% endfor %}
    </div>
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
        Экономия: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

bundle_component.is_free Товарная позиция является бесплатной? (для активации бесплатной позиции нужно выставить чекбокс "FREE" в бекофисе) boolean

Товарная позиция является бесплатной? (для активации бесплатной позиции нужно выставить чекбокс "FREE" в бекофисе)
Liquid
        
          

{% if product.is_bundle %}
  <div class="bundle">
    <div class="bundle-title">
      Состав комплекта:
    </div>
    <div class="bundle-list">
      {% for bundle_component in product.bundle_components %}
      <div class="bundle-item">
        <div class="bundle-img">
          <img src="{{ bundle_component.product.first_image.medium_url }}" />
        </div>
        <div class="bundle-name">
          {{ bundle_component.product.title }}
        </div>
        <div class="bundle-price">
          {% if bundle_component.is_free %}
            В подарок
            {% else %}
            {{ bundle_component.quantity }} × {{ bundle_component.product.sale_price | money }}
          {% endif %}
        </div>
      </div>
      {% endfor %}
    </div>
    {% if product.bundle_discount < 0 %}
    <div class="bundle-discount">
        Экономия: {{ product.bundle_discount | money }}
    </div>
    {% endif %}
  </div>
{% endif %}

block

block_lists

block_lists Массив панелей блоков. Обращение к конкретной панели можно сделать через идентификатор панели, например - {{ block_lists.footer.blocks }} array

Массив панелей блоков.
Обращение к конкретной панели можно сделать через идентификатор панели, например - {{ block_lists.footer.blocks }}

У block_lists.handle есть два свойства:

  • id - это числовой id панели
  • blocks - это массив блоков панели
Liquid
        
          

{% for block_list in block_lists %}
  Id панели блоков: {{ block_list.id }} <br>
{% endfor %}

{% for block_list in block_lists %}
  Id панели блоков: {{ block_list.id }} <br>
  {% for block in block_list.blocks %}
    Имя блока: {{ block.title }}
  {% endfor %}
{% endfor %}

Обращение к панели блоков через идентификатор:
{% for block in block_lists.handle.blocks %}
  Имя блока: {{ block.title }}
  Контент блока: {{ block.content }}
{% endfor %}

block_lists.handle.id Идентификатор панели блоков handle. number

Идентификатор панели блоков handle.

block_lists.handle.blocks Выбор блоков конкретной панели array

Выбор блоков конкретной панели
Liquid
        
          

{% for block in block_lists.handle.blocks %} 
<div class="block"> 
  <div>
    {{ block.title }}
  </div>
  <div>
    {{ block.content }} 
  </div>
</div> 
{% endfor %}

block_lists.with_template['handle_template'].handle_block_lists.blocks Доступ к панели блоков с привязанным шаблоном блоков object

Доступ к панели блоков с привязанным шаблоном блоков

block_lists.with_template['handle_template'].handle_block_lists.blocks

handle_template — пермалинк шаблона блока

handle_block_lists — пермалинк панели блоков

 

Для доступа к панелям блоков без типа работает старый синтаксис:
block_lists.slider.blocks

При таком способе обращения к панелям блоков сначала ищется панель с названием slider среди панелей без шаблона и только потом среди остальных

Liquid
        
          

{% for block in block_lists.with_template['handle_template'].handle_block_lists.blocks %}
  Имя блока: {{ block.title }}
  Контент блока: {{ block.content }}
{% endfor %}

block_lists.handle.name Имя панели блоков. string

Имя панели блоков.

block

block.id Идентификатор блока (числовой). number

Идентификатор блока (числовой).

block.handle Идентификатор блока (не числовой). string

Идентификатор блока (не числовой).

block.title Заголовок блока. string

Заголовок блока.

block.content Содержание блока. <html>

Содержание блока.

blocks.name Выбор конкретного блока, например с рекламой (advertising). object

Выбор конкретного блока, например с рекламой (advertising).
Liquid
        
          

{{blocks.advertising.title}}
{{blocks.advertising.content}}

blocks.with_template['handle_template'].handle_block Доступ к блоку который привязан к типу блока object

Доступ к блоку который привязан к типу блока

blocks.with_template['handle_template'].handle_block

handle_template - пермалинк шаблона блока

handle_block - пермалинк блока

 

Для доступа к блокам так же работает старый синтаксис:

blocks.handle.content

Но если блоков с одинаковым permalink больше одного, то выберется последний созданый

Liquid
        
          

{% assign main_block = blocks.with_template['handle_template'].handle_block %}

Имя блока: {{ main_block.title }}

Collection

Переменные доступные в шаблоне collection.liquid

collection

collection.title Название категории. string

Название категории.
Liquid
        
          

<h1>
  {{ collection.title }}
</h1>

collection.url URL коллекции string

URL коллекции
Liquid
        
          

<ul class="menu is-collection">
  {% for collection in collections.all.subcollectons %}
    <li class="menu-item">
      <a href="{{ collection.url }}" class="menu-link {% if collection.current? %}is-current{% endif %}">
        {{ collection.title }}
      </a>
    </li>
  {% endfor %}
</ul>

collection.id Id коллекции number

Id коллекции
Liquid
        
          

{% if collection.id == 4223326 %}
  // ваш код
{% endif %}

collection.current_collections Массив родительских категорий, включая текущую. array

Массив родительских категорий, включая текущую.
Liquid
        
          

{% assign collection_title = 'бренды' %}
{% for current_collection in collection.current_collections %}
  {% assign inner_title = current_collection.title | downcase %}
  {% if inner_title contains collection_title %}
    Данная категория является подкатегорией категории «бренды»
  {% endif %}
{% endfor %}

collection.current? Является ли категория текущей? boolean

Является ли категория текущей?
Liquid
        
          

<ul class="menu is-collection">
  {% for collection in collections.all.subcollectons %}
    <li class="menu-item">
      <a href="{{ collection.url }}" class="menu-link {% if collection.current? %}is-current{% endif %}">
        {{ collection.title }}
      </a>
    </li>
  {% endfor %}
</ul>

collection.current_option_values Свойства товаров выбранные в фильтре категории. array

Свойства товаров выбранные в фильтре категории.
Liquid
        
          

{% for option in collection.current_option_values %}
  {{ option.title }}
{% endfor %}

collection.description Описание категории. <html>

Описание категории.
Liquid
        
          

{% if collection.description %}
  <div class="collection-description">
    {{ collection.description }}
  </div>
{% endif %}

collection.fields Дополнительные поля категорий object

Дополнительные поля категорий
Liquid
        
          

Вывести конкретное доп. поле:
{% if collection.fields.banner.value %}
  {{ collection.fields.banner.title }}
  {{ collection.fields.banner.value }}
{% endif %}

Вывести все доп. поля:
{% for collection_field in collection.fields %}
  <div class="field-title is-{{ collection_field.handle }}">
    {{ collection_field.title }}
  </div>
  <div class="field-value">
    {{ collection_field.value }}
  </div>
{% endfor %}

collection.handle Пермалинк коллекции string

Пермалинк коллекции
Liquid
        
          

Пермалинк категории: {{ collection.handle }}

collection.image Изображение категории. object

Изображение категории.

Возможные размеры:

48x48 small_url

100x100 thumb_url

160x160 compact_url

240x240 medium_url

480x480 large_url

original image original_url

Liquid
        
          

<img src="{{ collection.image.large_url }}" alt="{{ collection.title }}" />

collection.level Уровень вложенности категории (начинается с 1). number

Уровень вложенности категории (начинается с 1).
Liquid
        
          

Категория находится на {{ collection.level }} уровне

collection.meta_description meta description страницы категории string

meta description страницы категории
Liquid
        
          

{% if collection.meta_description %}
  Meta description:{{ collection.meta_description }}
{% endif %}

collection.meta_keywords meta keywords страницы категории string

meta keywords страницы категории
Liquid
        
          

{% if collection.meta_keywords %}
  Meta keywords страницы категории: {{ collection.meta_keywords }}
{% endif %}

collection.options Свойства всех товаров категории. array

Свойства всех товаров категории.
Liquid
        
          

{% for option in collection.options %}
  <ul>
    <li>
      {{ option.title }}
      {% if option.values.size > 0 %}
        <ul>
        {% for option_value in option.values %}
          <li>
            {{ option_value.title }}
          </li>
        {% endfor %}
        </ul>
      {% endif %}
    </li>
  </ul>
{% endfor %}

collection.parent Родительская категория. object

Родительская категория.
Liquid
        
          

{% if collection.parent %}
  Родительская категория: {{ collection.parent.title }}
  {% else %}
  Нет родительских категорий
{% endif %}

collection.next_product При помощи этого объекта можно организовать в карточке товара переход к следующему товару категории (горизонтальная навигация). object

При помощи этого объекта можно организовать в карточке товара переход к следующему товару категории (горизонтальная навигация).
Liquid
        
          
{% if collection.products.size > 1 %}  
  <div class="prods-paginate">
     <a href="{% if collection.previous_product.url %}{{ collection.previous_product.url }}
     {% else %}
     {{ collection.products.last.url }}{% endif %}" class="fl"><span class="prev">⟨</span>предыдущий товар</a>
     <a href="{% if collection.next_product.url %}{{ collection.next_product.url }} 
    {% else %}
    {{ collection.products.first.url }}{% endif %}" class="fr">следующий товар<span class="next">⟩</span></a>
  </div>
{% endif %}

collection.previous_product При помощи этого объекта можно организовать в карточке товара переход к предыдущему товару категории (горизонтальная навигация). object

При помощи этого объекта можно организовать в карточке товара переход к предыдущему товару категории (горизонтальная навигация).
Liquid
        
          

{% if collection.products.size > 1 %}  
  <div class="prods-paginate">
     <a href="{% if collection.previous_product.url %}{{ collection.previous_product.url }}
     {% else %}
     {{ collection.products.last.url }}{% endif %}" class="fl"><span class="prev">⟨</span>предыдущий товар</a>
     <a href="{% if collection.next_product.url %}{{ collection.next_product.url }} 
    {% else %}
    {{ collection.products.first.url }}{% endif %}" class="fr">следующий товар<span class="next">⟩</span></a>
  </div>
{% endif %}

 

collection.products Массив товаров категории. array

Массив товаров категории.
Liquid
        
          

{% for product in collection.products %}
  <a href="{{ product.url }}">{{ product.title }}</a>
{% endfor %}

collection.products_count Количество товаров в данной категории. number

Количество товаров в данной категории.
Liquid
        
          

{% if collection.products_count > 0 %}
  Товаров в категории: {{ collection.products_count }}
  {% else %}
  Простите, в данном разделе пока нет товаров. Мы работаем над этим.
{% endif %}

collection.current_characteristics Текущие значения параметров всех товаров категории. array

Текущие значения параметров всех товаров категории.
Liquid
        
          

{% for characteristic in collection.current_characteristics %}
  {{ characteristic.title }}
{% endfor %}

collection.seo_description Дополнительное описание категории. <html>

Дополнительное описание категории.
Liquid
        
          

{% if collection.seo_description %}
  <div class="collection-seo_description">
    {{ collection.seo_description }}
  </div>
{% endif %}

collection.properties Параметры всех товаров категории. array

Параметры всех товаров категории.
Liquid
        
          

{% for property in collection.properties %}
  <div>
    {{ property.name }}
  </div>
  {% for characteristic in property.characteristics %}
    <div>
      {{ characteristic.name }}
    </div>
  {% endfor %}
{% endfor %}

Также можно обратится к параметру по пермалинку (handle)
{% for characteristic in collection.properties.handle.characteristics %}
  <div>
    {{ characteristic.name }}
  </div>
{% endfor %}

collection.subcollections Подколлекции данной категории. array

Подколлекции данной категории.
Liquid
        
          

{% for collection in collection.subcollections %}
    <a href="{{ collection.url }}">{{ collection.title }}</a>
 {% endfor %}

current_collections Список текущих категорий (полезно в случае многоуровневой структуры каталога), например для вывода хлебных крошек. array

Список текущих категорий (полезно в случае многоуровневой структуры каталога), например для вывода хлебных крошек.
Liquid
        
          

{% for collection in current_collections %}
    <a href="{{ collection.url }}">{{ collection.title }}</a>
 {% endfor %}

collections Все категории верхнего уровня из каталога на сайте. Каждый элемент массива является объектом с типом collection object

Все категории верхнего уровня из каталога на сайте. Каждый элемент массива является объектом с типом collection
Liquid
        
          

Примеры: Вывод всех категорий верхнего уровня:
{% for collection in collections %}
  {{ collection.title }}
{% endfor %}

collections[handle] Обращение к объекту конкретной категории (handle — пермалинк категории) object

Обращение к объекту конкретной категории (handle — пермалинк категории)
Liquid
        
          

{% assign collection_handle = 'all' %}

Следующие вызовы вернут одинаковое значение:

collections[collection_handle].title

collections['all'].title

collections.all.title

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

{% for collection in collections.all.subcollections %}
  {{ collection.title }}
{% endfor %}

collections.flatten Вывод дерева категорий (полный список категорий магазина) array

Вывод дерева категорий (полный список категорий магазина)
Liquid
        
          

{% for collection in collections.flatten %}
  {% if collection.first? %}<ul>{% endif %}
  {% if collection.show? %}
    <li {% if collection.current? %}class="active"{% endif %}
      <a href="{{ collection.url }}">{{ collection.title }}</a>
    </li>
  {% endif %}
  {% if collection.last? %} {% for i in (1..collection.level_difference) %}</ul>{% endfor %} {% endif %}
{% endfor %}

collection.first? Первая ли категория среди подкатегорий родительской категории. Метод используется в выводе дерева категорий (collections.flatten). boolean

Первая ли категория среди подкатегорий родительской категории. Метод используется в выводе дерева категорий (collections.flatten).
Liquid
        
          

{% for collection in collections.flatten %}
  {% if collection.first? %}<ul>{% endif %}
  {% if collection.show? %}
    <li {% if collection.current? %}class="active"{% endif %}
      <a href="{{ collection.url }}">{{ collection.title }}</a>
    </li>
  {% endif %}
  {% if collection.last? %} {% for i in (1..collection.level_difference) %}</ul>{% endfor %} {% endif %}
{% endfor %}

collection.last? Последняя ли категория среди подкатегорий родительской категории. Метод используется в выводе дерева категорий (collections.flatten). boolean

Последняя ли категория среди подкатегорий родительской категории. Метод используется в выводе дерева категорий (collections.flatten).
Liquid
        
          

{% for collection in collections.flatten %}
  {% if collection.first? %}<ul>{% endif %}
  {% if collection.show? %}
    <li {% if collection.current? %}class="active"{% endif %}
      <a href="{{ collection.url }}">{{ collection.title }}</a>
    </li>
  {% endif %}
  {% if collection.last? %} {% for i in (1..collection.level_difference) %}</ul>{% endfor %} {% endif %}
{% endfor %}

collection.show? Нужно ли показывать категорию при отображения дерева. Верно, если это категория верхнего уровня, текущая или родительская категория является текущей. Метод используется в выводе дерева категорий. boolean

Нужно ли показывать категорию при отображения дерева. Верно, если это категория верхнего уровня, текущая или родительская категория является текущей. Метод используется в выводе дерева категорий.
Liquid
        
          

{% for collection in collections.flatten %}
  {% if collection.first? %}<ul>{% endif %}
  {% if collection.show? %}
    <li {% if collection.current? %}class="active"{% endif %}
      <a href="{{ collection.url }}">{{ collection.title }}</a>
    </li>
  {% endif %}
  {% if collection.last? %} {% for i in (1..collection.level_difference) %}</ul>{% endfor %} {% endif %}
{% endfor %}

collection.level_difference? Возвращает разницу уровней между текущей и предыдущей категорией, по сути число означает сколько закрывающих тегов надо вывести при отображении дерева. number

Возвращает разницу уровней между текущей и предыдущей категорией, по сути число означает сколько закрывающих тегов надо вывести при отображении дерева.
Liquid
        
          

Вывод дерева категорий (с использованием объекта collections.flatten - полный список категорий магазина, всех уровней вложенности):
{% for collection in collections.flatten %}
  {% if collection.first? %}<ul>{% endif %}
  {% if collection.show? %}
    <li {% if collection.current? %}class="active"{% endif %}
      <a href="{{ collection.url }}">{{ collection.title }}</a>
    </li>
  {% endif %}
  {% if collection.last? %} {% for i in (1..collection.level_difference) %}</ul>{% endfor %} {% endif %}
{% endfor %}

collection.filters Массив всех seo-фильтров категории. array

Массив всех seo-фильтров категории.
Liquid
        
          

{% for seo_filter in collection.filters %}
  <a href="{{ collection.url }}/{{ seo_filter.handle }}" class="{% if filter.handle == seo_filter.handle %}is-active{% endif %}">
    {{ seo_filter.title }}
  </a>
{% endfor %}

collection.show_subcollections? Вернет true если категория является текущей и в ней есть субколлекции boolean

Вернет true если категория является текущей и в ней есть субколлекции

collection.subcollections.size > 0 Есть ли у категории подкатегории. Метод используется только в выводе дерева категорий через collections.flatten. boolean

Есть ли у категории подкатегории. Метод используется только в выводе дерева категорий через collections.flatten.
Liquid
        
          

{% if collection.subcollections.size > 0 %}

...

{% endif %}

(SEO) filter

filter.description Описание фильтра. <html>

Описание фильтра.
Liquid
        
          

{% if filter %}
  <div class="filter-description">
    {{ filter.description }}
  </div>
{% endif %}

filter.handle Пермалинк фильтра. string

Пермалинк фильтра.
Liquid
        
          

{% if filter %}
  <div class="filter-description filter-{{ filter.handle }}">
    {{ filter.description }}
  </div>
{% endif %}

filter.id id фильтра number

id фильтра
Liquid
        
          

{% if filter %}
  <div class="filter-description filter-{{ filter.handle }}">
    ID seo фильтра - {{ filter.id }}
  </div>
{% endif %}

filter.meta_description Значение мета тега keywords фильтра. string

Значение мета тега keywords фильтра.
Liquid
        
          

{% if filter.meta_description %}
  Meta description seo фильтра: {{ filter.meta_description }}
{% endif %}

filter.meta_keywords Значение мета тега description фильтра. string

Значение мета тега description фильтра.
Liquid
        
          

{% if filter.meta_keywords %}
  Meta keywords seo фильтра: {{ filter.meta_keywords }}
{% endif %}

filter.title Название фильтра. string

Название фильтра.
Liquid
        
          

{% if filter %}
  <h1>{{ filter.title }}</h1>
  {% else %}
  <h1>{{ collection.title }}</h1>
{% endif %}

filter.seo_description Доп. описание <html>

Доп. описание
Liquid
        
          

{% if filter %}
  <div class="filter-seo_description">
    {{ filter.seo_description}}
  </div>
{% endif %}

filter.fields Дополнительные поля фильтра array

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

{% for field in filter.fields %}
  {{ field.title }}<br>
  {{ field.handle }}<br>
  {{ field.value }}
{% endfor %}

Cart

Объект cart доступен во всех шаблонах темы.

Смотртеть видео о работе с корзиной интернет магазина.

Cart

cart.coupon Введенный код купона. string

Введенный код купона.
Liquid
        
          

{% if cart.enable_coupon? %}
  <form action="{{ cart_url }}" method="post" >
    <input type="text" name="cart[coupon]" value="{{ cart.coupon }}" placeholder="Введите купон">
    <button type="submit">
      Применить купон
    </button>
    {% if cart.invalid_coupon? %}
      <div class="discounts-notice notice notice-error">
        {{ cart.coupon_error }}
      </div>
    {% endif %}
    {% if cart.discounts.size > 0 %}
    {% for discount in cart.discounts %}
      <div class="discount">
      <div class="discount-title">
        {{ discount.description }}
      </div>
          <div class="discount-prices prices">
            <span class="prices-current">
              - {{ discount.amount | money }}
            </span>
          </div>
        </div>
      {% endfor %}
    {% endif %}
  </form>
{% endif %}

cart.coupon_error Сообщение ошибки ввода купона. string

Сообщение ошибки ввода купона.
Liquid
        
          

{% if cart.enable_coupon? %}
  <form action="{{ cart_url }}" method="post" >
    <input type="text" name="cart[coupon]" value="{{ cart.coupon }}" placeholder="Введите купон">
    <button type="submit">
      Применить купон
    </button>
    {% if cart.invalid_coupon? %}
      <div class="discounts-notice notice notice-error">
        {{ cart.coupon_error }}
      </div>
    {% endif %}
    {% if cart.discounts.size > 0 %}
    {% for discount in cart.discounts %}
      <div class="discount">
      <div class="discount-title">
        {{ discount.description }}
      </div>
          <div class="discount-prices prices">
            <span class="prices-current">
              - {{ discount.amount | money }}
            </span>
          </div>
        </div>
      {% endfor %}
    {% endif %}
  </form>
{% endif %}

cart.discounts Массив скидок. array

Массив скидок.
Liquid
        
          

{% if cart.discounts.size > 0 %}
  {% for discount in cart.discounts %}
  <div class="discount">
  <div class="discount-title">
    {{ discount.description }}
  </div>
      <div class="discount-prices prices">
        <span class="prices-current">
          - {{ discount.amount | money }}
        </span>
      </div>
    </div>
  {% endfor %}
{% endif %}

cart.enable_coupon? Флаг, обозначающий, включено использование купонов или нет, - если купоны запрещены тарифом - возвращает true. boolean

Флаг, обозначающий, включено использование купонов или нет, - если купоны запрещены тарифом - возвращает true.
Liquid
        
          

{% if cart.enable_coupon? %}
  <form action="{{ cart_url }}" method="post" >
    <input type="text" name="cart[coupon]" value="{{ cart.coupon }}" placeholder="Введите купон">
    <button type="submit">
      Применить купон
    </button>
    {% if cart.invalid_coupon? %}
      <div class="discounts-notice notice notice-error">
        {{ cart.coupon_error }}
      </div>
    {% endif %}
    {% if cart.discounts.size > 0 %}
    {% for discount in cart.discounts %}
      <div class="discount">
      <div class="discount-title">
        {{ discount.description }}
      </div>
          <div class="discount-prices prices">
            <span class="prices-current">
              - {{ discount.amount | money }}
            </span>
          </div>
        </div>
      {% endfor %}
    {% endif %}
  </form>
{% endif %}

cart.invalid_coupon? Флаг, обозначающий, что введенн неверный купон, если купон не задан возвращает false. boolean

Флаг, обозначающий, что введенн неверный купон, если купон не задан возвращает false.
Liquid
        
          

{% if cart.enable_coupon? %}
  <form action="{{ cart_url }}" method="post" >
    <input type="text" name="cart[coupon]" value="{{ cart.coupon }}" placeholder="Введите купон">
    <button type="submit">
      Применить купон
    </button>
    {% if cart.invalid_coupon? %}
      <div class="discounts-notice notice notice-error">
        {{ cart.coupon_error }}
      </div>
    {% endif %}
    {% if cart.discounts.size > 0 %}
    {% for discount in cart.discounts %}
      <div class="discount">
      <div class="discount-title">
        {{ discount.description }}
      </div>
          <div class="discount-prices prices">
            <span class="prices-current">
              - {{ discount.amount | money }}
            </span>
          </div>
        </div>
      {% endfor %}
    {% endif %}
  </form>
{% endif %}

cart.items Массив товаров (товарных позиций) в корзине. array

Массив товаров (товарных позиций) в корзине.
Liquid
        
          

{% for item in cart.items %}
  <div class="item">
    <div class="item-title">
      {{ item.title }}
    </div>
    <div class="item-title">
      {{ item.quantity | money }} &times; {{ item.sale_price }} = {{ item.total_price | money }}
    </div>
  </div>
{% endfor %}

cart.items_count Число позиций в корзине. number

Число позиций в корзине.
Liquid
        
          

Товаров в корзине: {{ cart.items_count }}

cart.items_price Сумма с учетом скидки без учета доставки number

Сумма с учетом скидки без учета доставки
Liquid
        
          

Итого: {{ cart.items_price | money }}

cart.items_weight Суммарный вес всех позиций в корзине. number

Суммарный вес всех позиций в корзине.
Liquid
        
          

{% if cart.items_weight %}
  Сумарный вес товаров в корзине: {{ cart.items_weight }}
{% endif %}

cart.total_price Сумма с учетом скидки и с учетом доставки number

Сумма с учетом скидки и с учетом доставки
Liquid
        
          

Суммарная стоимость заказа с учетом доставки: {{ cart.total_price | money }}

item in cart.items

item.comment Комментарий к позиции заказа. string

Комментарий к позиции заказа.

Для работы данного функционала нужно включить настройку в бэк-офисе: Настройки -> Карточка магазина -> Включить комментарии к позициям заказа

Liquid
        
          

<!-- Вывод комментария в корзине -->

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    <div class="item-comment">
      <!-- изменить комментарий в корзине -->
      <input type="text" name="cart[order_line_comments][{{ item.id }}]" value="{{ item.comment }}" />
      <!-- Просто вывести комментарий -->
      <span>
        {{ item.comment }}
      </span>
    </div>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

 

<!-- Форма добавления товара с комментарием -->

<form action="{{ cart_url }}" method="post" data-product-id="{{ product.id }}">
  {% if product.show_variants? %}
    <select name="variant_id" data-product-variants>
      {% for variant in product.variants %}
        <option value="{{ variant.id }}">{{ variant.title | escape }}</option>
      {% endfor %}
    </select>
  {% else %}
    <input type="hidden" name="variant_id" value="{{product.variants.first.id}}" >
  {% endif %}
  <!-- Комментарий к позиции заказа.  -->
  <input type="text" name="comment" value="">
  <div data-quantity>
    <input type="text" name="quantity" value="1" />
    <span data-quantity-change="-1">-</span>
    <span data-quantity-change="1">+</span>
  </div>
  <button type="submit" data-item-add>
    Добавить в корзину
  </button>
</form>

item.id Идентификатор позиции. number

Идентификатор позиции.

Активно используется в атрибутах name полей формы корзины.
Например:
<input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" />
<input type="text" name="cart[order_line_comments][{{ item.id }}]" value="{{ item.comment }}" />

Liquid
        
          

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    {% if item.weight %}
      <div class="item-weight">
        Вес товара: {{ item.weight }} {{ item.unit }}
      </div>
      <div class="item-weight">
        Суммарный вес товаров позиции: {{ item.total_weight }} {{ item.unit }}
      </div>
    {% endif %}
    <div class="item-quantity">
      Изменить количество товаров позиции:
      <input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" class="item-quantity-input">
    </div>
    <a href="{{ item.url }}" data-item-target="{{ item.id }}" class="item-remove js-item-remove">
      Удалить
    </a>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

 

<!-- jQuery скрипт удаления -->
<script type="text/javascript">
  $(document).ready(function() {
    $('.js-item-remove').click(function(event) {
      event.preventDefault();
      var itemUrl = $(this).attr('href');
      var removeUrl = itemUrl + '.json';
      var _targetId = $(this).data('item-target');
      var $itemBlock = $('[data-item-block="'+ _targetId +'"]')
      $.ajax({
        url: itemUrl,
        type: 'POST',
        data: { _method: 'delete'}
      })
      .done(function() {
        console.log("Товар успешно удален");
        $itemBlock.remove();
      })
      .fail(function() {
        console.log("Что то пошло не так");
      })
    });
  });
</script>

item.product Товар позиции. object

Товар позиции.
Liquid
        
          

{% for item in cart.items %}
  <div class="cart-item">
    <div class="item-image">
      <a class="item-image-link" href="{{item.product.url}}?variant_id={{item.variant.id}}">
        <img  src="{{ item.product.first_image.medium_url }}">
      </a>
    </div>
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
  </div>
{% endfor %}

item.quantity Число товаров в позиции. number

Число товаров в позиции.
Liquid
        
          

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    <div class="item-quantity">
      Изменить количество товаров позиции:
      <input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" class="item-quantity-input">
    </div>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

item.sale_price Цена одного товара позиции. number

Цена одного товара позиции.
Liquid
        
          

{% for item in cart.items %}
<div class="cart-item" data-item-block="{{ item.id }}">
  <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
    {{ item.product.title }}
  </a>
  <div class="item-price">
    {{ item.sale_price | money }} &times; {{ item.quantity }} = {{ item.total_price | money }}
  </div>
</div>
{% endfor %}

item.title Название позиции. string

Название позиции.

Если у товара позиции есть модификация, помимо имени товара, в скобках через слеш будет выведена информация о модификации.
Например: Футболка (Белая / XL)

Liquid
        
          

{% for item in cart.items %}
<div class="cart-item" data-item-block="{{ item.id }}">
  <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
    {{ item.title }}
  </a>
</div>
{% endfor %}

item.total_price Суммарная стоимость товаров позиции. number

Суммарная стоимость товаров позиции.
Liquid
        
          

{% for item in cart.items %}
<div class="cart-item" data-item-block="{{ item.id }}">
  <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
    {{ item.product.title }}
  </a>
  <div class="item-price">
    {{ item.sale_price | money }} &times; {{ item.quantity }} = {{ item.total_price | money }}
  </div>
</div>
{% endfor %}

item.weight Вес одного товара позиции. number

Вес одного товара позиции.
Liquid
        
          

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    {% if item.weight %}
      <div class="item-weight">
        Вес товара: {{ item.weight }} {{ item.unit }}
      </div>
      <div class="item-weight">
        Суммарный вес товаров позиции: {{ item.total_weight }} {{ item.unit }}
      </div>
    {% endif %}
    <div class="item-quantity">
      Изменить количество товаров позиции:
      <input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" class="item-quantity-input">
    </div>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

item.total_weight Суммарный вес товаров позиции. number

Суммарный вес товаров позиции.
Liquid
        
          

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    {% if item.weight %}
      <div class="item-weight">
        Вес товара: {{ item.weight }} {{ item.unit }}
      </div>
      <div class="item-weight">
        Суммарный вес товаров позиции: {{ item.total_weight }} {{ item.unit }}
      </div>
    {% endif %}
    <div class="item-quantity">
      Изменить количество товаров позиции:
      <input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" class="item-quantity-input">
    </div>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

item.url URL применяющийся для удаления товаров из корзины. string

URL применяющийся для удаления товаров из корзины.
Liquid
        
          

{% for item in cart.items %}
<div class="cart-item" data-item-block="{{ item.id }}">
  <div class="item-image">
    <a class="item-image-link" href="{{item.product.url}}?variant_id={{item.variant.id}}">
      <img  src="{{ item.product.first_image.medium_url }}">
    </a>
  </div>
  <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
    {{ item.product.title }}
  </a>
  <a href="{{ item.url }}" data-item-target="{{ item.id }}" class="item-remove js-item-remove">
    Удалить
  </a>
</div>
{% endfor %}

<!-- jQuery скрипт удаления -->
<script type="text/javascript">
  $(document).ready(function() {
    $('.js-item-remove').click(function(event) {
      event.preventDefault();
      var itemUrl = $(this).attr('href');
      var removeUrl = itemUrl + '.json';
      var _targetId = $(this).data('item-target');
      var $itemBlock = $('[data-item-block="'+ _targetId +'"]')
      $.ajax({
        url: itemUrl,
        type: 'POST',
        data: { _method: 'delete'}
      })
      .done(function() {
        console.log("Товар успешно удален");
        $itemBlock.remove();
      })
      .fail(function() {
        console.log("Что то пошло не так");
      })
    });
  });
</script>

item.variant Модификация товара позиции. object

Модификация товара позиции.
Liquid
        
          

{% for item in cart.items %}
  <div class="cart-item">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.title }}
    </a>
    {% if item.variant.option_values.size > 0 %}
      <div class="item-option_values">
        {% for option_value in item.variant.option_values %}
        <div class="item-option_name">
          <span>{{ option_value.option_name.title }}</span> - <span>{{ option_value.title }}</span>
        </div>
        {% endfor %}
      </div>
    {% endif %}
  </div>
{% endfor %}

item.unit Единица измерения товара. Доступные значения: "шт", "кг", "л; дм3", "м", "м2", "г", "т" string

Единица измерения товара. Доступные значения: "шт", "кг", "л; дм3", "м", "м2", "г", "т"
Liquid
        
          

<form action="{{ cart_url }}" method="post">
  <input type="hidden" name="_method" value="put">
  <input type="hidden" name="make_order" value="">
  {% for item in cart.items %}
  <div class="cart-item" data-item-block="{{ item.id }}">
    <a href="{{ item.product.url }}?variant_id={{ item.variant.id }}" class="item-title">
      {{ item.product.title }}
    </a>
    {% if item.weight %}
      <div class="item-weight">
        Вес товара: {{ item.weight }} {{ item.unit }}
      </div>
      <div class="item-weight">
        Суммарный вес товаров позиции: {{ item.total_weight }} {{ item.unit }}
      </div>
    {% endif %}
    <div class="item-quantity">
      Изменить количество товаров позиции:
      <input type="text" name="cart[quantity][{{ item.id }}]" value="{{ item.quantity }}" class="item-quantity-input">
    </div>
  </div>
  {% endfor %}
  <input type="submit" value="Оформить">
</form>

Linklists

Linklists

linklist.handle Пермалинк меню. string

Пермалинк меню.

Через пермалинк можно обращаться к массиву пуктов меню.

Liquid
        
          

<ul>
{% for link in linklists.main-menu.links %}
  {% assign current_class = '' %}
  {% if link.current? %}
    {% assign current_class = 'active' %}
  {% endif %}
  <li class="{{ current_class }}" >
    <a href="{{ link.url }}">{{ link.title }}</a> 
  </li>
{% endfor %}
</ul>

linklist.title Title меню string

Title меню
Liquid
        
          

Вывод имени меню с пермалинком main-menu
{{ linklists.main-menu.title }}

Blog

blog

blog.articles Массив статей array

Массив статей
Liquid
        
          

<h1>Список статей блога {{ blog.title }}:</h1>
<ul>
{% for article in blog.articles %}
  <li>
    <a href="{{ article.url }}">{{ article.title }}</a>
  </li>
{% endfor %}
</ul>

blog.comments_enabled? Разрешены ли комментарии? boolean

Разрешены ли комментарии?

blog.handle Пермалинк блога string

Пермалинк блога

blog.id Id блога. number

Id блога.

blog.moderated? Модерируются ли комментарии. boolean

Модерируются ли комментарии.

blog.title Заголовок блога string

Заголовок блога
Liquid
        
          

<!-- Если заголовки блогов ['Новости', 'Статьи'] -->
{% for blog in blogs %}
  {{ blog.title }}
{% endfor %}
#=> Новости
#=> Статьи

blog.url URL блога string

URL блога
Liquid
        
          

<h1>Список блогов:</h1>
<ul>
{% for blog in blogs %}
  <li>
    <a href="{{ blog.url }}">
      {{ blog.title }}
    </a>
  </li>
{% endfor %}
</ul>

blog.tags Облако тегов для блога array

Облако тегов для блога
Liquid
        
          

<div class="tagcloud-block">

    {% unless blog.tags == empty %}

    <div class="tagcloud">

      <div class="tagcloud-header">
        <h3>Теги:</h3>
      </div><!-- /.tagcloud-header -->

      <ul class="tags-list list-horizontal">
        {% for tag in blog.tags %}
        <li class="list-item">
          <a class="list-link {% if tag.current? %}is-active{% endif %}" href='{{ tag.url }}' title='{{ tag.title }}'>
            {{ tag.title }}
          </a>
        </li>
        {% endfor %}
      </ul>

    </div><!-- /.tags -->

    {% endunless %}
</div>

blogs Массив блогов сайта array

Массив блогов сайта
Liquid
        
          

<h1>Список блогов:</h1>
<ul>
{% for blog in blogs %}
  <li>
    <a href="{{ blog.url }}">
      {{ blog.title }}
    </a>
  </li>
{% endfor %}
</ul>

article in blog.articles

article.author Автор статьи. string

Автор статьи.

article.comments Массив расположенных в хронологическом порядке комментариев. array

Массив расположенных в хронологическом порядке комментариев.

article.comments_count Количество комментариев к статье. number

Количество комментариев к статье.

article.comments_enabled? Возвращает true, если комментарии разрешены boolean

Возвращает true, если комментарии разрешены

article.content Содержание статьи. <html>

Содержание статьи.

article.created_at Время публикации статьи. date

Время публикации статьи.

article.id Id статьи number

Id статьи

article.image Изображение статьи. object

Изображение статьи.

Возможные размеры:

48x48 small_url

100x100 thumb_url

160x160 compact_url

240x240 medium_url

480x480 large_url

original image original_url

Liquid
        
          

{{ article.image.large_url }}

article.moderated? Возвращает true, если модерация разрешена boolean

Возвращает true, если модерация разрешена

article.preview Анонс статьи <html>

Анонс статьи

article.title Заголовок статьи string

Заголовок статьи

article.url URL страницы статьи. string

URL страницы статьи.

article.related_products Товары к статье array

Товары к статье
Liquid
        
          

{% if article.related_products.size > 0 %}
  <div class="related_products">
    <div class="related_products-title">
      Товары к статье
    </div>
  </div>
  {% for product in article.related_products %}
    <div class="card">
      <a href="{{ product.url }}" class="card-preview">
        <img src="{{ product.first_image.medium_url }}" alt="" class="card-img">
        <span class="card-title">
          {{ product.title }}
        </span>
      </a>
    </div>
  {% endfor %}
{% endif %}

article.tags Массив тегов к статье array

Массив тегов к статье
Liquid
        
          

<div class="tags-block">
    {% unless article.tags == empty %}

    <div class="tags">

      <div class="tags-header">
        <h3>Теги:</h3>
      </div><!-- /.tags-header -->

      <ul class="tags-list list-horizontal">
        {% for tag in article.tags %}
        <li class="list-item">
          <a class="list-link" href='{{ tag.url }}' title='{{ tag.title }}'>
            {{ tag.title }} ({{ tag.articles_count }})
          </a>
        </li>
        {% endfor %}
      </ul>

    </div><!-- /.tags -->

    {% endunless %}
</div>

comment

comment.action_url URL используемый для отправки post запроса на создание комментария. string

URL используемый для отправки post запроса на создание комментария.

comment.author Имя автора комментария. string

Имя автора комментария.

comment.content Текст комментария. string

Текст комментария.

comment.created_at Дата создания комментария. date

Дата создания комментария.

comment.email Email автора комментария. string

Email автора комментария.

comment.errors Список имен неправильно заполненных полей. array

Список имен неправильно заполненных полей.

comment.id Id комментария. number

Id комментария.

Language

Language

languages Массив доступных языков array

Массив доступных языков
Liquid
        
          
{% for language in languages %}
  <a href="{{ language.switch_url }}"><img src="{{ language.icon_url }}" alt="{{ language.title }}" 
title="{{ language.title }}"></a> {% endfor %}

language.icon_url Иконка языка. string

Иконка языка.

language.locale Локаль языка. string

Локаль языка.

language.not_default? Проверка на то, что текущий язык не является основным языком интернет-магазина. Это нужно знать, например, в форме поиска, так как нельзя передавать на сервер параметром локаль основного языка. boolean

Проверка на то, что текущий язык не является основным языком интернет-магазина. Это нужно знать, например, в форме поиска, так как нельзя передавать на сервер параметром локаль основного языка.

language.switch_url URL переключения языка магазина на данный язык (используется в списке языков). string

URL переключения языка магазина на данный язык (используется в списке языков).

language.title Название языка. string

Название языка.

Page

page

page.content Содержание страницы. <html>

Содержание страницы.

Максимальное кол-во символов 204800.

page.id Id страницы. number

Id страницы.

page.title Название страницы. string

Название страницы.

page.url URL страницы string

URL страницы
Liquid
        
          

{% comment %}
  Делаем пермалинк страницы вручную
{% endcomment %}
{% assign page_handle = page.url | split: '/' | last %}
<div class="page-content page-{{ page_handle }}">
  {{ page.content }}
</div>

discount

discount

discount.amount Численная величина скидки в денежном эквиваленте. number

Численная величина скидки в денежном эквиваленте.

discount.description Описание скидки. string

Описание скидки.

discount.percent number

Процент скидки, если задана в процентах.

discount.type Тип скидки (деньги или процент). string

Тип скидки (деньги или процент).

order

order

order.items Массив позиций заказа, переменная доступна на странице успешного оформления заказа. array

Массив позиций заказа, переменная доступна на странице успешного оформления заказа.
Liquid
        
          

<div class="order">
  {% for item in order.items %}
  <div class="item">
    <div class="item-title">
      {{ item.title }}
    </div>
    {% if item.sku %}
    <div class="item-title">
      Артикул: {{ item.sku }}
    </div>
    {% endif %}
    <div class="item-quantity">
      {{item.quantity}}
    </div>
    <div class="item-total_price">
      {{ item.total_price | money }}
    </div>
  </div>
  {% endfor %}
</div>

order.client Данные клиента (объект) order.client.name - имя клиента. order.client.surname - фамилия клиента. order.client.middlename - отчество клиента. order.client.phone - телефон клиента. order.client.email - email клиента. object

Данные клиента (объект) order.client.name - имя клиента. order.client.surname - фамилия клиента. order.client.middlename - отчество клиента. order.client.phone - телефон клиента. order.client.email - email клиента.

order.comment Комментарий к заказу. string

Комментарий к заказу.

order.creation_date Дата создания заказа. date

Дата создания заказа.

order.currency Валюта заказа. string

Валюта заказа.

order.delivery_date Дата доставки. date

Дата доставки.

order.delivery_title Название способа доставки. string

Название способа доставки.

order.delivery_description Описание способа доставки. string

Описание способа доставки.

order.delivery_price Стоимость доставки. number

Стоимость доставки.

order.delivery_price.base стоимость доставки без наценки на способ оплаты. number

стоимость доставки без наценки на способ оплаты.

order.delivery_time Интервал времени доставки, например, "с 10 до 18". string

Интервал времени доставки, например, "с 10 до 18".
Liquid
        
          

{% if order.delivery_time %}
  Доставка: {{ order.delivery_time }} {{ order.delivery_date }}
{% endif %}

order.fields Поля заказа order.all_fields - массив кастомных полей заказа order.fields - массив кастомных полей заказа выводимых в корзине order.client.all_fields - массив полей клиента у заказа, включая скрытые поля клиента order.client.client_fields - массив полей клиента у заказа( не включает скрытые поля ) order.shipping_address.all_fields - массив полей адреса у заказа, включая скрытые для клиента поля адреса order.shipping_address.client_fields - массив полей адреса у заказа ( не включает скрытые поля ) order.result_fields - массив полей у заказа показываемые клиенту после оформления заказа object

Поля заказа order.all_fields - массив кастомных полей заказа order.fields - массив кастомных полей заказа выводимых в корзине order.client.all_fields - массив полей клиента у заказа, включая скрытые поля клиента order.client.client_fields - массив полей клиента у заказа( не включает скрытые поля ) order.shipping_address.all_fields - массив полей адреса у заказа, включая скрытые для клиента поля адреса order.shipping_address.client_fields - массив полей адреса у заказа ( не включает скрытые поля ) order.result_fields - массив полей у заказа показываемые клиенту после оформления заказа
Liquid
        
          

{{ order.all_fields['Название поля в бэк-офисе'].value }}

 

order.id Идентификатор заказа (используется для ссылки на страницу заказа в бекофисе). number

Идентификатор заказа (используется для ссылки на страницу заказа в бекофисе).

order.key Ключ, по которому выводится заказ - используется в url. string

Ключ, по которому выводится заказ - используется в url.

order.margin Наценка на способ оплаты. number

Наценка на способ оплаты.

order.number Номер заказа. number

Номер заказа.

order.payment_description Описание способа оплаты. string

Описание способа оплаты.

order.payment_title Название способа оплаты. string

Название способа оплаты.

order.shipping_address Данные адреса доставки (объект). order.shipping_address.name - имя адресата.order.shipping_address.phone - телефон адресата. order.shipping_address.delivery_address - адрес доставки. order.shipping_address.country_name - страна. order.shipping_address.state - регион. order.shipping_address.city - город. order.shipping_address.address - адрес. order.shipping_address.zip - индекс. object

Данные адреса доставки (объект). order.shipping_address.name - имя адресата.order.shipping_address.phone - телефон адресата. order.shipping_address.delivery_address - адрес доставки. order.shipping_address.country_name - страна. order.shipping_address.state - регион. order.shipping_address.city - город. order.shipping_address.address - адрес. order.shipping_address.zip - индекс.

order.paid? Заказ оплачен? boolean

Заказ оплачен?
Liquid
        
          

{% if order.paid? %}
  оплачен
{% else %}
  не оплачен
{% endif %}

order.payment_needed? Необходима оплата? boolean

Необходима оплата?
Liquid
        
          

{% if order.payment_needed? %}
  {% if order.paid_with_bank_bill? %}
    <a href="{{ order.pay_url }}">Перейти к оплате (распечатать квитанцию)</a>
  {% else %}
    <a href="{{ order.pay_url }}">Перейти к оплате</a>
  {% endif %}
{% endif %}

order.paid_with_bank_bill? Оплачен через банк? boolean

Оплачен через банк?
Liquid
        
          

{% if order.payment_needed? %}
  {% if order.paid_with_bank_bill? %}
    <a href="{{ order.pay_url }}">Перейти к оплате (распечатать квитанцию)</a>
  {% else %}
    <a href="{{ order.pay_url }}">Перейти к оплате</a>
  {% endif %}
{% endif %}

order.pay_url Ссылка на страницу оплаты заказа string

Ссылка на страницу оплаты заказа
Liquid
        
          

{% if order.payment_needed? %}
  {% if order.paid_with_bank_bill? %}
    <a href="{{ order.pay_url }}">Перейти к оплате (распечатать квитанцию)</a>
  {% else %}
    <a href="{{ order.pay_url }}">Перейти к оплате</a>
  {% endif %}
{% endif %}

order.customer_status Пользовательский статус string

Пользовательский статус

Статусы поумолчанию

В бэк-офисе На сайте
Новый (new) Принят
В обработке (accepted) В обработке
Согласован (approved) Согласован
Отгружен (dispatched) В доставке
Доставлен (delivered) Выполнен
Отменен (declined) Отменен
Возврат (returned) Возврат
Liquid
        
          

{% capture span_class %}{% if order.fulfillment_status == 'declined' or order.fulfillment_status == 'returned' %}red{% else %}green{% endif %}{% endcapture %}
<span class='{{ span_class }}'>{{ order.customer_status }}</span>

order.fulfillment_status статус выполнения string

статус выполнения

Статусы поумолчанию

В бэк-офисе На сайте
Новый (new) Принят
В обработке (accepted) В обработке
Согласован (approved) Согласован
Отгружен (dispatched) В доставке
Доставлен (delivered) Выполнен
Отменен (declined) Отменен
Возврат (returned) Возврат
Liquid
        
          

{% capture span_class %}{% if order.fulfillment_status == 'declined' or order.fulfillment_status == 'returned' %}red{% else %}green{% endif %}{% endcapture %}
<span class='{{ span_class }}'>{{ order.customer_status }}</span>

order.custom_status_title Пользовательский статус string

Пользовательский статус

order.total_price Сумма заказа с учетом скидки number

Сумма заказа с учетом скидки

order.items_price Сумма позиций заказа без учета скидки number

Сумма позиций заказа без учета скидки

order.status Статус заказа string

Статус заказа

new - Новый
accepted - В обработке
approved - Согласован
dispatched - Отгружен
delivered - Доставлен
declined - Отменен
returned - Возврат

field

field.description Описание поля string

Описание поля

field.file_name Имя залитого файла string

Имя залитого файла

field.for_buyer? Показывается ли клиенту boolean

Показывается ли клиенту

field.is_file? Является ли поле, полем для файла boolean

Является ли поле, полем для файла

field.obligatory? Обязательное ли поле boolean

Обязательное ли поле

field.office_title Название поля в бэк офисе string

Название поля в бэк офисе

field.title Название поля для клиента string

Название поля для клиента

field.type Тип поля file_field - загрузка файла text_area - текстовое многострочное поле select - выпадающий список checkbox - чекбокс text_field -текстовое поле obligatory_text_field - обязательно текстовое поле(системный тип для поля "Контактное лицо") system_text_field - текстовые поля первоначально введенные в бэк офис. system_checkbox - чекбокс первоначально введенный в бэк офис(первоначально - Подписка) phone - телефон country - страна kladr - Комплексная форма для ввода адреса. string

Тип поля file_field - загрузка файла text_area - текстовое многострочное поле select - выпадающий список checkbox - чекбокс text_field -текстовое поле obligatory_text_field - обязательно текстовое поле(системный тип для поля "Контактное лицо") system_text_field - текстовые поля первоначально введенные в бэк офис. system_checkbox - чекбокс первоначально введенный в бэк офис(первоначально - Подписка) phone - телефон country - страна kladr - Комплексная форма для ввода адреса.

field.value Значение поля string

Значение поля

field.input Сам input поля для вывода в шаблон корзины <html>

Сам input поля для вывода в шаблон корзины

first_time_loading_page

first_time_loading_page Первая загрузка страницы (доступно только на странице успешного заказа). Переменная полезна для отправки аналитики по заказам. boolean

Первая загрузка страницы (доступно только на странице успешного заказа). Переменная полезна для отправки аналитики по заказам.

client

client_group

client_group.title Имя группы к которой принадлежит залогиненый клиент. Список групп можно посмотреть в бэк-офисе в разделе клиенты string

Имя группы к которой принадлежит залогиненый клиент.
Список групп можно посмотреть в бэк-офисе в разделе клиенты
Liquid
        
          

{% if client_group.title == 'Оптовики' %}
  Контент для пользователей группы "Оптовики"
{% endif %}

client_group.id id группы к которой принадлежит залогиненый клиент. number

id группы к которой принадлежит залогиненый клиент.

Id группы можно узнать только выведя эту переменную в код и войти под пользователем включенным в нужную группу.
Если нужна проверка на вхождение клиента в определенную группу, используйте client_group.title

client_group.discount скидка группы к которой принадлежит залогиненый клиент number

скидка группы к которой принадлежит залогиненый клиент

client_group.discount_description описание скидки группы к которой принадлежит залогиненый клиент string

описание скидки группы к которой принадлежит залогиненый клиент

client

client По клиенту нельзя выводить его персональную информацию, только факт того, что клиент залогинен boolean

По клиенту нельзя выводить его персональную информацию, только факт того, что клиент залогинен
Liquid
        
          

{% if client %}

Информация для клиентов

{% endif %}

Paginate

Paginate

paginate.current_page Возвращает номер текущей страницы. number

Возвращает номер текущей страницы.

paginate.current_offset Возвращает общее количество элементов, которые находятся на страницах, предшествующих текущему. Например, если вы постраничного на 5 и на третьей странице, paginate.current_offset вернется 10. number

Возвращает общее количество элементов, которые находятся на страницах, предшествующих текущему. Например, если вы постраничного на 5 и на третьей странице, paginate.current_offset вернется 10.

paginate.items Возвращает общее количество элементов, которые будут пронумерованы. Например, если вы постраничного коллекцию из 99 продуктов, paginate.items возвратит 99. number

Возвращает общее количество элементов, которые будут пронумерованы. Например, если вы постраничного коллекцию из 99 продуктов, paginate.items возвратит 99.

paginate.parts array

Возвращает массив всех частей пагинации.

Liquid
        
          

{% for part in paginate.parts %}
  {% if part.is_link %}
    <li class="pagination-page">
      <a href="{{ part.url }}"
          class="pagination-node pagination-node--link"
      >
        {{ part.title }}
      </a>
    </li>
  {% else %}
    <li class="pagination-page">
      {% if part.title == paginate['current_page'] %}
        <span class="pagination-node pagination-node--block pagination-node--current">
          {{ part.title }}
        </span>
      {% else %}
        <span class="pagination-node--block">
          {{ part.title }}
        </span>
      {% endif %}
    </li>
  {% endif %}
{% endfor %}

paginate.previous.url string

Возвращает ссылку на предыдущую страницу пагинации.

paginate.next.url string

Возвращает ссылку на следущую страницу пагинации.

paginate.page_size string

Возвращает количество элементов, отображаемых на одной странице.

paginate.pages Возвращает количество страниц, созданных пагинацией. number

Возвращает количество страниц, созданных пагинацией.

account

account

account.phone Телефон из настроек аккаунта. string

Телефон из настроек аккаунта.

account.title Название интернет-магазина из настроек аккаунта. string

Название интернет-магазина из настроек аккаунта.

account.email e-mail магазина string

e-mail магазина

account.url url, используемый для перехода в бекофис из письма. string

url, используемый для перехода в бекофис из письма.

account.icq Номер ICQ из настроек аккаунта. string

Номер ICQ из настроек аккаунта.

account.reviews_enabled? флаг указывающий включены отзывы на товар или нет boolean

флаг указывающий включены отзывы на товар или нет

account.reviews_moderated? флаг указывающий включена ли модерация отзывов на товары или нет boolean

флаг указывающий включена ли модерация отзывов на товары или нет

account.enable_clients? флаг указывающий доступен ли на текущем тарифе личный кабинет покупателя boolean

флаг указывающий доступен ли на текущем тарифе личный кабинет покупателя

account.delivery_variants массив всех способов доставки object

массив всех способов доставки

account.delivery_variants.id - id способа доставки
account.delivery_variants.title - название способа доставки
account.delivery_variants.price - стоимость способа доставки

Liquid
        
          

{% for delivery_variant in account.delivery_variants %}
<div>
Id способа доставки - {{delivery_variant.id}}
</div>
<div>
Название способа доставки - {{delivery_variant.title}}
</div>
<div>
Стоимость - {{delivery_variant.price}}
</div>
<div>
Описание - {{delivery_variant.description}}
</div>
<div>
Бесплатно при заказе от - {{delivery_variant.charge_up_to}}
</div>
{% endfor %}

account.payment_gateways массив всех способов оплаты object

массив всех способов оплаты

account.payment_gateways.id - id способа оплаты
account.payment_gateways.title - название способа оплаты

account.enable_comparison? Включено ли сравнение? boolean

Включено ли сравнение?

account.bonus_system.bonus_percent Бонусный процент string

Бонусный процент

account.bonus_system.max_discount Максимальная скидка string

Максимальная скидка

account.bonus_system.ratio Коэффициент конвертации денег в баллы и наоборот. Например, если коэффициент = 2, то 1р. = 2 балла string

Коэффициент конвертации денег в баллы и наоборот. Например, если коэффициент = 2, то 1р. = 2 балла

Если коэффициент 2 и бонусный процент 10.
То за заказ на 500 рублей, будет зачислено 100 баллов (50рублей).
И если будешь оплачивать бонусами то 70бонусов / 2 = 35р.

account.bonus_system.registration_bonus Бонус за регистрацию string

Бонус за регистрацию

account.bonus_system Бонус InSales object

Бонус InSales
Liquid
        
          

{% if account.bonus_system %}
Бонусная система включена
{% else %}
Бонусная система отключена
{% endif %}

account.subdomain Имя поддомена, например shop-42497 string

Имя поддомена, например shop-42497

account.hide_items_out_of_stock Состояние настройки - "Не показывать товар, если у него нулевой остаток" boolean

Состояние настройки - "Не показывать товар, если у него нулевой остаток"

account.order_line_comments_enabled Состояние настройки - "Включить комментарии к позициям заказа" boolean

Состояние настройки - "Включить комментарии к позициям заказа"
Liquid
        
          

В форме товара:

{% if account.order_line_comments_enabled %}
<input type="text" name="comment" value="">
{% endif %}

В форме корзины

{% if account.order_line_comments_enabled %}
<input type="text" name="cart[order_line_comments][{{ item.id }}]" value="{{ item.comment }}" />
{% endif %}

Заказ в один клик

account.quick_checkout.enabled включен ли заказ в один клик boolean

включен ли заказ в один клик

account.quick_checkout.auto_activate заказ в один клик в автоматическом режиме boolean

заказ в один клик в автоматическом режиме

account.quick_checkout.dialog_title заголовок диалогового окна string

заголовок диалогового окна

account.quick_checkout.button_title название кнопки подтвердить заказ string

название кнопки подтвердить заказ

account.quick_checkout.success_notification сообщение об успешном оформлении заказа string

сообщение об успешном оформлении заказа

social_net_profiles

social_net_profiles Профили в соцсетях array

Профили в соцсетях
Liquid
        
          

<div class="networks">
{% for social_net in social_net_profiles %}
  <a href="{{ social_net.link }}" class="network-link is-{{ social_net.network_name }}" title="{{ social_net.account_name }}"></a>
{% endfor %}
</div>

Доступные варианты для network_name следующие: [vkontakte facebook instagram youtube twitter odnoklassniki telegram mail_ru]

helpers

forloop

forloop.length количество элементов в массиве number

количество элементов в массиве

forloop.index номер текущей итерации number

номер текущей итерации

forloop.index0 номер текущей итерации (считая от нуля) number

номер текущей итерации (считая от нуля)

forloop.rindex сколько элементов осталось number

сколько элементов осталось

forloop.rindex0 сколько элементов осталось (считая от нуля) number

сколько элементов осталось (считая от нуля)

forloop.first первая итерация? boolean

первая итерация?

forloop.last последняя итерация? boolean

последняя итерация?

images

image Изображение товаров/коллекций/статей. Доступные поля: image.title - Возвращает описание картинки image.file_name - Возвращает название файла картинки image.small_url - 48x48 image.thumb_url - 100x100 image.compact_url - 240x240 image.large_url - 480x480 image.original_url - original image object

Изображение товаров/коллекций/статей.
Доступные поля:
image.title - Возвращает описание картинки
image.file_name - Возвращает название файла картинки
image.small_url - 48x48
image.thumb_url - 100x100
image.compact_url - 240x240
image.large_url - 480x480
image.original_url - original image
Liquid
        
          

<img src="{{ product.first_image.large_url }}">
<img src="{{ collection.image.large_url }}">
<img src="{{ article.image.large_url }}">

Фильтры liquid

Фильтры для массивов

size Возвращает длинну массива

Возвращает длинну массива
Liquid
        
          

{% assign string = 'wooden, deepsnow, season2006' %}
{% assign array = string | split: ', ' | reverse %}
{{ array | size }}
#=> 3

first Фильтр возвращает первый элемент из массива

Фильтр возвращает первый элемент из массива
Liquid
        
          

{% assign string = 'wooden, deepsnow, season2006' %}
{% assign array = string | split: ', '%}
{{ array | first }}
#=> wooden

last Фильтр возвращает последний элемент из массива

Фильтр возвращает последний элемент из массива
Liquid
        
          

{% assign string = 'wooden, deepsnow, season2006' %}
{% assign array = string | split: ', '%}
{{ array | last }}
#=> season2006

split Разбивает строку на массив подстрок по указанному разделителю

Разбивает строку на массив подстрок по указанному разделителю
Liquid
        
          

{% assign string = 'wooden, deepsnow, season2006' %}
{% assign array = string | split: ', '%}
{{array[0]}} #=> wooden

join Фильтр объединяет массив в строку, используя как разделитель элементов указанную последовательность символов.

Фильтр объединяет массив в строку, используя как разделитель элементов указанную последовательность символов.
Liquid
        
          

{% assign my_string = 'wooden, deepsnow, season2006' %}
{% assign my_array = my_string | split: ', '%}
{{ my_array | join: ', ' }}
#=> wooden, deepsnow, season2006

reverse Меняет порядок элементов в массиве.

Меняет порядок элементов в массиве.
Liquid
        
          

{% assign string = 'wooden, deepsnow, season2006' %}
{% assign array = string | split: ', ' | reverse %}
{{ array | first }}
#=> season2006
{{ array | last }}
#=> wooden

sort Фильтр используется для сортировки массива. Второй параметр - необязательный.

Фильтр используется для сортировки массива. Второй параметр - необязательный.
Liquid
        
          

<!-- products = "a", "b", "A", "B" -->
{% assign products = collection.products | sort: 'title' %}
{% for product in products %}
  {{ product.title }}
{% endfor %}

#=> A B a b

map Принимает атрибут элемента массива в качестве параметра и создает массив из значения каждого элемента массива.

Принимает атрибут элемента массива в качестве параметра и создает массив из значения каждого элемента массива.
Liquid
        
          

{% assign collection_titles = collections | map: 'title' %}

{% for collection_title in collection_titles %}
  {{ collection_title }},
{% endfor %}

#=> каталог1,каталог2,каталог3,

where Отфильтровать массив по полям и их значениям

Отфильтровать массив по полям и их значениям
Liquid
        
          

{{ collections.all.products | where: "available", false | size }}

concat Объединение двух массивов в один

Объединение двух массивов в один
Liquid
        
          

{% assign fruits = "apples, oranges, peaches, tomatoes" | split: ", " %}
{% assign vegetables = "broccoli, carrots, lettuce, tomatoes" | split: ", " %}

{% assign plants = fruits | concat: vegetables %}

=> ["apples","oranges","peaches","tomatoes","tomatoes","broccoli","carrots","lettuce","tomatoes"]

uniq Убирает дубли элементов массива

Убирает дубли элементов массива
Liquid
        
          

{% assign fruits = "apples, oranges, peaches, tomatoes, tomatoes" | split: ", " | uniq | json  %} 

=> [apples, oranges, peaches, tomatoes]

Математические фильтры

plus Фильтр возвращает результат сложения input и operand. Если это строки, то они приводятся к формату "целое" перед сложением.

Фильтр возвращает результат сложения input и operand. Если это строки, то они приводятся к формату "целое" перед сложением.
Liquid
        
          

{% assign number = 2 %}
{{ number | plus: 2 }}
#=> 4

minus Фильтр возвращает результат вычитания operand из input. Если это строки, то они приводятся к формату "целое" перед вычитанием.

Фильтр возвращает результат вычитания operand из input. Если это строки, то они приводятся к формату "целое" перед вычитанием.
Liquid
        
          

{% assign number = 2 %}
{{ number | minus: 2 }}
#=> 0

times Фильтр возвращает результат умножеия

Фильтр возвращает результат умножеия
Liquid
        
          

{{ 10 | times: 2 }}
#=> 20

divided_by Фильтр возвращает результат деления

Фильтр возвращает результат деления
Liquid
        
          

{{ 10 | divided_by: 2 }}
#=> 5

round round(input, operand) Фильтр возвращает результат округления operand до input знаков после разделителя.

round(input, operand)
Фильтр возвращает результат округления operand до input знаков после разделителя.
Liquid
        
          

{{ 4.6 | round: 0 }}
{{ 4.3 | round: 0 }}
{{ 4.5612 | round: 2 }}
#=> 5
#=> 4
#=> 4.56

modulo Модуль числа. Возвращает остаток после деления

Модуль числа. Возвращает остаток после деления
Liquid
        
          

{{ 12 | modulo: 5 }}
#=> 2

Фильтры для ссылок

asset_url Возвращает ссылку на файл из темы. Если файла в теме нет, ссылка всё равно сформируется и переход по ссылке вернет 404 статус.

Возвращает ссылку на файл из темы.
Если файла в теме нет, ссылка всё равно сформируется и переход по ссылке вернет 404 статус.
Liquid
        
          
{{ 'shop.css' | asset_url }}
=> //assets3.insales.ru/assets/1/7120/23504/v_1479117076/build/shop.css

asset_url_if_exists Возвращает ссылку на файл из темы. Если файла в теме нет, возвращается пустая строка.

Возвращает ссылку на файл из темы.
Если файла в теме нет, возвращается пустая строка.
Liquid
        
          

{% assign path = "image.png" | asset_url_if_exists %}
{% if path %}
  <img src="{{ path }}" />
{% else %}
  Картинка отсутствует
{% nedif %}

file_url Фильтр формирует полный путь до файла из раздела Сайт->Файлы

Фильтр формирует полный путь до файла из раздела Сайт->Файлы
Liquid
        
          
{{ 'image.png' | file_url }}

Строковые фильтры

money Добавляет символ валюты к числу. В соответствии с настройками в бэк-офисе. Посмотреть или изменить настройки можно тут: Настройки -> Настройки магазина -> Валюты Фильтр обрабатывает только цифры.

Добавляет символ валюты к числу. В соответствии с настройками в бэк-офисе.
Посмотреть или изменить настройки можно тут:
Настройки -> Настройки магазина -> Валюты

Фильтр обрабатывает только цифры.
Liquid
        
          
{{ product.price | money }}

#=> 1 000 руб.

{{ 1000 | money }}

#=> 1 000 руб.

append Добавить символы к концу строки

Добавить символы к концу строки
Liquid
        
          

{{ 'sales' | append: '.jpg' }}
#=> sales.jpg

prepend Добавить символы к началу строки

Добавить символы к началу строки
Liquid
        
          

{{ 'sale' | prepend: 'Made a great ' }}

#=> Made a great sale

capitalize Фильтр используется для преобразования первой буквы строки в заглавную

Фильтр используется для преобразования первой буквы строки в заглавную
Liquid
        
          

{{ 'capitalize me' | capitalize }}
#=> Capitalize me

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

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

<!-- product.title = "Awesome Shoes" -->
{{ product.title | replace: 'Awesome', 'Mega' }}

#=> Mega Shoes

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

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

{{ 'i want this to be uppercase' | upcase }}
#=> I WANT THIS TO BE UPPERCASE

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

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

{{ 'UPPERCASE' | downcase }}
#=> uppercase

escape Фильтр используется для преобразовывания специальных html символов

Фильтр используется для преобразовывания специальных html символов
Liquid
        
          

{{ "<p>test</p> <div class='block'></div>" | escape }}
#=> &lt;p&gt;test&lt;/p&gt; &lt;div class='block'&gt;&lt;/div&gt;

newline_to_br Фильтр добавляет тег конца строки перед каждым служебным символом "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).

Фильтр добавляет тег конца строки
перед каждым служебным символом "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).
Liquid
        
          

{% capture var %}
One
Two
Three
{% endcapture %}
{{ var | newline_to_br }}

#=>

One <br>
Two<br>
Three<br>

strip_html Этот фильтр изымает из указанного текста все HTML-теги. Очень эффективен в сочетании с truncate.

Этот фильтр изымает из указанного текста все HTML-теги. Очень эффективен в сочетании с truncate.
Liquid
        
          

{{ '<p>Текст в теге </br> новая строка</p>' | strip_html | truncate: 20 }}

>> Текст в теге нов...

md5 Преобразует строку в MD5 хеш.

Преобразует строку в MD5 хеш.
Liquid
        
          

{{ 'test md5' | md5 }}

#=> 0e4e3b2681e8931c067a23c583c878d5

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

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

{{ "Hello, world. Goodbye, world." | remove: "world" }}
#=> Hello, . Goodbye, .

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

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

{{ "Hello, world. Goodbye, world." | remove_first: "world" }}
#=> Hello, . Goodbye, world.

lstrip Удалить табы, пробелы, переносы в начале строки

Удалить табы, пробелы, переносы в начале строки
Liquid
        
          

{{ " So much room for activities! " | lstrip }}
>> So much room for activities!

truncate Фильтр укорачивает строки до указанного количества символов удалением конца строки.

Фильтр укорачивает строки до указанного количества символов удалением конца строки.
Liquid
        
          

{{ "The cat came back the very next day" | truncate: 13 }}
The cat ca...


{{ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" | truncate: 18, ", and so on" }}
ABCDEFG, and so on

truncatewords Фильтр укорачивает строку до указанного количества символов удалением конца строки.

Фильтр укорачивает строку до указанного количества символов удалением конца строки.
Liquid
        
          
{{ "The cat came back the very next day" | truncatewords: 4 }}
The cat came back...

{{ "The cat came back the very next day" | truncatewords: 4, "--" }}
The cat came back--

strip_newlines Фильтр изымает из указанной последовательности символов служебный символ "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).

Фильтр изымает из указанной последовательности символов служебный символ "Новая строка" (символ, обозначаемый NL, \n, имеющий код 0ah).

url_encode

Liquid
        
          

{{ "john@liquidhub.ru" | url_encode }}

=> john%40liquidhub.ru

url_decode

Liquid
        
          

{{ 'john%40liquidhub.ru' | url_decode }}

=> john@liquidhub.ru

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

default Задать значение поумолчанию

Задать значение поумолчанию
Liquid
        
          

{{ product_price | default: 2.99 }}
>> 2.99
{% assign product_price = "" %}
{{ product_price | default: 2.99 }}
>> 2.99

date Фильтр преобразует формат даты в указанный (все даты - григорианского календаря)

Фильтр преобразует формат даты в указанный (все даты - григорианского календаря)
  • %a - Сокращённое обозначение дня недели (``Sun'')
  • %A - Полное обозначение дня недели (``Sunday'')
  • %b - Сокращённое обозначение названия месяца (``Jan'')
  • %B - Полное обозначение названия месяца (``January'')
  • %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 - Имя временной зоны
  • %% - Обозначает символ ``%''
Liquid
        
          
{{ 'now' | date: "%Y" }}

json Преобразует строку или Liquid переменную в JSON формат.

Преобразует строку или Liquid переменную в JSON формат.
Liquid
        
          

<script type="text/javascript">
  var myObject = {
    text: {{ '<p>Строка в html теге</p>' | json }},
    product: {{ product | json }}
  }
  console.log(myObject);
</script>

custom_json Получение полей liquid объектов в JSON формате

Получение полей liquid объектов в JSON формате
Liquid
        
          

<script type="text/javascript">
  var customArticle = {{ article | custom_json: 'title', 'id', 'author' }};
</script>

Фильтры для изображений

image_url Фильтр для указания размера изображения.

Фильтр для указания размера изображения.

Фильтр на вход принимает параметр в виде числа.
Например если указать 200, то изображение уменьшится с сохранением пропорций до 200px по длинной стороне. 200x400 = > 100x200.
Минимальный размер 16px.
Максимальный размер 2048px.

У фильтра есть второй не обязательный параметр - format.
Этот параметр принимает 2 значения - 'jpg' или 'webp'.
Параметр format преобразовывает png => jpg или любой формат в webp, что позволяет оптимизировать изображение.

! Если исходное изображение по размеру меньше указанного в фильтре, изображение будет растянуто до указанно значения.

! Применяется к изображениям товара/статьи/категории.

! Не применим к изображениям из раздела файлы.

Liquid
        
          

<img src="{{ product.first_image | image_url: 800 }}">

<img src="{{ article.image | image_url: 320, format: 'jpg' }}">

<img src="{{ collection.image | image_url: 600, format: 'webp' }}">

webp_picture_tag Фильтр создает из объекта изображения тег picture, в который добавляет изображение в формате .webp, а так же тег img с исходным форматом.

Фильтр создает из объекта изображения тег picture, в который добавляет изображение в формате .webp, а так же тег img с исходным форматом.

Фильтр принимает обязательное значение (размер изображения) в формате числа.

Через запятую можно указать атрибуты для тега img. Если у изображения товара заполнено имя, оно проставиться в атрибут title автоматически. 

Применяется только к изображениям товара/статьи/категории.

! Не применим к изображениям из раздела файлы.

Liquid
        
          

{% assign image_title = product.title | escape %}
{{ product.first_image | webp_picture_tag: 600, class: 'product-image', data-index: 1, alt: image_title }}

На выходе получаем =>

<picture>
  <source srcset="https://static-eu.insales.ru/.../600/600/.../product.png@webp" type="image/webp">
  <img src="https://static-eu.insales.ru/.../600/600..product.png" class="product-image" data-index="1" alt="товар">
</picture>

---

{{ collection.image | webp_picture_tag: 600 }}

На выходе получаем =>

<picture>
<source srcset="https://static-eu.insales.ru/.../600/600/.../image_original.jpg@webp" type="image/webp">
<img src="https://static-eu.insales.ru/r/.../600/600/.../image_original.jpg">
</picture>

Операторы/конструкции

Логические конструкции

If Оператор проверяет условие "если"

Оператор проверяет условие "если"
Liquid
        
          

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

else Условный оператор "иначе"

Условный оператор "иначе"
Liquid
        
          

{% if user %}
  Привет, {{ user.name }}
  {% else %}
  <a href="/client_account/contacts/new">Зарегистрироваться</a>
{% endif %}

Elsif Условный оператор который позоваляет делать новые ветки проверок

Условный оператор который позоваляет делать новые ветки проверок
Liquid
        
          

{% if user.name == 'tobi' %}
  Hello tobi
{% elsif user.name == 'bob' %}
  Hello bob
{% else %}
  Hello guest
{% endif %}

Unless Оператор Unless, в отличии от оператора If, удобен, если надо проверить отрицание условия

Оператор Unless, в отличии от оператора If, удобен, если надо проверить отрицание условия
Liquid
        
          

{% unless product.title contains 'колбаса' %}
  Это не колбаса
{% endunless %}

case/when Конструкция switch заменяет собой сразу несколько if или elsif.

Конструкция switch заменяет собой сразу несколько if или elsif.
Liquid
        
          
{% case handle %}
  {% when 'cake' %}
     This is a cake
  {% when 'cookie' %}
     This is a cookie
  {% else %}
     This is not a cake nor a cookie
{% endcase %}

Логические операторы

== равно

равно
Liquid
        
          
{% if product.title == "колбаса" %}
  Это колбаса
{% endif %}

!= Не равно

Не равно
Liquid
        
          
{% if product.title != 'колбаса' %} 
Это не колбаса
{% endif %}

> Больше

Больше
Liquid
        
          
{% if collection.products > 10 %} 
Товаров больше 10
{% endif %}

< Меньше

Меньше
Liquid
        
          
{% if collection.products < 10 %} 
Товаров меньше 10
{% endif %}

>= Больше или равно

Больше или равно
Liquid
        
          
{% if collection.products >= 10 %} 
Товаров больше или равно 10
{% endif %}

<= Меньше или равно

Меньше или равно
Liquid
        
          
{% if collection.products <= 10 %} 
Товаров меньше или равно 10
{% endif %}

or Или

Или
Liquid
        
          
{% if collection.subcollections.size > 0 or collection.title == 'Бренды' %} 
коллекция бренды или коллекция включающая более 0 субколлекций
{% endif %}

and И

И
Liquid
        
          
{% if collection.subcollections.size > 0 and collection.title == 'Бренды' %} 
Если имя коллекции - бренды и коллекция включает более 0 субколлекций
{% endif %}

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

Проверяет наличие подстроки внутри строки или внутри массива из строк.
Liquid
        
          
{% if product.title contains 'Pack' %}
  This product's title contains the word Pack.
{% endif %}
{% if article.tags contains 'Hello' %}
  This article has been tagged with 'Hello'.
{% endif %}

Итерационные теги

for Цикл применяется для обхода массивов

Цикл применяется для обхода массивов
Liquid
        
          

{% for product in collection.products %}
  {{ product.title }}
{% endfor %}

break Встретив тег {% break %} цикл прекращает итерации

Встретив тег {% break %} цикл прекращает итерации
Liquid
        
          

{% for i in (1..5) %}
  {% if i == 4 %}
    {% break %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}

#=> 1 2 3

continue Пропустить итерацию

Пропустить итерацию
Liquid
        
          

{% for i in (1..5) %}
  {% if i == 4 %}
    {% continue %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}

#=> 1 2 3   5

 

cycle Сycle чередует вывод переданных параметров. Можно использовать в цикле for.

Сycle чередует вывод переданных параметров. Можно использовать в цикле for.
Liquid
        
          

{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}

#=> one
#=> two
#=> three
#=> one

{% cycle 'group 1': 'one', 'two', 'three' %}
{% cycle 'group 1': 'one', 'two', 'three' %}
{% cycle 'group 2': 'one', 'two', 'three' %}
{% cycle 'group 2': 'one', 'two', 'three' %}

#=> one
#=> two
#=> one
#=> two

{% for i in (0..5) %}
  {% cycle '1', '2', '3' %}
{% endfor %}

#=> 1
#=> 2
#=> 3
#=> 1
#=> 2
#=> 3

limit Параметр limit ограничивает количество итераций

Параметр limit ограничивает количество итераций
Liquid
        
          

<!-- if array = [1,2,3,4,5,6] -->
{% for item in array limit:2 %}
  {{ item }}
{% endfor %}

#=> 1 2

offset Параметр offset указывает с какого индекса начанинать итерации

Параметр offset указывает с какого индекса начанинать итерации
Liquid
        
          

<!-- if array = [1,2,3,4,5,6] -->
{% for item in array offset:2 %}
  {{ item }}
{% endfor %}

#=> 3 4 5 6

Специальные теги

capture Capture объединяет несколько переменных в одну строку

Capture объединяет несколько переменных в одну строку
Liquid
        
          

{% capture my_var %}<p>Первая строка</p>{% endcapture %}
{% capture my_var %}<p>Вторая строка</p>{% endcapture %}
{{ my_var }}
=> <p>Вторая строка</p>

{% capture my_var %}<p>Первая строка</p>{% endcapture %}
{% capture my_var %}{{ my_var }}<p>Вторая строка</p>{% endcapture %}
{{ my_var }}
=> <p>Первая строка</p>
=> <p>Вторая строка</p>

 

{% assign array = 'первый второй третий' | split: ' ' %}
{% for item in array %}
  {% capture text_array %}[{{ item }}]{% endcapture %}
{% endfor %}
{{ text_array }} => [третий]


{% for item in array %}
  {% capture text_array2 %}{{ text_array2 }}[{{ item }}]{% endcapture %}
{% endfor %}
{{ text_array2 }} => [первый][второй][третий]

cache Создать кешируемый блок. В качестве параметра уникальный ключ.

Создать кешируемый блок. В качестве параметра уникальный ключ.
Liquid
        
          

{% capture cache_menu_key %}cache_menu_key_{{ collections.last_updated_at }}_{{ languge.local }}{% endcapture %}

{% cache cache_menu_key %}
.. кешируемый код
{% endcache %}

Шаблонизатор библиотеки LoDash

_.template

Синтаксис

<% javascript code; %> – javascript код

Между разделителями <% ... %> записывается и выполняется javascript код.

 

<%= HTMLString %> – вывод строки как HTML

Содержимое переменной будет выводиться как HTML.

 

<%- text %> – вывод строки в виде текста.

Теги будут будут преобразованы в текст. Например <hr> -> &lt;hr&gt;

 

script type="text/template"

Теги script с типом type="text/template" служат контейнерами для шаблонов.

Данные записанные в данном теге не будут отображаться на странице, таким образом мы прячем шаблон.

Liquid
        
          
<script type="text/template" id="items-template">
<div class="items">
  <% _.forEach(items, function(item) { %>
  <div class="item-title">
    <%- item.title %>
  </div>
  <div class="item-description">
    <%= item.description %>
  </div>
  <% }); %>
</div>
</script>

Создание рендер функции и передача данных

Чтобы отрисовать шаблон на основе данных, нам нужно создать рендер функцию.

Рендер функция создается из написанного нами шаблона.

Это нужно для того чтобы заменить <%- title %> на данные из javascript объектов.

Чтобы создать рендер функцию нужно передать в метод _.template содержимое нашего шаблона.

Для удобства мы записываем шаблоны в тег script type="text/template".

Получившийся результат можем вывести на страницу в виде html кода.

 

🖥️ Пример на codepen.io

🖥️ Пример с динамическими данными на codepen.io

Liquid
        
          
<div class="js-dinamic"></div>

<script type="text/template" id="hello">
hello <%= user %>!
</script>

<script type="text/javascript">
var compiled = _.template($('#hello').html());
$('.js-dinamic').html(compiled({ 'user': 'fred' }));
</script>

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

Liquid
        
          
<script type="text/template" id="main-template">
  Цикл из массива items.
  <% _.forEach(items, function(item, index) { %>
  <div class="item">
    (<%- index %>) <%- item %>
  </div>
  <% }); %>

  <div>
    Используя внутри шаблона javascript методы, обязательно ставьте точку с запятой (;).
    <% console.log(items); %>
    <br>
    Но если вызываем функцию которая возвращает значение то точка с запятой не ставится и в разделитель добавляется знак равно (=).
    <%= textUpperCase('text') %>
    => TEXT
  </div>

  <div>
    Операторы сравнения.
    <% if (true) { %>
      Истина
    <% }else{ %>
      Ложь
    <% } %>
    <% if (true) { %>
      Только истина
    <% } %>
  </div>

  Использование кода в атрибутах.
  <% _.forEach(items, function(item, index) { %>
  <div class="item" data-inex="<%- index %>">
    <%- item %>
  </div>
  <% }); %>
</script>

<script type="text/javascript">
  // Функция делает все буквы заглавными
  function textUpperCase(text) {
    return text.toUpperCase();
  }
</script>

CommonV2

Вывод массива товаров (Common.V2)

Liquid
        
          
<script type="text/template" id="products-template">
<% _.forEach(items, function(item, product) { %>
  <form class="card" data-product-id="<%= product.id %>">
    <a href="<%= product.url %>" class="card-image">
      <img src="<%= product.first_image.large_url %>">
    </a>

    <div class="card-title">
      <a href="<%= product.url %>">
        <%= product.title %>
      </a>
    </div>

    <div class="card-prices">
      <div class="card-price">
        <%= Shop.money.format(product.variants[0].price) %>
      </div>
      <% if (product.variants[0].old_price){ %>
        <div class="card-old_price">
          <%= Shop.money.format(product.variants[0].old_price) %>
        </div>
        <% } %>
      </div>

      <div class="card-action">
        <input type="hidden" name="variant_id" value="<%= product.variants[0].id %>" >

        <div data-quantity>
          <input type="text" name="quantity" value="1" />
          <span data-quantity-change="-1">-</span>
          <span data-quantity-change="1">+</span>
        </div>
      </div>

      <div class="card-buy">
        <% if (product.variants.size > 1){ %>
          <a href="<%= product.url %>" class="btn">Подробнее</a>
        <% }else{ %>
          <button data-item-add class="btn" type="submit">В корзину</button>
        <% } %>
      </div>
  </form>
<% }); %>

<!-- Если нужно узнать какие переменные переданы в рендер функцию, нужно вывести переменную obj.
<% console.log(obj); %> -->
</script>

Setup.json

Данный файл описывает, что нужно создавать в магазине при установке или инициализации темы.

Перечень объектов доступных для создания

Категории на сайте Массив категорий. Задается идентификатор и название каждой категории.

Массив категорий. Задается идентификатор и название каждой категории.
js
        
          
"collections": {
  "apparel":"Одежда",
  "Tehnika":"Модная одежда",
}

Панели блоков Задается идентификатор и название каждой панели блоков. Можно также задать идентификаторы блоков, которые надо добавить на панель.

Задается идентификатор и название каждой панели блоков. Можно также задать идентификаторы блоков, которые надо добавить на панель.
js
        
          
"block_lists": {
  "left": {
    "title": "Блоки в категориях слева",
    "blocks": ["special-offer", "banner"]
  },
  "news":"Новости"
}

Блоки Задается идентификатор, название и содержимое блока.

Задается идентификатор, название и содержимое блока.
js
        
          
"blocks": {
  "Банер": {
    "title": "Акции и распродажи",
    "content": "50% на все товары!"
  },
  "Tovar-nedeli":"Товар недели",
  "условия-доставки":"Условия доставки"
}

Шаблон панели блоков

Шаблоны блоков записываются в поле block_templates которое является объектом.

У шаблонов есть 2 обязательных поля - name, block_fields.

name - имя блока

block_fields - поля блока

У полей блоков могут быть поля name, kind, block_field_options.

name - имя поля

kind - тип поля

block_field_options - список опций селекта

Типы полей:

  • text - Текст

  • rich_text - HTML

  • account_file - Файл

  • collection_list - Список категорий

  • collection - Категория

  • select - Выпадающий список

  • checkbox - Чекбокс

js
        
          
{
  "block_templates": {
    "slider-block": {
      "name": "Слайдер",
      "block_fields": {
        "link": {
          "name": "Ссылка",
          "kind": "text"
        },
        "description": {
          "name": "Контент",
          "kind": "rich_text"
        },
        "heading": {
          "name": "Заголовок",
          "kind": "text"
        },
        "collection": {
          "name": "Категория",
          "kind": "collection"
        },
        "image": {
          "name": "Изображения",
          "kind": "account_file"
        },
        "hide_heading": {
          "name": "Скрыть заголовок?",
          "kind": "checkbox"
        },
        "side": {
          "kind" : "select",
          "name" : "Расположение изображения",
          "block_field_options": {
            "is-right": "Справа",
            "is-left": "Слева"
          }
        }
      }
    }
  }
}

Блок с привязанным шаблоном

js
        
          
"blocks": {
  "banner": {
    "title": "Акции и распродажи",
    "content": "50% на все товары!",
    "block_template": "system-title-and-content"
  }
}

Блок с пользовательским шаблоном

js
        
          
"blocks": {
  "first-slider": {
    "title": "Акции и распродажи",
    "heading": "Акции и распродажи",
    "description": "50% на все товары!",
    "link": "/page/sale",
    "block_template": "slider-block"
  }
},
"block_lists": {
  "index-slider": {
    "title": "Слайдер",
    "blocks": ["first-slider"],
    "block_template": "slider-block"
  }
},
"block_templates": {
  "slider-block": {
    "name": "Слайдер",
    "block_fields": {
      "link": {
        "name": "Ссылка",
        "kind": "text"
      },
      "description": {
        "name": "Контент",
        "kind": "rich_text"
      },
      "heading": {
        "name": "Заголовок",
        "kind": "text"
      },
      "collection": {
        "name": "Категория",
        "kind": "collection"
      },
      "image": {
        "name": "Изображения",
        "kind": "account_file"
      }
    }
  }
}

Меню Массив меню. Задается идентификатор и название каждого меню. Массив пунктов меню. Задается идентификатор и название каждого пункта меню и указывается в какое меню добавлять.

Массив меню. Задается идентификатор и название каждого меню. Массив пунктов меню. Задается идентификатор и название каждого пункта меню и указывается в какое меню добавлять.
js
        
          
"menus": {
  "main-menu":"Верхнее меню",
  "first-footer":"Нижнее меню"
},
"menu_items": {
  "main-menu": { "Ссылка1": "http://ya.ru", "Ссылка2": "cart", "Ссылка3": "account" }
}

Параметры и их значения Задаются идентификаторы, названия и списки значений параметров.

Задаются идентификаторы, названия и списки значений параметров.
js
        
          
"properties": {
  "property_permalink": {
    "title": "my_property",
    "characteristics": {
      "char_permalink_1": "char_title_1", "char_permalink_2": "char_title_2"
    }
  }
}

Страницы ля страницы можно задать название, идентификатор и содержание.

ля страницы можно задать название, идентификатор и содержание.
js
        
          
"pages": {
  "delivery": "Доставка",
  "payment": "Оплата" ,
  "privacy-policy": {
    "title": "Политика безопасности",
    "content": "У нас все секьюрно)"
  }
}

Блоги Задается идентификатор и название каждого. Также можно для блога задать список статей.

Задается идентификатор и название каждого. Также можно для блога задать список статей.
js
        
          
"blogs": {
  "news": "Новинки",
  "sales": {
    "title": "Скидки",
    "articles": {
      "winter": "20% на зимнюю коллекцию",
      "shose": {
        "title": "5% на всю обувь",
        "content": "5% на всю обувь",
        "preview": "Обувь со скидкой!",
        "author": "Админимтрация"
      }
    }
  }
}

Виджеты

Чтобы создать виджет в шаблоне нужно указать следующие данные в setup.json:

widget_types

theme_widgets -> widget_lists

 

widget_types

widget_types отвечает за создание виджета. 

widget_types имеет следующие свойства:

"block_template": шаблон блокок которые будут добавляться в виджете

"name": заголовок виджета

"handle": уникальный пермалинк для типов виджетов

"type": "block_list_widget_type"

"snippet": название сниппета который будет привязан к виджету, например - "widget_shippet.liquid". Сниппет должен присутствовать в теме.

 

widget_lists

widget_lists содержит в себе виджет листы, которые содержат в себе массивы виджетов.

В ликвид доступна переменна widget_lists в которой по ключу можно получить массив виджетов.

widget_lists.index-list.widgets

widget_lists содержит массив объектов с полями:

"name": имя виджет листа (указать уникальное имя на латинице)

"handle": пермалинк виджет листа, используется для доступа в виджетам в ликвид

"widgets" массив виджетов

 

widgets

В массиве виджетов находятся с объекты с указанным типом виджета и пермалинком панели блоков

"widget_type": тут указывается handle из widget_types

"data_handle": тут пермалинк из block_lists

 

Liquid js
        
          

{% for widgetDrop in widget_lists.index-list.widgets %}
  {% widget widgetDrop %}
{% endfor %}

        
          

{
"block_lists": {
 "mainblock": {
  "block_template": "system-image-and-content",
  "title": "Наша тестовая панель блоков",
  "blocks": [
   "image-text-1"
  ]
 }
},
"blocks": {
 "image-text-1": {
  "block_template": "system-image-and-content",
  "title": "Блок внутри тестового виджета",
  "content": "Контент внутри тестового виджета",
  "image": "empty.jpg"
 }
},
"theme_widgets": {
 "widget_lists": [{
  "name": "index",
  "handle": "index-list",
  "widgets": [{
   "widget_type": "test_handle",
   "data_handle": "mainblock"
  }]
 }],
 "widget_types": [{
  "block_template": "system-image-and-content",
  "name": "Заголовок тестового виджета",
  "handle": "test_handle",
  "type": "block_list_widget_type",
  "snippet": "widget_test_snippet.liquid"
 }]
}
}

Полезные видео