Variables

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

Процесс формирования содержания страницы магазина

Код страницы магазина, который получает web-браузер посетителя, формируется следующим образом.

От браузера посетителя поступает запрос - URL конкретной страницы магазина. Из запроса извлекается путь к нужной странице. Этот путь используется для поиска в таблице путей шаблона страницы нужного типа для данного магазина:

Тип страницы (шаблон) Имя файла в экспорте темы URL
Для всех типов
(HTML-шаблон)
layout.liquid любой
Главная index.liquid /
Категория collection.liquid /collection/_name_
Товар offer.liquid /collection/_collection_/product/_product_ или /product/_product_
Корзина cart.iquid /cart_items
Страница page.liquid /page/_name_
Поиск search.liquid /search
Блог blog.liquid /blog
Статья article.liquid /blog/_name_

Далее система инициализирует переменные, использованные на этой странице.

Затем шаблон преобразуется в HTML-код страницы.

Полученный код подставляется в HTML-шаблон, общий для всех страниц магазина, в место, обозначенное content_for_layout.

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

Далее, в конец получившейся страницы добавляются обращения к счётчикам и сформированная страница отправляется в ответ на запрос.

Затем браузер посетителя в процессе разбора принятого кода запрашивает упомянутые в нём URL'ы изображений и CSS и JS файлов, применяет их к коду страницы и отображает, наконец, нужную посетителю страницу.

Переменные, доступные в шаблонах

Для того чтобы на странице можно было отобразить полезные данные, перед применением шаблона устанавливается ряд переменных. Их список зависит от того, какой именно шаблон сейчас будет применён. Например, если применяется шаблон "Товар", то будет установлена переменная product.

Есть переменные, которые устанавливаются независимо от того, какой шаблон применяется. К таким переменным относится, например, account содержащая общую информацию о магазине.


Переменные можно разделить на два типа:

Объекты, описывающие сущности бэк-офиса, могут зависеть от входных параметров и состояния сессии.

Самый яркий пример - корзина: с одной стороны - это массив товаров из магазина с указанием покупаемого количества, но список этих товаров хранится в сессии. Стоит покупателю очистить сессию,- и корзина пуста.

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

Есть более сложные примеры:

  {% for link in linklists.footer.links %}
     {% if link.current? %}<li class="active">{% else %}<li>{% endif %}
        | <a href="{{ link.url }}">{{ link.title }}</a>
     </li>
  {% endfor %}

здесь значение current? зависит от того, на какой странице находится покупатель.

Список переменных, доступных во всех шаблонах

HTML (layout.liquid)

Лайаут интернет-магазина, все страницы и другие шаблоны отображаются уже внутри него.

Дополнительный переменные:

Главная (index.liquid)

Шаблон главной страницы интернет-магазина.

URL: /

Дополнительный переменные:

  • page - страница main из раздела Сайт -> Меню и страницы
  • current_page - номер страницы, используемый для листания (pagination)
  • page_size - количество элементов, выводимых на странице при листании (pagination)

Категория (collection.liquid)

Шаблон используется для отображения конкретной категории из каталога товаров.

URL: /collection/_name_

Дополнительный переменные:

  • collection - текущая категория
  • current_page - номер страницы, используемый для листания (pagination)
  • page_size - количество элементов, выводимых на странице при листании (pagination)
  • order - тип сортировки (используется для сортировки)
  • products - массив товаров категории
  • products_count - количество товаров в данной категории
  • current_collections - массив родительских категорий, включая текущую
  • properties - параметры всех товаров категории (в примере collection.properties заменить на просто properties)
  • property_id - id выбранного параметра
  • characteristic_id -id выбранного значения параметра

Товар (offer.liquid)

Шаблон используется для отображения товара

URL: /collection/_collection_/product/_product_
или: /product/_product_

Дополнительный переменные:

  • product - текущий товар.
  • collection - текущая категория, может быть не задана.
  • current_page - номер страницы, используемый для листания (pagination).

Корзина (cart.liquid)

Шаблон используется для отображения корзины.

URL: /cart_items

Не получает никаких дополнительных переменных.

Страница (page.liquid)

Шаблон используется для отображения конкретной страницы из раздела Сайт -> Меню и страницы.

URL: /page/_name_

Дополнительный переменные:

  • page - текущая страница

Поиск (search.liquid)

Шаблон используется для отображения страницы поиска товаров по магазину

URL: /search

Дополнительный переменные:

  • search - Результаты поиска
  • page_size - количество элементов, выводимых на странице при листании (pagination)

Блог (blog.liquid)

Шаблон используется для отображения списка постов в блоге

URL: /blog

Дополнительный переменные:

  • articles - Список статей выводимых на текущей странице
  • current_page - Номер текущей страницы


Статья (article.liquid)

Шаблон используется для просмотра статьи и комментариев к ней. Так же в нем описывается форма для добавления нового комментария.

URL: /blog/_name_

Дополнительный переменные:

  • article - Статья
  • comment - Редактируемый сейчас комментарий

Описания строковых переменных

cart_url

URL корзины товаров, используется в лайауте в ссылке на корзину

search_url

URL на страницу поиска. Также используется в поисковой форме:

  <form action="{{ search_url }}" method="get">
    {% if language.not_default? %} <input type="hidden" name="lang" value="{{ language.locale }}"> {% endif %}
      <input type="text" name="q" value="{{search.query | escape}}" id="left_search_field" /> <input type="submit" value="Поиск" id="left_search_button" />
  </form>

template

Имя текущего шаблона. Используется в лайауте для вывода элементов в зависимости от шаблона.

Возможные значения: 'index', 'collection', 'product', 'page', 'search', 'cart'.

order

Используется в качестве параметра типа сортировки товаров.
Может принимать три значения: "price"(По возрастанию цены), "descending_price"(По убыванию цены) и "title" (По названию).
Пример использования в шаблоне "Категория":

    <form method="get" id="order_form">
      {% if language.not_default? %} <input type="hidden" name="lang" value="{{ language.locale }}"> {% endif %}
        Сортировать по 
       
        <select name="order" onchange="$('#order_form').submit();">
          {{ "" | select_option: order, "" }}
          {{ "price"  | select_option: order, "По возрастанию цены" }}
          {{ "descending_price"  | select_option: order, "По убыванию цены" }}
          {{ "title"  | select_option: order, "Алфавиту А-Я" }}
          {{ "descending_title"  | select_option: order, "Алфавиту Я-А" }}
          {{ "age"  | select_option: order, "Дате добавления Новые-Старые" }}
          {{ "descending_age"  | select_option: order, "Дате добавления Старые-Новые" }}
          {{ "discount"  | select_option: order, "Скидке (%) маленькая-большая" }}
          {{ "descending_discount"  | select_option: order, "Скидке (%) большая-маленькая" }}
        </select>
    </form>

current_page

Номер страницы, используемый для листания (pagination).

page_size

Количество элементов, выводимых на странице при листании (pagination).

title

Заголовок для тега <title>.

keywords

Ключевые слова для тега <meta name="keywords">.

description

Описание для тега <meta name="description">.

money_with_currency_format

Используется вместе с InSales.formatMoney для формата вывода цены через js.

$('#price-field').html(InSales.formatMoney(variant.price, "{{money_with_currency_format}}"))

Полный перечень объектов

Связи между объектами

Связи вида collections --> collection на схеме опущены, чтобы не усложнять её.

collection
    |
    |--> image
    |
    |--> options    --> values
    |
    |--> properties --> chracteristics
    |        
    |--> products
            |
            |--> images
            |
            |--> variants --> option_values
            |
            |--> properties --> characteristics
            |
            |--> options --> values
            |
            |--> reviews
            |
            |--> related_products
            |
            |--> similar_products
            |
            |--> collections
            
block_lists--> blocks
linklists  --> pages
search     --> products
blog --> articles    --> comments
cart
    |
    |--> items
    |
    |--> discounts