Content types & content sites
Build non-product listings and brochure/content sites with the EAV content engine.
Not every site is a shop. The platform can run as a content site — a brochure, listing, or blog site with no cart — and supports custom content types for structured, non-product records.
Content sites
Set commerce_enabled = false (MCP set_commerce_enabled). This:
- 404s the ecom routes (
/cart,/products/*,/checkout,/collections,/search,/account); - hides commerce-only admin menus.
The site is then driven by the built-in blog / pages / menus plus custom content types.
Custom content types
A content type is a Strapi-like, EAV-backed record type (houses, dishes,
projects, events, team members…). Define the type + its fields + a url_pattern
(e.g. /properties/:slug), then create published records. No new tables are
created — it reuses the catalog EAV machinery.
mutation {
createContentType(input: {
code: "property", label: "Property", urlPattern: "/properties/:slug",
fields: [{ code: "price", type: "number" }, { code: "beds", type: "number" }]
}) { id }
}Rendering on the storefront
Records are exposed to Liquid via a content drop and a data-driven router:
- List pages expose records under
records/ the type code, with pagination,?q=/?<field>=/?sort=query params. - Detail pages expose a single
record. - Make list/detail pages customizer-editable by shipping
.jsonsection templates.
Tip
The shop-content-site and
shop-create-content-type playbooks
walk through modeling and rendering content end-to-end.
