Часто шукають

↑↓ вибрати ↵ відкрити Усі результати →

Розробникам · Теми

Сторінки теми

Який сніпет малює яку сторінку: картка, товар, каталог, кошик, оформлення, блог, пошук, кабінет, вхід і 404. Дані кожної, обовʼязкові компоненти, налаштування шаблону й набір спільних сторінок.

Сторінку теми малює сніпет з певним імʼям у snippets/. Якщо тема має такий сніпет, він замінює основну область сторінки; шапка й підвал лишаються своїми секціями. Без сніпета, з помилкою в ньому або з порожнім результатом магазин показує сторінку свого дизайну — вітрина не лишається порожньою.

Який сніпет яку сторінку

СніпетСторінкаДаніОбовʼязковий компонент
product-cardКожна картка в каталозі, пошуку, добірках і блоках товарівproduct (картка, нижче)—
product-page, product-page--<шаблон>Область товару: крихти, фото, опис, деталіproduct, breadcrumbs, template—
collection-page, collection-page--<шаблон>Каталог, категорія, бренд, SEO-сторінка фільтраcollection, templatecatalog.results
mini-cartВміст мінікошика (рамка — шухляда чи спливне вікно — магазину)cartcart.checkout-button
cart-pageСторінка кошикаcart, templatecart.checkout-button
checkoutОформлення замовлення всередині форми магазинуcheckoutcheckout.contact, checkout.delivery, checkout.app-fields, checkout.payment, checkout.submit
order-page«Дякуємо за замовлення»orderorder.payment-details
blog-pageБлог, рубрика, автор, тегblog, templateblog.posts
article-pageСтаттяarticle, templatearticle.content
search-pageПошукsearch, templatesearch.results
entry-page--<тип>, entry-pageЗапис типу контентуentry, content_type, template—
entry-list-page--<тип>, entry-list-pageСписок записів типуcontent_type, templateentry.list
account-page--<розділ>, account-pageРозділ кабінету покупцяaccountaccount.content
auth-page--<сторінка>, auth-pageВхід, реєстрація, пароліauthauth.form
not-found-pageСторінка 404 всередині вітриниглобальні обʼєкти—

Обовʼязковий компонент, якого сніпет не поставив, додається після його розмітки: кошик без кнопки «Оформити» чи каталог без товарів нічого не продадуть. Глобальні обʼєкти (shop, request, routes, settings, linklists, collections …) доступні в кожному сніпеті.

Які компоненти дозволені на кожній сторінці — Компоненти ядра; поля обʼєктів — Довідник Liquid.

Варіанти сніпета

ВаріантКоли береться
product-page--giftТовар із шаблоном product.gift (призначений типу товару або категорії).
collection-page--saleКатегорія з шаблоном collection.sale.
entry-page--team, entry-list-page--teamЗаписи й список типу контенту team.
account-page--ordersРозділи: orders, wishlist, profile, email, addresses, security, marketing.
auth-page--loginСторінки: login, register, forgot, reset.

Спершу шукається сніпет з суфіксом, потім загальний. Шаблони товару й категорії створюються в редакторі дизайну й призначаються типу товару чи категорії.

Картка товару: product-card

Сніпет отримує свою картку — з уже відформатованими цінами, на відміну від карток у списках Liquid:

ПолеТипЩо
id, title, urlчисло, рядокТовар; url — повна адреса.
priceрядокГотова ціна: «1 250 ₴».
compare_at_priceрядок або nilСтара ціна, коли вона більша.
on_saleтак/ніЄ стара ціна.
discount_percentчисло або nilЗнижка в цілих відсотках — для «−14%».
availableтак/ніЄ в наявності.
images, featured_image, second_imageфотоsrc, srcset, width, height, alt.
badgesсписок[{label, tone}].
variant_idчисло або nilВаріант для кнопки «У кошик».
categoryобʼєкт або nilОсновна категорія {title, url} — лише коли текст сніпета згадує product.category.
colorsсписок[{name, color, image, url, available}] — лише коли сніпет згадує product.colors або product.sizes; порожній, якщо колір один.
sizes, size_nameсписок, рядок[{name, available}] і назва опції розміру — за тієї самої умови.

Свої кольори й розміри можна намалювати з product.colors, а можна поставити {% component 'product.swatches' %} — він робить те саме з підміною фото при наведенні.

Товар: product-page

Малює всю область товару: крихти, фото, опис і деталі. Смуга під товаром (схожі товари, відгуки, поставлені туди в дизайні) і липка панель лишаються дизайну. Отримує product, breadcrumbs і template.

<nav class="bloom-crumbs">{% for crumb in breadcrumbs %}<a href="{{ crumb.url }}">{{ crumb.name }}</a>{% endfor %}</nav>
<div class="bloom-product">
  <div class="bloom-product__media">{% component 'product.gallery' %}</div>
  <div class="bloom-product__summary">
    {% component 'product.title' %}
    {% component 'product.price' %}
    {% component 'product.variant-picker' %}
    {% component 'commerce.add-to-cart' %}
    {% if template.settings.show_sku and product.selected_or_first_available_variant %}…{% endif %}
  </div>
</div>
{% component 'product.description' %}
{% component 'product.specifications' %}

{% schema %}
{"settings": [{"id": "show_sku", "type": "checkbox", "label": "Показувати артикул", "default": false}]}
{% endschema %}

Назва, ціна, галерея, наявність, вибір варіанта й кнопка «У кошик» — по одному на сторінку.

Каталог: collection-page

Малює заголовок, вступ і результати каталогу, категорії, бренду й SEO-сторінки фільтра; смуга під сторінкою лишається дизайну. Отримує collection і template. catalog.results — фільтри, сортування, сітка й сторінки одним компонентом зі станом сторінки; картки в ньому — ваш product-card, якщо він є. Розкладку фільтрів (збоку, зверху, шухляда) задають токени дизайну.

Кошик: mini-cart і cart-page

mini-cart малює вміст мінікошика, cart-page — сторінку кошика. Обидва отримують cart; порожній стан — {% if cart.item_count == 0 %}. Ціни в cart.items уже відформатовані так, як обрав власник; для власного числа — {{ сума | money }}, а не свій знак валюти. Налаштування шаблону (template.settings) має лише cart-page.

Оформлення: checkout

Розкладає оформлення всередині форми магазину з обʼєктом checkout і компонентами оформлення. Не пишіть власних полів чи кнопок оплати. Скрипти теми на оформленні, оплаті, «Дякуємо», вході й у кабінеті не виконуються ніколи, навіть у магазині з дозволеним JavaScript.

Блог, пошук, записи, кабінет, вхід, 404

СніпетОбʼєктПоля
blog-pageblogarticles, paginate, tag, category, author
article-pagearticletitle, excerpt, url, published_at, tags, image, category, author, metafields
search-pagesearchterms, results, results_count, paginate
entry-pageentry, content_typeполя запису за ключами; {handle, name, name_plural, url}
entry-list-pagecontent_type{handle, name, name_plural, url}
order-pageorderreference, status, subtotal, total, currency, lines, shipping_method
account-pageaccountsection, title, menu [{key, label, url, active}], status
auth-pageauthpage (login, register, forgot, reset), title, status

account.status і auth.status — повідомлення після дії (наприклад, «лист надіслано») або nil. article.content — блоки статті, які власник редагує в редакторі.

Налаштування шаблону

Сніпет сторінки може закінчуватися {% schema %} з settings, як секція. Редактор дизайну показує їх у бічній панелі цього шаблону, а сніпет читає їх як template.settings; template.name — вид сторінки, template.suffix — назва шаблону або nil для default.

СніпетДе власник змінює налаштування
product-page, collection-pageШаблон товару чи каталогу, для кожного шаблону окремо.
cart-pageШаблон кошика.
blog-page, article-page, search-pageШаблони блогу, статті, пошуку.
entry-page, entry-list-pageШаблони записів.
інші сніпети сторінокНіде: template.settings — значення default зі схеми.

Дайте шаблону те, що власник захоче змінити: показ артикулу, бік галереї, заголовки. Текст — з порожнім default і підставою з перекладу: {{ template.settings.title | default: 'tpl.cart_title' | t }}.

Набір спільних сторінок

Тема з "kit": "pages" у theme.json отримує з набору Storeforma кожен сніпет, якого не має сама, і файл assets/kit.css:

account-page   auth-page      cart-page      checkout
entry-page     entry-list-page  mini-cart    not-found-page
order-page     search-page    products-count
assets/kit.css
  • Перебити сторінку — покладіть у тему файл з тим самим імʼям: вашої теми перемагає сніпет набору.
  • Вигляд — розмітка набору має класи , kit.css оформлює їх лише змінними . Поставте першим у і перебивайте у своєму CSS.
  • Слова — сторінки набору говорять словами спільного словника (, , ); тема перебиває їх у своїх locales.
  • products-count — дає «1 товар / 3 товари / 5 товарів» за правилами мови сторінки.

Сторінок товару, каталогу, картки, блогу й статті в наборі немає: їх тема малює сама або лишає дизайну. Тема без набору показує на решті сторінок дизайн магазину.