func ProductShow(ctx *gin.Context) { var ( product models.Product colorVariation models.ColorVariation seoSetting models.SEOSetting codes = strings.Split(ctx.Param("code"), "_") productCode = codes[0] colorCode string ) if len(codes) > 1 { colorCode = codes[1] } if DB(ctx).Where(&models.Product{Code: productCode}).First(&product).RecordNotFound() { http.Redirect(ctx.Writer, ctx.Request, "/", http.StatusFound) } DB(ctx).Preload("Product").Preload("Color").Preload("SizeVariations.Size").Where(&models.ColorVariation{ProductID: product.ID, ColorCode: colorCode}).First(&colorVariation) DB(ctx).First(&seoSetting) config.View.Funcs(funcsMap(ctx)).Execute( "product_show", gin.H{ "ActionBarTag": admin.ActionBar.Render(ctx.Writer, ctx.Request), "Product": product, "ColorVariation": colorVariation, "SeoTag": seoSetting.ProductPage.Render(seoSetting, product), "MicroProduct": seo.MicroProduct{ Name: product.Name, Description: product.Description, BrandName: product.Category.Name, SKU: product.Code, Price: float64(product.Price), Image: colorVariation.MainImageURL(), }.Render(), "CurrentUser": CurrentUser(ctx), "CurrentLocale": CurrentLocale(ctx), }, ctx.Request, ctx.Writer, ) }