Themes
A Kreezalid storefront is rendered by a theme: a set of Liquid templates, snippets and assets. Every marketplace starts on Kindshare, the default theme, and can switch to a theme from the theme library. You customise the theme of a marketplace from its back office, with an admin account of that marketplace: there is no file upload, command line or API for themes.
What you can change, and where
Section titled “What you can change, and where”Everything lives under Content → Theme (/admin/themes) unless stated otherwise.
| You want to… | Where | Code? |
|---|---|---|
| Set the logo, favicon, colours, footer and social links | Customize → General | No |
| Turn homepage sections on and fill them | Customize → Homepage | No |
| Restyle the storefront | Customize → Custom CSS | CSS |
| Add behaviour to every page | Customize → Custom JS | JavaScript |
| Change the markup of a page, the header, the footer, the listing card | Theme editor | Liquid |
| Give some CMS pages another layout | Theme editor, then Content → Pages → Template | Liquid |
| Change interface texts | Translations (/admin/translations) |
No |
| Install, preview or buy another theme | Theme library (/admin/themes/library) |
No |
| Set a library theme’s colours, texts and sections | Theme options (/admin/themes/options) |
No |
| Edit menus | Content → Navigation (/admin/navigation) |
No |
Add tags in <head> or after <body> |
Settings → General → Custom Tags | HTML |
| Rewrite transactional emails | Settings → Notifications (/admin/settings/notifications) |
Liquid |
How a page is rendered
Section titled “How a page is rendered”When a visitor opens a page, the platform picks the template for that kind of page (the
homepage, a listing, a search…), gives it the page’s data as Liquid objects,
and wraps the result between the <head>, the header snippet and the footer snippet. A
page has no layout template of its own to edit: change header.liquid and
footer.liquid for what surrounds every page, and the template for the content.
Many templates also receive blocks: parts of the page the platform renders itself,
such as the booking sidebar of a listing, the search filters, the sign-in form or the
pagination. You print them with {{ sidebar_block }} and move them around, but their
inner markup is the platform’s. Restyle them with CSS. Keeping these blocks is also what
keeps payments, bookings, forms and apps working.
Changes are live
Section titled “Changes are live”Saving a file in the theme editor, or Custom CSS and Custom JS, changes the live storefront at once. There is no draft, staging copy or version history.
- Work on a test marketplace when you can, and copy your files over once they work.
- Keep a copy of every file before you change it: you can restore it by pasting it back, and removing your version of a snippet or an asset restores the theme’s.
- A theme from the library can be previewed before it is switched on: the preview is shown only to you, while you are signed in to the back office.
What is not possible
Section titled “What is not possible”- Uploading a theme, a theme archive or theme files from your computer. Themes in the library are made and published by Kreezalid; you customise the one installed.
- Creating new kinds of pages or URLs. You can create snippets, CSS and JS files, and alternate templates for CMS pages.
- Defining theme options or translation keys for your own code.
- Editing the cart, the checkout steps, the buyer’s order page or the inbox in Liquid: they accept CSS only.
- Running server-side code. Liquid is the only server-side language, and it can only read the data the platform gives the template. To fetch more data from the browser, use the Front API.
The Liquid you write
Section titled “The Liquid you write”Kreezalid implements Liquid with its own objects, filters and tags. If you know Shopify themes, expect these differences:
- no
layout/theme.liquid, no sections, no JSON templates, no{% render %}, no{% schema %}: use{% include %}and the theme editor’s files; - output is not escaped automatically: escape member content with
| escapeor| rich_html; - an empty string and
0are false in conditions, and there is noblank; - unknown filters are ignored silently, unknown tags break the file.
Liquid tags and Liquid filters give the details.