Templates
Each kind of storefront page is rendered by one template. This page lists them with the
variables each one receives. The objects (listing, vendor, order…) are described
in Liquid objects.
Unless stated otherwise, a template also receives the global objects shop, locale,
request, authenticated_user, settings, routes and, with a library theme, theme.
Variables named *_block, *_form, *_navigation, facets or pagination are
blocks: HTML the platform renders. Print them as they are and restyle them with CSS.
Homepage
Section titled “Homepage”templates/index.liquid · /
The homepage is assembled from sections the admin configures in Customize → Homepage.
Each section has a switch in settings and its own object. Kindshare includes one
snippet per section (homepage-welcome, homepage-categories…).
| Switch | Object | Fields |
|---|---|---|
settings.homepage-welcome-block |
welcome-section |
title, text, bkg_color, bkg_image, alt_img_bkg, bkg_alignment, height, filter, search (whether to show the search), search_form (block), button.title, button.link, button.active, video_active, video_mp4, video_iframe |
settings.homepage-categories |
categories-section |
title, subtitle, class, categories, cards. Each card: title, description, link, link_label, image, category_id; empty fields are taken from the linked category. categories leaves out cards with neither a category nor a description; cards keeps every card. |
settings.homepage-listings |
listings-section |
title, subtitle, listings: each item has id and thumbnail, the card already rendered |
settings.homepage-articles |
articles-section |
title, subtitle, articles (see blog articles, lighter form) |
settings.homepage-edito |
edito-section |
title, content, bkg_image, bkg_color, featured_image, featured_image_alt |
settings.homepage-custom-section |
custom-section |
content (HTML) |
settings.homepage-keypoints |
keypoints-section |
title, subtitle, heading_align, layout (icon-left, icon-top), card_align, bkg_color, icon_bkg_color, cards (icon, title, subtitle, link) |
settings.homepage-testimonials |
testimonials-section |
title, subtitle, bkg_color, scrolling, average (score, total, stars, stars_empty), reviews (id, note, stars, review, author, avatar, date, listing with title, url, cover) |
settings.homepage-partners |
partners-section |
title, subtitle, layout (marquee-centered, grid, marquee-inline), scrolling, duration, bkg_color, partners (image, name) |
settings.homepage-faq |
faq-section |
title, subtitle, alignment, width (half, full), bkg_color, cta (label, link), questions (question, answer) |
settings.homepage-showcase |
showcase-section |
title, subtitle, cta (label, link), source (kind: youtube, vimeo or file, id, embed, poster), poster, side, has_text, bkg_color, text_color |
Section names contain hyphens: read them with a dot, {{ welcome-section.title }}.
<section class="faq" style="background: {{ faq-section.bkg_color }}"> <h2>{{ faq-section.title | escape }}</h2> {% for item in faq-section.questions %} <details> <summary>{{ item.question | escape }}</summary> <div>{{ item.answer }}</div> </details> {% endfor %}</section>The homepage also receives authenticated_user as a plain member object
(read without | first), or nothing for a visitor.
Listing page
Section titled “Listing page”templates/listings/listing.liquid · /listing/<key>-<slug>
| Variable | Description |
|---|---|
listing |
The listing |
breadcrumbs |
A list of title and url: home, the category, the listing |
breadcrumb |
The same breadcrumb, as a block |
gallery_block |
The picture gallery and its viewer |
content_block |
The description, tags and attribute table |
extra_content_block |
The add-ons |
sidebar_block |
The price, the booking or purchase form, the contact button |
store_block |
The vendor’s shop details |
footer_block |
Reviews, map, questions, the vendor’s other listings |
header_block |
Empty by default; apps may fill it |
live_preview_url |
The live preview link, when the listing has one |
Keep sidebar_block: it holds the add-to-cart or booking form and the scripts behind it.
You can hide the parts you redraw yourself with CSS.
<div class="row"> <div class="col-md-8"> <h1>{{ listing.title | escape }}</h1> {{ gallery_block }} {{ content_block }} </div> <aside class="col-md-4">{{ sidebar_block }}</aside></div>{{ footer_block }}Search and category pages
Section titled “Search and category pages”templates/listings/search.liquid · /listing/search, /listings
templates/listings/category.liquid · /c/<slug>
| Variable | Description |
|---|---|
listings |
The results of the page. Print each card with listing.thumbnail_html (see listings in search results). |
total |
The number of results |
pagination |
Pagination links, block |
facets |
The filters, block |
categories_tree |
The category tree, block |
sort_options |
The sort selector, block |
search_homepage |
The search form, block |
search_tags_filter |
The tag filter, block |
breadcrumbs |
A list of title and url |
header_style |
The style of the page header |
settings.mapbox |
Whether the Map app shows a map on this page |
The search page also receives search_param and search_param_title (what was
searched), search_page_description and listing_tags. The category page receives
category (see category), and facet_label on a
filtered category URL.
<h1>{{ category.title | escape }}</h1><p>{{ total }} results</p><div class="row"> <aside class="col-md-3">{{ facets }}</aside> <div class="col-md-9"> {{ sort_options }} {% for listing in listings %} <div class="col-sm-4">{{ listing.thumbnail_html }}</div> {% endfor %} {{ pagination }} </div></div>{{ category.description_long }}Vendor shop
Section titled “Vendor shop”templates/listings/store.liquid · /s/<key>
| Variable | Description |
|---|---|
vendor |
The vendor, a member object |
listings |
Their listings online, cards in thumbnail_html |
facets, search_tags_filter, pagination |
Filters and pagination, blocks |
profile_description |
Their presentation |
user_attributes |
Their profile attributes, block |
has_gallery, store_gallery, store_gallery_title |
Their shop gallery, block |
has_reviews, display_reviews_list |
Their reviews, block |
vendor_response_time |
Their usual response time, block |
user_badges_html |
Their badges |
inbox.display_in_vendor_store, inbox.html_link |
The contact button of the Inbox app |
saved_searches.display_in_vendor_store, saved_searches.html_link |
The follow button of the Saved searches app |
holiday_mode.enabled, holiday_mode.message |
Their holiday notice |
viewer_is_vendor |
Whether the visitor is this vendor |
header_style |
The style of the page header |
CMS pages
Section titled “CMS pages”templates/page.liquid and templates/page.<name>.liquid · the page’s URL
Receives page (see page). A page uses page.liquid
unless the admin chose another template under Template when editing it; create
alternate templates in the theme editor (see Theme structure).
<section class="landing-hero" style="background-image: url('{{ page.image }}')"> <h1>{{ page.page_title | escape }}</h1> {% if page.subtitle %}<p>{{ page.subtitle | escape }}</p>{% endif %}</section><div class="container">{{ page.body }}</div>page.body is the content written in Content → Pages, with its
widget tags already rendered.
Collections
Section titled “Collections”templates/collection.liquid · /<handle>
Receives collection, listings (cards in thumbnail_html) or users (cards in
thumbnail_html, drawn by user-thumbnail.liquid), page, total_pages and
pagination. See collection. This template is not
in the theme editor; the card snippets are.
Account pages
Section titled “Account pages”| Template | URL | Variables |
|---|---|---|
account/login.liquid |
/login |
login_form (block), login_error (the error text, or empty) |
account/register.liquid |
/register |
register_form (block) |
account/register_success.liquid |
after sign-up | — |
account/reset_password.liquid |
from the reset link of the password email | change_password_form (block) |
account/change_password.liquid |
/account/change_password |
change_password_form, account_navigation, account_sub_navigation (blocks) |
account/edit.liquid |
/account/edit |
account_edit_form, avatar_cropbox, account_navigation, account_sub_navigation (blocks), account_delete_button (block, when members may delete their account) |
account/dashboard.liquid |
/dashboard |
account (the member), account_navigation (block), vendor_sales_count, customer_orders_count, products_count, settings.hasPsp, settings.inbox_summary (block), settings.stripe_onboarding.display_link, settings.stripe_billing.display_link and settings.stripe_billing.display_link_text |
Keep the forms whole: they carry the security tokens, the social sign-in buttons and the error messages.
<div class="auth-card"> <h1>{{ 'account.login.header' | t }}</h1> {% if login_error != '' %}<p class="alert alert-danger">{{ login_error }}</p>{% endif %} {{ login_form }} <a href="{{ routes.account.register }}">{{ 'account.login.register_link' | t }}</a></div>Listing management
Section titled “Listing management”| Template | URL | Variables |
|---|---|---|
listings/dashboard.liquid |
/listing/manager |
listings, listings_count, listing_allowance (allowance, used, remaining, when the plan limits listings), search_query, search_form, file_import_form, account_navigation, supplier_navigation, pagination, listings_new_label |
listings/form.liquid |
/listing/new, /listing/edit/<key> |
listing, page_title, listing_form (block), form_edito, form_container_style |
listings/form_success.liquid |
after saving a listing | listing (with form_success.content), listing_form |
In listings/dashboard.liquid each item of listings is a listing
plus its management links: edit_url, delete_url, delete_link (block),
clone_listing_button (block), publish_status_select (block), calendar_url,
digital_assets_url and fee_payment_url when they apply.
Orders
Section titled “Orders”| Template | URL | Variables |
|---|---|---|
orders/purchases.liquid |
/orders |
orders, pagination, account_navigation |
orders/sales.liquid |
/sales |
orders, pagination, search_form, account_navigation, supplier_navigation, is_ajax |
orders/vendor_details.liquid |
/sale/<token> |
see below |
In the two lists each order is an order with checkout_at
as a formatted date and summary, the items’ summary (block). Sales add buyer_name.
orders/sales.liquid is also rendered alone, with is_ajax set, when the sales search
refreshes the list: keep the list in a template branch that works without the page
around it.
orders/vendor_details.liquid receives order, order_amounts (total, subtotal,
shippings, customer_fees, vendor_fees, vendor_net_amount, payout_amount,
coupon_discount…), html_render (per item id: order_item, order_summary,
digital_asset, blocks), supplier_btn_action (the accept, decline and ship buttons),
supplier_order_workflow (the status steps), order_coupon_section,
order_attachments, message_form_activated, message_form, account_navigation and
supplier_navigation.
The buyer’s order page (/order/<token>) is not a Kindshare template; restyle it with
CSS.
| Template | URL | Variables |
|---|---|---|
blog/index.liquid |
/blog |
articles, blog_categories, blog_sidebar (block), settings.blog.title, settings.blog.image, settings.blog.grid_preset, settings.blog.pagination (block) |
blog/category.liquid |
/blog/category/<slug> |
the same, plus category (id, title, description, image, image_alt, post_count) |
blog/article.liquid |
/blog/<id>-<slug> |
article, related_articles, suggested_articles |
See blog objects. The blog templates receive neither the
global settings nor the global routes: routes.blog is the blog’s URL there.
Other pages
Section titled “Other pages”| Template | URL | Variables |
|---|---|---|
contact.liquid |
/contact |
contact_form (block), form.posted_successfully (true after sending) |
checkout/order-confirmation.liquid |
after payment | orders (the orders of the cart), authenticated_user; no global settings or routes |
maintenance.liquid |
every page while maintenance mode is on | settings.maintenance (meta_title, meta, content, bkg_image, bkg_color, font_color, custom_css), settings.theme.custom_js |
maintenance.liquid is a complete HTML document: it is rendered without the header,
the footer or the theme’s stylesheets.
Snippets the platform renders
Section titled “Snippets the platform renders”These snippets are rendered by the platform itself, with their own variables.
| Snippet | Where | Variables |
|---|---|---|
header.liquid |
top of every page | globals, header.search_form, header.menu (blocks; also header_search_form, header_menu), mega_menu (the category menu), cart_item_count |
footer.liquid |
bottom of every page | globals, settings.footer.columnsCount, settings.footer.columns (by number, 1 to 4), settings.social-links.display, settings.social-links.list (title, link), all_rights_reserved |
menu-categories.liquid |
the category menu, when Navigation → Mega Menu is on | categories (tree: id, title, slug, listing_count, child_count, children), display_subcategories, all_listings_link.display, all_listings_link.title |
menu-default.liquid, menu-<id>.liquid |
the menu tag |
menu only |
listing-thumbnail.liquid |
every listing card | globals, listing, settings.thumbnail.display_avatar, display_rating, display_name, display_city, display_category |
user-thumbnail.liquid |
member cards of user collections | globals, user (a member card) |
user-attributes.liquid |
the vendor’s profile attributes | user_attributes (alias, title, input_type, is_list, is_boolean, is_true, values, value_html, options with title, slug, selected), grid_preset |
order-item.liquid |
each item on order pages | order_item, order, variants_label, recipient_tz |
order-item-email.liquid |
each item in order emails | see Email notifications |
purchase-status-flow.liquid, sale-status-flow.liquid |
the status steps of an order, for the buyer and for the vendor | order, status (new, accepted, shipped, customer_confirmed, each with default_title and default_description) |
order-item.liquid, the menu snippets, the category menu and the status steps do not
receive the global settings and routes.