{{ }} and @foreach, etc.). All data is scoped to the current brand automatically—the page’s brand context supplies the brand id, and the platform never mixes another brand’s products or profiles into your page.
If the brand context is missing or invalid, these functions return empty results or
null (they do not fall back to a global list). Category joins also require category rows to belong to the same brand as the product.Product lookups
Fields you can use on a product
Typical fields include code, title, checkout_title, slug, price, retail_price, currency, image, description, classification, tax_category (tax provider code), tax_exempt, subscription fields when applicable, downloadable files, and merchandising categories:title— The customer-facing display title: uses checkout_title when set, otherwise the internal title.slug— SEO-friendly URL slug. Auto-generated from checkout_title/title if not manually set in the SEO tab. Used with wildcard routes for clean product URLs (e.g.{{ product | productUrl:'shop/product' }}→/shop/product/my-product-123).product_category_id/product_subcategory_id— ids in your product category tree (configured in the Products area).category_name/subcategory_name— display names for those ids (when set on the product).product_files— downloadable files attached to the product. Each row includespurpose(digitalorbonus),title,description,image,file,kind(one of'audio','video','document','image','archive','file'— derived from extension/mime so you don’t have to classify yourself),is_primary,sort_order, andmetadata(mime_type,size,checksum,extension).bonus_files/digital_files— purpose-filtered views ofproduct_files.primary_download_url— convenience URL for the product’s first primary downloadable file.
ProductDownloads(product) when you want a single rolled-up array of everything the customer can download — digital_files then bonus_files then anything else in product_files, with the legacy digital_file / bonus_file scalars filled in only when no file rows exist, deduplicated by URL. Each entry: { url, title, kind, purpose, extension, mime_type, size, is_primary, sort_order }.
Use GetProducts with category_id to limit to products in that category or subcategory row (matches either primary or subcategory assignment). Use subcategory_id to require a specific subcategory id on the product.
Display helpers
Product categories
Combine with
@foreach to build category navigation or filter UI on landing pages.
Shipping profiles
Shipping profiles define rates and rules used at checkout. These functions help you build shipping policy or FAQ pages.tax_categories on a shipping profile
Shipping profiles do not store a tax code themselves. tax_categories is the list of distinct tax_category values from products that use that shipping profile—useful for disclosure text (“products shipped under this method may use tax codes …”), not for live tax calculation (checkout handles that).
Other useful fields
name,descriptionis_default,allow_select_on_checkoutproduct_stats_loaded—falseon list responses unless you setinclude_product_stats: true
Examples
List products in a category (replace3 with a real category id from your store):
See also
- Backend Template Engine overview
- Directives
- Variables and filters
- Product links and checkout: Buy links, Cart page tag