Skip to content

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.

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 }}.

snippets/homepage-faq.liquid
<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.

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 }}

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.

templates/listings/category.liquid
<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 }}

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

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).

templates/page.landing.liquid
<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.

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.

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.

templates/account/login.liquid
<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>
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.

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.

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.

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.