Collection
The collection template's required section, and the one that does the most work on the page: it draws the header, the sort disclosure, the facet form, the product grid and the load-more. Every card routes through product-card, so on this catalogue each one arrives with its own audition button and its own recorded date. Two settings carry the judgment. header_style decides whether the collection gets a full-bleed banner, which needs a collection image that can survive a 55% black scrim and most collections do not have one. filter_position decides the page's geometry, and Sidebar reserves a 260px column whether or not anything ends up in it.
Section settings
- Banner eyebrow prefix. Renders above the title as "{prefix} {collection title}".
- Custom badge tag. Products carrying this tag get the custom badge chip on their card.
- Custom badge label. Free text, empty by default.
- Card hover effect.
Swap to second image·Zoom·None, defaultSwap to second image. What happens to the card image on hover. 'Swap' crossfades to a second product image. 'Zoom' scales the single image in place — the safe choice for single-image catalogs (one-of-one inventory). 'None' leaves the image still. 'Swap' automatically falls back to 'None' for products with only one image, so a card never blanks. - Card image hover behavior.
Fade·Cut, defaultFade. Only applies when 'Card hover effect' is 'Swap'. How the secondary image swaps in on hover. 'Fade' transitions opacity (substrate default). 'Cut' swaps with no animation (300ms delay). - Heading display size.
None — standard heading·Display S·Display M·Display L·Display XL, defaultNone — standard heading. Render the collection title at the oversized display scale. - Eyebrow prefix. Default “Collection”.
- Eyebrow count noun. Default “designs”. The unit counted in the eyebrow (e.g. designs, sheets, products).
- Navigation menu. A menu. The menu of collection links to show. The link matching the current collection is highlighted.
- Heading. Optional label shown above the links.
- Banner overlay opacity. 0–90% in steps of 5, default 55%.
- Header style.
Plain·Banner — collection image, defaultPlain. Banner renders the collection image full-width behind the title with a legibility scrim. Falls back to plain when the collection has no image. - Sale indicator style.
Badge·Typographic, defaultBadge. How sale states render on the card. 'Badge' emits a chip (substrate default). 'Typographic' suppresses the chip and emits a 'Reduced' text line above the price.
Colors
- Banner color scheme. Colour scheme.
- Color scheme. Colour scheme.
Display options
- Show collection title. On by default.
- Show collection description. On by default.
- Show collection eyebrow. Off by default. Renders a mono register line above the title — "{prefix} · N {noun}".
- Show card eyebrow (collection // product type). Off by default.
- Show vendor. Off by default.
- Enable filtering. On by default. Requires Search & Discovery app filters
- Enable sorting. On by default.
- Infinite scroll. Off by default. Auto-load the next page as the shopper nears the bottom. The Load more button stays as a keyboard / no-JS fallback.
- Show collection navigation. Off by default. Shows a sub-collection / sibling-collection link list. With the Sidebar filter layout it sits in the sidebar column; otherwise it renders above the grid.
Layout
- Products per page. 4–48 in steps of 4, default 24.
- Product image ratio.
Square·Portrait·Landscape, defaultSquare. - Filter position.
Sidebar·Top bar·Drawer, defaultSidebar. Filter UI layout is applied once the design system is in place - Products per row (desktop). 2–5, default 4.
- Columns (mobile).
1·2, default2.
Blocks
Up to 6 blocks.
- Promo tile. 9 settings.
Example use cases
The scale shelf, as shipped. collection.json: header_style: banner painted in scheme-3 at 55% overlay, heading_display_size: lg, the collection eyebrow on with prefix Browse and noun instruments, filter_position: sidebar carrying the by-scale menu under the heading "Every scale we build", columns_desktop: 3, badge_tag: one-of-one with the label "One of one", sale_indicator_style: typographic, hover_effect: none, and one promo_tile at position 3 spanning two columns whose copy states the recording rule. The banner is the page's one dark block, which is the per-page budget.
A plain shelf for a family with no cover image. header_style: plain, show_collection_eyebrow: true, show_description: true, filter_position: top, columns_desktop: 4. Whirligigs and bench items have no collection photograph worth bleeding full-width; the plain header puts the count line, the title and the description on stone and starts the grid roughly 200px higher up the page.
The bench, unfiltered. The six non-pitched items: enable_filtering: false, because six objects do not need facets and an empty facet column is worse than none, show_collection_nav: false, filter_position: top so no sidebar column is reserved, badge_tag left blank because nothing on the bench is one-of-one, image_ratio untouched.
Notes
filter_position: sidebarreserves the column from a class, not from content. The root always carriesmain-collection--filter-{{ filter_position }}(sections/main-collection.liquid:21), and at 990px and up that class turns.containerinto aminmax(220px, 260px) 1frgrid (assets/theme.css:1068). The.main-collection__filtersdiv only renders when filtering resolves orshow_collection_navis on. With neither, the page loses 260px to an empty column and the grid narrows for no reason. UseTopon any shelf you have not faceted.- Filtering needs the Search & Discovery app.
collection.filtersis empty without it, so the whole facet form disappears while the toolbar count and the sort disclosure stay. Timbre's scale and voice facets are store-side configuration, not theme code, and they are still outstanding at Stage 0. - The banner falls back to a product photograph.
banner_imageiscollection.imagewithcollection.products.first.featured_imagebehind it, so a collection with no image puts one studio shot full-bleed under a black scrim. On pale-stone object photography that reads as a mistake rather than as a banner. Set a collection image or choosePlain. - The banner's secondary text is an alpha of the text colour. The eyebrow paints at
rgb(var(--color-text) / 0.75)and the description at0.85, over a photograph, onscheme-3. That is the pattern DESIGN.md names as an anti-pattern on a dark ground. Do not lowerbanner_overlay_opacitybelow 55, and measure the result rather than trusting axe, which reports alpha-composited text as incomplete rather than as a failure. image_ratiochanges the download, not the box.snippets/theme-overrides.liquid:398sets every.product-card__image-containertoaspect-ratio: 4 / 5, and1 / 1whereproduct.typehandles toaccessoryorwhirligig. It renders at the end of<body>, aftertheme.css, so it wins the equal-specificity tie against the--square/--portrait/--landscapeclasses. The setting still governs the crop passed toimage_url, so leaving it onportraitkeeps the served pixels close to the box it will actually occupy.- Load-more never fires on this catalogue. The largest collection holds 8 products and
products_per_pageis 24. The pagination path is real and worth keeping for a merchant with a deeper shelf; you will not see it here without lowering the page size. - The promo tile is first-page only. It weaves in after
positionproducts and only whenpaginate.current_offsetis 0, so appended pages never repeat it. Atcolumns_desktop: 3withspan_two: trueit takes two of the three cells in its row, which is why position 3 puts it at the start of row two rather than mid-row. - The empty state is a designed surface and a reviewer will reach it. Filter to nothing and you get a heading plus a supporting line from locales, not a bare "No products found." Check it before submitting; it is the collection state people land on by accident.
- Audio. Nothing here autoplays, under any setting. Each card renders the shared player's
cardvariant whencustom.recordingresolves, and the card<progress>stays hidden until playback starts so a zero-value bar never shows as a stray dash. The masthead switch arms the strike line; the card buttons are independent of it and work whether or not the shop is armed. hover_effect: noneis a decision, not an omission. Most instruments are one-of-one with a single photograph, so there is nothing to swap to.Swapfalls back toNoneon its own, which makes the wrong setting harmless but still wrong.