Skip to main content

Overview

Horizon follows Shopify’s theme architecture with enhanced organization and modern patterns. Understanding this structure is essential for effective theme development.

Sections

Sections are the primary building blocks of Shopify pages. Horizon includes 41 sections organized by purpose.

Universal Sections

_blocks.liquid - The Foundation

The _blocks.liquid section is Horizon’s most flexible container:
sections/_blocks.liquid
The { "type": "@theme" } block type allows any theme block to be added, making this section universally flexible.

Layout Sections

The hero section supports dual media (images/videos), custom layouts, and flexible content positioning:
Key Features:
  • Dual media slots (desktop + mobile)
  • Blurred reflection effects
  • Custom height options
  • Background overlays with gradients
Features the advanced bento grid layout system for visually dynamic collection displays.

Page-Specific Sections

  • main-product.liquid - Main product page section
  • featured-product.liquid - Featured product showcase
  • featured-product-information.liquid - Product details
Section groups enable modular header/footer architecture:
sections/header-group.json

Blocks

Theme blocks (94 total) are prefixed with _ and provide reusable components.

Block Categories

Content Blocks

  • _heading.liquid - Customizable headings
  • _content.liquid - Nested content groups
  • _divider.liquid - Section dividers
  • _inline-text.liquid - Inline typography

Media Blocks

  • _image.liquid - Responsive images
  • _media.liquid - Video/image media
  • _carousel-content.liquid - Carousel items
  • _layered-slide.liquid - Layered slideshows

Product Blocks

  • _product-card.liquid - Product cards
  • _product-card-gallery.liquid - Product images
  • _featured-product.liquid - Featured products
  • _featured-product-price.liquid - Pricing display

Navigation Blocks

  • _header-logo.liquid - Site logo
  • _header-menu.liquid - Navigation menus
  • _footer-social-icons.liquid - Social links
  • _announcement.liquid - Announcements

Block Schema Example

blocks/_content.liquid
The _content block is nestable - it accepts other theme blocks, enabling complex layouts through composition.

Snippets

Horizon contains 93 snippets organized by functionality.

Core Snippets

snippets/section.liquid
Responsibilities:
  • Color scheme application
  • Background media rendering
  • Overlay effects
  • Height and width management
snippets/group.liquid
Renders items in a sophisticated bento box grid:
snippets/bento-grid.liquid
The bento grid dynamically adjusts for 1-12 items with optimized layouts.

Utility Snippets

  • card-gallery.liquid - Product image galleries
  • collection-card.liquid - Collection cards
  • editorial-product-grid.liquid - Editorial layouts
  • add-to-cart-button.liquid - Add to cart functionality

Templates

Horizon uses JSON templates exclusively (14 files).

Template Structure

templates/product.json

Available Templates

404.json

Error page template

article.json

Blog post template

blog.json

Blog listing template

cart.json

Shopping cart template

collection.json

Collection template

gift_card.liquid

Gift card (Liquid)

index.json

Homepage template

list-collections.json

All collections template

page.json

Default page template

page.contact.json

Contact page template

password.json

Password page template

product.json

Product template

search.json

Search results template
Only gift_card.liquid uses the Liquid format; all others are JSON for maximum flexibility.

Layout Files

theme.liquid

The main layout file provides the HTML shell:
layout/theme.liquid

password.liquid

Special layout for password-protected stores.

Assets

Horizon includes 100+ asset files:
  • base.css - Core styles, CSS custom properties
  • Component-specific styles in sections/snippets
  • Scoped styles using {% stylesheet %} tags

Best Practices

Theme blocks are more flexible and reusable. Prefer composing layouts with blocks rather than creating monolithic sections.
Extract common patterns into snippets. Use the {%- doc -%} tag to document parameters.
  • Sections: descriptive names (hero.liquid, main-product.liquid)
  • Blocks: underscore prefix (_heading.liquid, _content.liquid)
  • Snippets: functionality-based names (section.liquid, bento-grid.liquid)
JSON templates provide better flexibility and enable merchants to customize layouts without code.

Next Steps

Liquid Storefronts

Learn about modern Liquid features

Theme Blocks

Deep dive into theme blocks

Development Guide

Set up your development environment

Component Reference

Browse all sections and blocks