Saltar al contenido principal

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:

CampoTipoDescripción
.StoreStoreDataDatos de la tienda
.PagePageDataDatos de la página actual
.Menusmap[string][]NavItemMenús de navegación
.Settingsmap[string]anySettings del tema (merged)
.ThemeSettingsmap[string]map[string]interface{}Settings por sección
.SectionOrder[]stringOrden de secciones de la homepage
.PageSections[]stringSecciones de la página actual
.Previewbooltrue si es vista previa
.TemplatestringNombre del template actual
.LangstringLocale activo
.CSRFTokenstringToken CSRF
.GlobalHeadHTMLstringHTML inyectado globalmente
.LoggedInboolSi el cliente está autenticado
.CustomerNamestringNombre del cliente logueado

.Store — Datos de la tienda

CampoTipoDescripción
.Store.NamestringNombre de la tienda
.Store.URLstringURL de la tienda
.Store.CurrencystringCódigo de moneda (PEN, USD)
.Store.CurrencySymbolstringSímbolo (S/, $)
.Store.DescriptionstringDescripción de la tienda
.Store.LogostringURL del logo
.Store.LogoDarkstringURL del logo dark mode
.Store.FaviconstringURL del favicon

.Page — Página actual

CampoTipoDescripción
.Page.TitlestringTítulo de la página
.Page.URLstringURL de la página
.Page.DescriptionstringMeta description
.Page.OGImagestringImagen Open Graph
.Page.TypestringTipo: home, product, collection, page, cart…

.Product — Página de producto (PDP)

Disponible solo en templates/product.html.

CampoTipoDescripción
.Product.IDstringUUID del producto
.Product.TitlestringNombre
.Product.HandlestringSlug URL
.Product.DescriptionstringDescripción HTML
.Product.VendorstringMarca / proveedor
.Product.ProductTypestringTipo de producto
.Product.Priceint64Precio en centavos
.Product.CompareAtPriceint64Precio de comparación
.Product.AvailableboolSi hay stock
.Product.ImagestringURL imagen principal
.Product.Images[]stringArray de URLs de imágenes
.Product.Variants[]VariantDataVariantes del producto
.Product.Options[]OptionDataOpciones (talla, color…)
.Product.Tags[]stringTags
.Product.SEOSEODataMeta tags SEO
.Product.ReviewsReviewDataReseñas (addon reviews)
.Product.Installments[]InstallmentDataCuotas de financiamiento
.Product.RelatedProducts[]ProductDataProductos relacionados

.Product.Variants[i]

CampoTipoDescripción
.IDstringUUID de la variante
.TitlestringNombre (ej: "Rojo / M")
.Priceint64Precio en centavos
.CompareAtPriceint64Precio tachado
.AvailableboolSi hay stock
.SKUstringSKU
.ImagestringURL imagen de la variante
.OptionValuesmap[string]stringValores de las opciones

.Collection — PLP

Disponible en templates/collection.html.

CampoTipoDescripción
.Collection.IDstringUUID
.Collection.TitlestringNombre
.Collection.HandlestringSlug
.Collection.DescriptionstringDescripción
.Collection.ImagestringImagen de portada
.Collection.Products[]ProductDataProductos (paginados)
.Collection.ProductCountintTotal de productos
.FiltersFilterDataFiltros disponibles
.PaginationExtPaginationDataDatos de paginación

.Cart — Carrito

Disponible en templates/cart.html.

CampoTipoDescripción
.Cart.IDstringUUID del carrito
.Cart.Items[]CartItemItems del carrito
.Cart.ItemCountintCantidad total de items
.Cart.TotalPriceint64Total en centavos
.Cart.SubtotalPriceint64Subtotal
.Cart.TotalDiscountint64Descuento total
.Cart.CurrencystringCódigo de moneda

.Cart.Items[i]

CampoTipoDescripción
.ProductProductDataProducto
.VariantVariantDataVariante seleccionada
.QuantityintCantidad
.LinePriceint64Precio de la línea
.ImagestringURL imagen

.Customer — Cliente

Disponible cuando el cliente está logueado.

CampoTipoDescripción
.Customer.IDstringUUID
.Customer.EmailstringEmail
.Customer.FirstNamestringNombre
.Customer.LastNamestringApellido
.Customer.LoggedInboolSi está autenticado
.Customer.Orders[]OrderDataÓrdenes (en cuenta)
.Customer.DefaultAddressAddressDataDirección default

.Search — Búsqueda

Disponible en templates/search.html.

CampoTipoDescripción
.Search.QuerystringTérmino de búsqueda
.Search.Results[]ProductDataResultados
.Search.ResultsCountintTotal de resultados
.SearchQuerystringQuery raw
.SortBystringOrdenamiento actual
.FiltersFilterDataFiltros disponibles
.PaginationExtPaginationDataPaginación

.Checkout — Checkout

CampoTipoDescripción
.Checkout.StepstringPaso actual (shipping, payment, confirm)
.Checkout.ShippingAddressAddressDataDirección de envío
.Checkout.ShippingMethods[]ShippingMethodMétodos de envío
.Checkout.PaymentMethods[]PaymentMethodMétodos de pago
.Checkout.TotalPriceint64Total

.Confirmation — Post-purchase

CampoTipoDescripción
.Confirmation.OrderIDstringID de la orden
.Confirmation.Totalint64Total pagado
.Confirmation.Items[]CartItemItems comprados
.Confirmation.ShippingAddressAddressDataDirección de envío

Colecciones de datos (homepage)

CampoTipoDescripción
.Categories[]CategoryDataCategorías para el grid
.Collections[]CategoryDataColecciones destacadas
.FeaturedProducts[]ProductDataProductos destacados
.RelatedProducts[]ProductDataProductos relacionados
.NewArrivals[]ProductDataLlegadas recientes
.HeroSlides[]HeroSlideDataSlides del hero
.Testimonials[]TestimonialDataTestimonios
.BlogPosts[]BlogCardPosts del blog
.ContentPages[]PageCardPáginas CMS
.CategoryCards[]CategoryCardDataCards de categorías
.CollectionCards[]CollectionCardDataCards de colecciones
.TagCards[]TagCardDataCards de tags
.TagGroups[]TagGroupDataGrupos de tags

{% 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.

CampoTipoDescripción
.TitlestringTexto del enlace
.URLstringDestino
.Children[]NavItemSub-items
.TypestringTipo: link, collection, page

Variables del forloop

Dentro de {% for item in collection %}:

VariableTipoDescripción
forloop.indexintIteración actual (1-based)
forloop.index0intIteración actual (0-based)
forloop.firstbooltrue si es la primera
forloop.lastbooltrue si es la última
forloop.lengthintTotal de elementos
forloop.rindexintDesde el final (1-based)
forloop.rindex0intDesde el final (0-based)

Contexto por template — Resumen

TemplateObjetos 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