Для управление дизайном в SellBe используется язык шаблонов Liquid.
Liquid - это простой язык программирования, который говорит SellBe, что делать. Он используется в сочетании с HTML и CSS. Есть два вида Liquid тегов:
Например, если мы хотим отобразить название магазина в нашем макете, то мы используем тег вывода {{}}:
«shop» в данном примере является переменной шаблона.
Переменные шаблона - это часть данных, которые мы можем использовать в нашем магазине. Вот несколько примеров популярных объектов
Переменные шаблона можно разделить на группы: глобальные и локальные.
Глобальные переменные шаблона
Глобальные переменные – те, которые доступны на всех шаблонах независимо от страницы.
Локальные переменные шаблона
Локальные переменные – те, которые доступны для определенного шаблона.
cart.liquid | нет |
client-info.liquid | нет |
client-order.liquid |
|
client-orders.liquid |
|
client-password-remind.liquid | нет |
client-password-reset.liquid |
|
client-registration.liquid | нет |
feedbacks.liquid |
|
index.liquid | нет |
page.liquid и page.*.liquid |
|
pricelist.liquid |
|
product.liquid |
|
product-image.liquid |
|
product-inform.liquid |
|
products.liquid |
|
products-search.liquid |
|
publication.liquid |
|
publications.liquid |
|
purchase.liquid |
|
sitemap.liquid |
|
Шаблоны определяют внешний вид и содержание страницы. Давайте предположим, что посетитель открыл главную страницу интернет магазина, тогда SellBe будет использовать index.liquid для создания содержимого страницы. Если же посетитель видит один из товаров вашего интернет магазина, то SellBe будет использовать шаблон product.liquid для формирования страницы продукта.
Шаблоны SellBe
Шаблоны используют разметку. Разметка - это своего рода контейнер для шаблонов.
В разметке определена основная структура страниц сайта. Такие элементы, как меню, логотип, контакты, корзина, нижняя часть страницы со счетчиками и ссылками, проще всего подключить именно здесь, так как они отображаются на всех страницах. Для того, чтобы шаблоны в определенной части разметки имели возможность вставить свой код, существуют зоны. Зона – это контейнер для модулей шаблона.
К примеру, наш дизайн имеет 3 колонки, в каждой из которых на разных страницах отображаются разные блоки, тогда код разметки будет иметь следующий вид:
Тег <SB:Zone/> определяет зону, а атрибут name имя зоны.
Для того, чтобы в шаблоне определить зону, в которой отобразятся блоки, существует тег <SB:ZoneContent />, например:
В примере выше в зону «left» добавляется модуль «item-tree» и блок кода, который отображает название интернет магазина.
Если какой-то элемент, к примеру, постраничный переход, дерево категорий присутствует на нескольких страницах интернет магазина, то это является поводом перенести его в модули. Модули бывают двух типов: специальные и обычные.
У модуля могут быть определены атрибуты.
В данном примере добавлен модуль "products.liquid" и определено два атрибута collection_id и count со значениями 0 и 9 соответственно.
Специальные модули
Обычные модули
Обычные модули не связанны с выборками. Они создаются просто для удобства. Хорошим примером будет блок постраничного перехода. Так как он используется на нескольких шаблонах, то его код сохранен в модуле pager.liquid для удобства.
Использование языка разметки Liquid
Для управление дизайном в SellBe используется язык шаблонов Liquid. Это простой в освоении и достаточно мощный язык.
В языке Liquid есть два основных вида конструкций: Вывод данных (Output) и Теги (Tag).
Блоки вывода данных всегда заменяются на то, на что они ссылаются. Если в шаблон передаётся информация о товаре через переменную product, то конструкция
выведет его имя.
Теги управляют логикой шаблонов. С их помощью вы можете организовывать циклы и логику ветвления.
Пример вывода данных:
Для преобразования выходных данных можно использовать фильтры. Фильтры это обычные функции. В следующем примере фильтр money применяется к стоимости товара
В зависимости от выбранной пользователем валюты и стоимости товара результат может быть: $8.32 или 439грн
Теги для логики в шаблоне.
Комментарии заключены в "{% comment %}" - открывающий тег и "{% endcomment %}" - закрывающий тег. Как и в других языках, все символы, заключенные этими тегами, будут проигнорированы и не будут обрабатываться с помощью языка.
В результате получим:
Не Liquid код – это код, который не будет переводиться языком Liquid. Любые теги, добавленные между открывающим тегом "{% literal %}" и закрывающим "{% endliteral %}", будут проигнорированы анализатором Liquid.
В результате получим:
if и else должны быть хорошо известны из любого языка программирования. Liquid позволяет писать простые выражения if. Unless - это противоположность if и используется, если вам нужно проверить, что что-то не истинно.
Если старая цена у товара больше нуля, то появится текст - «Старая цена ...»
Если вам нужно больше, чем одно условие, то вы можете использовать case
Цикл применяется для обхода массивов элементов
При обходе массива доступны дополнительные переменные:
Можно задавать сдвиг и максимальное число элементов для обхода:
limit позволяет ограничить число обходимых элементов. offset позволяет начать обход с n-ого элемента.
Вместо обхода значений существующего массива, можно задать диапазон чисел, которые нужно обойти. Диапазон можно прописать в коде или задать переменной:
Liquid позволяет разбить массив элементов на таблицу, состоящую из определенного количества колонок:
Вы также можете узнать, находится ли ячейка таблицы в первой или последней колонке в строке запроса или же прямо номер столбца:
Liquid позволяет вставить модуль в любое место разметки. К примеру, добавим модуль со списком случайных товаров.
Тег parse позволяет выполнить Liquid код. К примеру, следующий код даст одинаковый результат:
и
Этот тег полезен, когда вы храните часть Liquid кода в переводах.
Магазин (тип shop)
title | Название интернет магазина |
url | Адрес интернет магазина |
domain | Доменное имя интернет магазина |
logo | Адрес изображения логотипа |
create_date | Дата регистрации магазина |
map_location | Координаты магазина на карте |
counters | Счетчики магазина |
min_order_amount | Минимальная сумма заказа |
comments_enabled | Отображать комментарии |
theme_root_url | Путь к папке с файлами текущего дизайна |
files_root_url | Путь к папке с файлами магазина |
currencies | Список валют магазина (тип currency) |
menu | Список пунктов меню (тип menu_item) |
contacts | Список контактов (тип contact) |
Валюта (тип currency)
code | Коды валюты в формате ISO 4217 |
sign | Знак валюты |
title | Название пункта меню |
url | Адрес пункта меню |
Контакт (тип contact)
key | Ключ |
value | Значение |
Товар (тип product)
id | Номер |
articul | Артикул |
title | Название товара |
announce | Анонс |
description | Описание |
image_small | Фото товара уменьшенное |
image_large | Фото товара не уменьшенное |
price | Цена |
price_old | Старая цена |
available_count | Количество в наличии |
url | Адрес товара |
url_inform | Адрес страницы уведомить о поступлении |
item | Категория товара (тип item) |
brand | Производитель товара (тип brand) |
properties | Список дополнительных свойств товара (тип property) |
images | Список изображений галереи (тип image) |
comments | Список комментариев (тип comment) |
related | Список связных товаров (тип product) |
labels | Список ярлыков (тип label) |
Категория (тип item)
id | Номер |
title | Название категории |
description | Описание |
image_small | Фото категории уменьшенное |
image_large | Фото категории не уменьшенное |
url | Адрес категории |
sub_categories | Список подкатегорий (тип item) |
Производитель (тип brand)
id | Номер |
title | Название категории |
description | Описание |
url | Адрес категории |
Свойство (тип property)
id | Номер |
name | Название свойства |
values | Значения свойства (тип property_value) |
Значение свойства (тип property_value)
id | Номер |
name | Название |
price_delta | Изменение стоимости |
Изображение (тип image)
id | Номер |
position | Порядковый номер |
title | Название |
image_small | Фото уменьшенное |
image_large | Фото не уменьшенное |
url | Адрес страницы изображения |
Комментарий (тип comment)
id | Номер |
author | Автор комментария |
text | Текст |
Date | Дата |
Ярлык (тип label)
title | Название |
key | Ключ |
Корзина (тип сart)
total_price | Итоговая цена |
discount | Размер скидки |
item_count | Количество товаров |
items | Товары в корзине (тип cart_item) |
Товар в корзине (тип cart_item)
product | Товар (тип product) |
selected_properties | Список выбранных свойств товара (тип property_selection) |
quantity | Количество единиц товара с указанным списком свойств |
price | Цена единицы |
Выбранное свойство (тип property_selection)
property_id | Номер свойства |
property_name | Название свойства |
value_id | Номер значения свойства |
value_name | Название значения свойства |
price_delta | Изменение стоимости |
Заказ (тип order)
id | Номер |
code | Код |
url | Адрес страницы с информацией о товаре |
user_name | Имя покупателя |
phone | Телефон |
contact_info | Контактная информация |
additional_info | Дополнительная информация |
discount_percent | Процент скидки |
products_price | Стоимость товаров |
discount | Размер скидки |
payment_fee | Размер комиссии за выбранный тип оплаты |
delivery_fee | Размер комиссии за доставку |
total_sum | Итоговая стоимость заказа |
create_date | Дата заказа |
payment_status | Код статуса платежа |
order_status | Статус заказа |
payment_url | Адрес для оплаты через платежную систему |
payment | Способ оплаты (тип payment_type) |
delivery | Способ доставки (тип delivery_type) |
cart | Корзина (тип сart) |
messages | Список сообщений (тип message) |
Способ оплаты (тип payment_type)
id | Номер |
title | Название |
Способ доставки (тип delivery_type)
id | Номер |
title | Название |
Сообщение (тип message)
is_shop | Сообщение от администратора магазина |
text | Текст |
date | Дата |
Публикация (тип publication)
id | Номер |
title | Название публикации |
announce | Анонс |
description | Описание |
date | Дата публикации |
image_small | Фото публикации уменьшенное |
image_large | Фото публикации не уменьшенное |
url | Адрес товара |
images | Список изображений галереи (тип image) |
Опрос (тип questionnaire)
id | Номер |
question | Вопрос |
total_votes | Количество проголосовавших |
answers | Список ответов (тип questionnaire_answer) |
Ответ (тип questionnaire_answer)
id | Номер |
text | Текст ответа |
vote_count | Количество голосов |
vote_percent | Процент проголосовавших за этот пункт от общего количества |
Страница (тип page)
title | Заголовок страницы |
html | HTML код страницы |
url | Адрес страницы |
Отзыв (тип feedback)
id | Номер |
author | Автор |
text | Текст отзыва |
date | Дата добавления |
Параметры текущего запроса (тип request)
url | Адрес запрашиваемой страницы |
currency | Валюта (тип currency) |
Коллекция (тип collection)
title | Название коллекции |
url | Адрес страницы со списком товаров коллекции |
Пользователь (тип client)
name | Имя клиента |
phone | Телефон |
contact_info | Контактная информация |
discount_percent | Процент скидки |
SEO (тип seo)
title | Заголовок страницы |
meta_description | meta description |
meta_keywords | meta keywords |
Постраничная листалка (тип pager)
current_page | Номер текущей страницы |
size | Размер страницы |
pages | Количество страниц |
items | Количество записей всего |
previous | Предыдущая страница (тип page_link) |
next | Следующая страница (тип page_link) |
parts | Список ссылок для перехода (тип page_link) |
Ссылка для постраничной листалки (тип page_link)
page | Номер страницы |
url | Адрес страницы |
Количество записей на странице (тип sizer)
current_size | Текущее количество записей на странице |
parts | Список ссылок для перехода (тип size_link) |
Ссылка для количества записей на странице (тип size_link)
size | Количество записей на странице |
url | Адрес страницы |
Направление сортировки (тип sorter)
current_direction | Текущее направление для сортировки |
parts | Список ссылок для сортировки (тип sort_link) |
Ссылка для направление сортировки (тип sort_link)
direction | Направление для сортировки |
url | Адрес страницы |
Настройки SellBe (тип sellbe)
ads_250x250 | Рекламный блок 250 на 250 |
ads_468x60 | Рекламный блок 468 на 60 |
ads_728x90 | Рекламный блок 728 на 90 |
counters | Счетчики SellBe |
captcha_url | Адрес для получения CAPTCHA изображения |
core_js | Адрес с основным скриптом SellBe, который отвечает за работу магазина |
Словарь
Позволяет получить значение по ключу. К примеру, мы знаем что в словаре records есть ключ hello_text, который имеет значение «Добрый день».
В результате получим: