Objetos de contexto
Cada template recibe un StoreContext como raíz. Los campos disponibles dependen del tipo de página. Todos los campos están disponibles en todos los templates, pero solo los relevantes están poblados.
StoreContext — Raíz global
Estos campos están disponibles siempre en cualquier template:
| Campo | Tipo | Descripción |
|---|---|---|
.Store | StoreData | Datos de la tienda |
.Page | PageData | Datos de la página actual |
.Menus | map[string][]NavItem | Menús de navegación |
.Settings | map[string]any | Settings del tema (merged) |
.ThemeSettings | map[string]map[string]interface{} | Settings por sección |
.SectionOrder | []string | Orden de secciones de la homepage |
.PageSections | []string | Secciones de la página actual |
.Preview | bool | true si es vista previa |
.Template | string | Nombre del template actual |
.Lang | string | Locale activo |
.CSRFToken | string | Token CSRF |
.GlobalHeadHTML | string | HTML inyectado globalmente |
.LoggedIn | bool | Si el cliente está autenticado |
.CustomerName | string | Nombre del cliente logueado |
.Store — Datos de la tienda
| Campo | Tipo | Descripción |
|---|---|---|
.Store.Name | string | Nombre de la tienda |
.Store.URL | string | URL de la tienda |
.Store.Currency | string | Código de moneda (PEN, USD) |
.Store.CurrencySymbol | string | Símbolo (S/, $) |
.Store.Description | string | Descripción de la tienda |
.Store.Logo | string | URL del logo |
.Store.LogoDark | string | URL del logo dark mode |
.Store.Favicon | string | URL del favicon |
.Page — Página actual
| Campo | Tipo | Descripción |
|---|---|---|
.Page.Title | string | Título de la página |
.Page.URL | string | URL de la página |
.Page.Description | string | Meta description |
.Page.OGImage | string | Imagen Open Graph |
.Page.Type | string | Tipo: home, product, collection, page, cart… |
.Product — Página de producto (PDP)
Disponible solo en templates/product.html.
| Campo | Tipo | Descripción |
|---|---|---|
.Product.ID | string | UUID del producto |
.Product.Title | string | Nombre |
.Product.Handle | string | Slug URL |
.Product.Description | string | Descripción HTML |
.Product.Vendor | string | Marca / proveedor |
.Product.ProductType | string | Tipo de producto |
.Product.Price | int64 | Precio en centavos |
.Product.CompareAtPrice | int64 | Precio de comparación |
.Product.Available | bool | Si hay stock |
.Product.Image | string | URL imagen principal |
.Product.Images | []string | Array de URLs de imágenes |
.Product.Variants | []VariantData | Variantes del producto |
.Product.Options | []OptionData | Opciones (talla, color…) |
.Product.Tags | []string | Tags |
.Product.SEO | SEOData | Meta tags SEO |
.Product.Reviews | ReviewData | Reseñas (addon reviews) |
.Product.Installments | []InstallmentData | Cuotas de financiamiento |
.Product.RelatedProducts | []ProductData | Productos relacionados |
.Product.Variants[i]
| Campo | Tipo | Descripción |
|---|---|---|
.ID | string | UUID de la variante |
.Title | string | Nombre (ej: "Rojo / M") |
.Price | int64 | Precio en centavos |
.CompareAtPrice | int64 | Precio tachado |
.Available | bool | Si hay stock |
.SKU | string | SKU |
.Image | string | URL imagen de la variante |
.OptionValues | map[string]string | Valores de las opciones |
.Collection — PLP
Disponible en templates/collection.html.
| Campo | Tipo | Descripción |
|---|---|---|
.Collection.ID | string | UUID |
.Collection.Title | string | Nombre |
.Collection.Handle | string | Slug |
.Collection.Description | string | Descripción |
.Collection.Image | string | Imagen de portada |
.Collection.Products | []ProductData | Productos (paginados) |
.Collection.ProductCount | int | Total de productos |
.Filters | FilterData | Filtros disponibles |
.Pagination | ExtPaginationData | Datos de paginación |
.Cart — Carrito
Disponible en templates/cart.html.
| Campo | Tipo | Descripción |
|---|---|---|
.Cart.ID | string | UUID del carrito |
.Cart.Items | []CartItem | Items del carrito |
.Cart.ItemCount | int | Cantidad total de items |
.Cart.TotalPrice | int64 | Total en centavos |
.Cart.SubtotalPrice | int64 | Subtotal |
.Cart.TotalDiscount | int64 | Descuento total |
.Cart.Currency | string | Código de moneda |
.Cart.Items[i]
| Campo | Tipo | Descripción |
|---|---|---|
.Product | ProductData | Producto |
.Variant | VariantData | Variante seleccionada |
.Quantity | int | Cantidad |
.LinePrice | int64 | Precio de la línea |
.Image | string | URL imagen |
.Customer — Cliente
Disponible cuando el cliente está logueado.
| Campo | Tipo | Descripción |
|---|---|---|
.Customer.ID | string | UUID |
.Customer.Email | string | |
.Customer.FirstName | string | Nombre |
.Customer.LastName | string | Apellido |
.Customer.LoggedIn | bool | Si está autenticado |
.Customer.Orders | []OrderData | Órdenes (en cuenta) |
.Customer.DefaultAddress | AddressData | Dirección default |
.Search — Búsqueda
Disponible en templates/search.html.
| Campo | Tipo | Descripción |
|---|---|---|
.Search.Query | string | Término de búsqueda |
.Search.Results | []ProductData | Resultados |
.Search.ResultsCount | int | Total de resultados |
.SearchQuery | string | Query raw |
.SortBy | string | Ordenamiento actual |
.Filters | FilterData | Filtros disponibles |
.Pagination | ExtPaginationData | Paginación |
.Checkout — Checkout
| Campo | Tipo | Descripción |
|---|---|---|
.Checkout.Step | string | Paso actual (shipping, payment, confirm) |
.Checkout.ShippingAddress | AddressData | Dirección de envío |
.Checkout.ShippingMethods | []ShippingMethod | Métodos de envío |
.Checkout.PaymentMethods | []PaymentMethod | Métodos de pago |
.Checkout.TotalPrice | int64 | Total |
.Confirmation — Post-purchase
| Campo | Tipo | Descripción |
|---|---|---|
.Confirmation.OrderID | string | ID de la orden |
.Confirmation.Total | int64 | Total pagado |
.Confirmation.Items | []CartItem | Items comprados |
.Confirmation.ShippingAddress | AddressData | Dirección de envío |
Colecciones de datos (homepage)
| Campo | Tipo | Descripción |
|---|---|---|
.Categories | []CategoryData | Categorías para el grid |
.Collections | []CategoryData | Colecciones destacadas |
.FeaturedProducts | []ProductData | Productos destacados |
.RelatedProducts | []ProductData | Productos relacionados |
.NewArrivals | []ProductData | Llegadas recientes |
.HeroSlides | []HeroSlideData | Slides del hero |
.Testimonials | []TestimonialData | Testimonios |
.BlogPosts | []BlogCard | Posts del blog |
.ContentPages | []PageCard | Páginas CMS |
.CategoryCards | []CategoryCardData | Cards de categorías |
.CollectionCards | []CollectionCardData | Cards de colecciones |
.TagCards | []TagCardData | Cards de tags |
.TagGroups | []TagGroupData | Grupos de tags |
.Menus — Navegación
{% for item in menus.main %}
<a href="{{ item.url }}">{{ item.title }}</a>
{% if item.children %}
{% for child in item.children %}
<a href="{{ child.url }}">{{ child.title }}</a>
{% endfor %}
{% endif %}
{% endfor %}
Disponibles: .Menus.main, .Menus.footer, .Menus.mobile.
NavItem
| Campo | Tipo | Descripción |
|---|---|---|
.Title | string | Texto del enlace |
.URL | string | Destino |
.Children | []NavItem | Sub-items |
.Type | string | Tipo: link, collection, page |
Variables del forloop
Dentro de {% for item in collection %}:
| Variable | Tipo | Descripción |
|---|---|---|
forloop.index | int | Iteración actual (1-based) |
forloop.index0 | int | Iteración actual (0-based) |
forloop.first | bool | true si es la primera |
forloop.last | bool | true si es la última |
forloop.length | int | Total de elementos |
forloop.rindex | int | Desde el final (1-based) |
forloop.rindex0 | int | Desde el final (0-based) |
Contexto por template — Resumen
| Template | Objetos principales |
|---|---|
index | .Store, .HeroSlides, .FeaturedProducts, .Collections, .Categories, .Testimonials, .Menus |
product | .Store, .Product, .RelatedProducts, .ARTryOn, .HairTryOn, .Menus |
collection | .Store, .Collection, .Filters, .Pagination, .Menus |
cart | .Store, .Cart, .Customer, .GiftEnabled, .Menus |
checkout | .Store, .Checkout, .CSRFToken, .Menus |
confirmation | .Store, .Confirmation, .Menus |
customer | .Store, .Customer, .AccountOrder, .Loyalty, .Menus |
search | .Store, .Search, .SearchQuery, .SortBy, .Filters, .Pagination, .Menus |
page | .Store, .ContentPage, .Menus |
blog | .Store, .BlogPosts, .ContentPages, .Menus |
article | .Store, .Article, .Menus |
categories | .Store, .CategoryCards, .TagGroups, .Menus |