Variables — различия между версиями

Материал из Insales Wiki
Перейти к: навигация, поиск
(Страница (page.liquid))
Строка 1: Строка 1:
= Доступные объекты в шаблонах =
+
= Переменные доступные в шаблонах =
  
== HTML (layout.liquid) ==
+
Для того чтобы на странице можно было отобразить полезные данные, перед выполнением шаблона устанавливается ряд переменных. Их список зависит от того, какой именно шаблон сейчас будет выполняться. Например, если выполняется шаблон "Товар", то будет установлена переменная product. Есть переменные, которые устанавливаются не зависимо от того какой шаблон выполняется. К таким переменным относится, например, account содержащая общую информацию о магазине.
 +
 
 +
Переменные можно разделить на два типа:
 +
* cтроковые, зависящие от входных параметров:
 +
** [[cart_url]]
 +
** [[search_url]]
 +
** [[template]]
 +
** [[order]]
 +
** current_page
 +
** title
 +
** keywords
 +
** description
 +
* объекты описывающие некоторую сущность из бек-офиса:
 +
** [[account]]    - общие настройки аккаунта
 +
** [[collection]]  - текущая категория
 +
** [[linklists]]  - набор меню
 +
** [[blocks]]      - набор всех блоков
 +
** [[block_lists]] - набор панелей блоков
 +
** [[product]]    - текущий товар
 +
** [[page]]        - текущая страница
 +
** [[language]]    - текущий язык
 +
** [[search]]      - результаты поиска
 +
** [[settings]]    - настройки шаблона
 +
** [[cart]]        - содержимое корзины
  
Лайаут интернет-магазина, все страницы и другие шаблоны отображаются уже внутри него.
+
Объекты, описывающие сущности бек-офиса, могут зависеть от входных параметров и состояния сессии.
 +
Самый яркий пример - корзина, с одной стороны это массив товаров из магазина с указанием покупаемого количества, но список этих товаров хранится в сессии. Стоит покупателю очистить сессию, и корзина пуста.
 +
Если владелец магазина удалит товар, до того как заказ будет оформлен, то он опять же исчезнет из корзины.
  
 +
Есть более сложные примеры:
 +
<pre>
 +
  {% for link in linklists.footer.links %}
 +
    {% if link.current? %}<li class="active">{% else %}<li>{% endif %}
 +
        | <a href="{{ link.url }}">{{ link.title }}</a>
 +
    </li>
 +
  {% endfor %}
 +
</pre>
 +
здесь значение current? зависит от того, на какой странице находится покупатель.
  
Доступные переменные:
+
== Список переменных, доступных во всех шаблонах ==
  
 
* [[account]]
 
* [[account]]
 
* [[collections]]
 
* [[collections]]
 
* [[linklists]]
 
* [[linklists]]
 +
* [[blocks]]
 +
* [[block_lists]]
 
* [[cart]]
 
* [[cart]]
* [[content_for_layout]]
 
 
* [[cart_url]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[languages]]
 
* [[language]]
 
* [[language]]
 +
* [[template]]
 +
* [[settings]]
 +
* title - заголовок для тега <title>
 +
* keywords - ключевые слова для тега <meta name="keywords">
 +
* description - описание для тега <meta name="description">
 +
 +
== HTML (layout.liquid) ==
 +
 +
Лайаут интернет-магазина, все страницы и другие шаблоны отображаются уже внутри него.
 +
 +
Дополнительный переменные:
 +
 +
* [[content_for_layout]]
  
 
== Главная (index.liquid) ==
 
== Главная (index.liquid) ==
Строка 22: Строка 70:
 
Шаблон главной страницы интернет-магазина.
 
Шаблон главной страницы интернет-магазина.
  
Урл: /
+
'''Урл: /'''
  
Доступные переменные:
+
Дополнительный переменные:
  
 
* [[page]] - страница main из раздела ''Витрины'' -> ''Страницы''
 
* [[page]] - страница main из раздела ''Витрины'' -> ''Страницы''
* [[account]]
+
* current_page - номер страницы (используется для паджинации)
* [[collections]]
+
 
* [[linklists]]
+
== Категория (collection.liquid) ==
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
* title - заголовок для тега <title>
 
* keywords - ключевые слова для тега <meta name="keywords">
 
* description - описание для тега <meta name="description">
 
title, keywords и description можно прописать для статических страниц (в форме редактирования страницы), для других страниц они прописываются автоматически
 
  
== Коллекция (collection.liquid) ==
+
Шаблон используется для отображения конкретной категории из каталога товаров.
Шаблон используется для отображения конкретной коллекции  из каталога товаров.
 
  
Урл: /collection/_name_
+
Урл: '''/collection/_name_'''
  
Доступные переменные:
+
Дополнительный переменные:
  
* [[collection]] - текущая коллекция
+
* [[collection]]     - текущая категория
* current_page - номер страницы (используется для паджинации)
+
* current_page       - номер страницы (используется для паджинации)
* order       - тип сортировки (используется для сортировки)
+
* [[order]]          - тип сортировки (используется для сортировки)
* [[account]]
 
* [[collections]]
 
* [[linklists]]
 
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
  
 
== Товар (offer.liquid) ==
 
== Товар (offer.liquid) ==
Строка 63: Строка 93:
 
Шаблон используется для отображения товара.
 
Шаблон используется для отображения товара.
  
Урл: /collection/_collection_/product/_product_
+
Урл: '''/collection/_collection_/product/_product_'''<br/>
 +
Или: '''/product/_product_'''
  
Доступные переменные:
+
Дополнительный переменные:
  
 
* [[product]] - текущий товар
 
* [[product]] - текущий товар
* [[collection]] - текущая коллекция
+
* [[collection]] - текущая категория, может быть не задана
* [[account]]
+
* current_page - номер страницы (используется для паджинации)
* [[collections]]
 
* [[linklists]]
 
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
  
 
== Корзина (cart.iquid) ==
 
== Корзина (cart.iquid) ==
 +
 
Шаблон используется для отображения корзины
 
Шаблон используется для отображения корзины
  
Урл: /cart_items
+
Урл: '''/cart_items'''
  
Доступные переменные:
+
Не получает никаких дополнительных переменных.
 
 
* [[account]]
 
* [[collections]]
 
* [[linklists]]
 
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
  
 
== Страница (page.liquid) ==
 
== Страница (page.liquid) ==
Строка 98: Строка 114:
 
Шаблон используется для отображения конкретной страницы из раздела ''Витрины'' -> ''Меню и страницы''
 
Шаблон используется для отображения конкретной страницы из раздела ''Витрины'' -> ''Меню и страницы''
  
Урл: /page/_name_
+
Урл: '''/page/_name_'''
  
Доступные переменные:
+
Дополнительный переменные:
  
 
* [[page]] - текущая страница
 
* [[page]] - текущая страница
* [[account]]
 
* [[collections]]
 
* [[linklists]]
 
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
  
 
== Поиск (search.liquid) ==
 
== Поиск (search.liquid) ==
Строка 116: Строка 124:
 
Шаблон используется для отображения страницы поиска товаров по магазину  
 
Шаблон используется для отображения страницы поиска товаров по магазину  
  
Урл: /search
+
Урл: '''/search'''
 
 
Доступные переменные:
 
 
 
* [[search]]
 
* [[account]]
 
* [[collections]]
 
* [[linklists]]
 
* [[cart]]
 
* [[cart_url]]
 
* [[search_url]]
 
* [[languages]]
 
* [[language]]
 
 
 
== Переменные ==
 
 
 
[[account]]
 
 
 
[[cart]]
 
 
 
[[characteristic]]
 
 
 
[[collection]]
 
 
 
[[collections]]
 
 
 
[[image]]
 
 
 
[[linklists]]
 
 
 
[[blocks]]
 
  
[[block_lists]]
+
Дополнительный переменные:
  
[[page]]
+
* [[search]] - Результаты поиска
  
[[product]]
+
= Полный перечень объектов =
  
[[property]]
+
* [[account]] - настройки аккаунта
 +
* [[block_lists]] - набор панелей блоков
 +
* [[blocks]] - набор всех блоков
 +
* [[cart]] - содержимое корзины
 +
* [[cart_url]] - путь к корзине
 +
* [[characteristic]] - значения параметра
 +
* [[collection]] - категория
 +
* [[image]] - изображение
 +
* [[language]] - язык
 +
* [[linklists]] - набор всех меню
 +
* [[page]] - страница
 +
* [[product]] - товар
 +
* [[property]] - параметр
 +
* [[search]] - результаты поиска
 +
* [[search_url]] - url для поиска
 +
* [[template]] - имя текущего шаблона
  
[[search]]
+
= Связи между объектами =
  
[[cart_url]]
+
Связи вида collections --> collection на схеме опущены, чтобы не усложнять её.
  
[[search_url]]
+
[[collection]]
 +
    |
 +
    |--> [[image]]
 +
    |
 +
    |--> [[options]]    --> [[values]]
 +
    |
 +
    |--> [[property|properties]] --> [[characteristic|chracteristics]]
 +
    |       
 +
    |--> [[product|products]]
 +
            |
 +
            |--> [[image|images]]
 +
            |
 +
            |--> [[product#variants|variants]]
 +
            |
 +
            |--> [[property|properties]]
 +
            |
 +
            |--> [[product#related_products|related_products]]
  
[[languages]]
+
[[block_lists]]--> [[blocks]]
  
[[language]]
+
[[linklists]]  --> [[page|pages]]
  
[[template]]
+
[[search]]    --> [[product|products]]

Версия 23:28, 4 января 2010

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

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

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

  • cтроковые, зависящие от входных параметров:
  • объекты описывающие некоторую сущность из бек-офиса:
    • account - общие настройки аккаунта
    • collection - текущая категория
    • linklists - набор меню
    • blocks - набор всех блоков
    • block_lists - набор панелей блоков
    • product - текущий товар
    • page - текущая страница
    • language - текущий язык
    • search - результаты поиска
    • settings - настройки шаблона
    • cart - содержимое корзины

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

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

  {% 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)

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

Урл: /

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

  • page - страница main из раздела Витрины -> Страницы
  • current_page - номер страницы (используется для паджинации)

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

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

Урл: /collection/_name_

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

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

Товар (offer.liquid)

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

Урл: /collection/_collection_/product/_product_
Или: /product/_product_

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

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

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

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

Урл: /cart_items

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

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

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

Урл: /page/_name_

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

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

Поиск (search.liquid)

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

Урл: /search

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

  • search - Результаты поиска

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

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

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

collection
    |
    |--> image
    |
    |--> options    --> values
    |
    |--> properties --> chracteristics
    |        
    |--> products
            |
            |--> images
            |
            |--> variants
            |
            |--> properties
            |
            |--> related_products
block_lists--> blocks
linklists  --> pages
search     --> products