LEDER DU EFTER VORES PRODUKTER?
 

Hos Bloomingville Multibrand House sælger vi eksklusivt til forhandlere. Du er velkommen til at udforske vores produkter og lade dig inspirere af vores univers fuld af nordisk design lige herunder.

 

Er du samarbejdspartner? Log ind for at se hele sortimentet, afgive ordrer og få adgang til produktmateriale.


Gå til B2B-shoppen →

Bloomingville

Se alle produkter

Creative Collection

Se alle produkter

Bloomingville MINI

Se alle produkter

Error executing template "Designs/bloomingville/eCom/Productlist/espresso-with-filters.cshtml"System.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 65) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)at System.Data.SqlClient.SqlDataReader.Read()at Dynamicweb.Ecommerce.Products.ProductRepository.GetBySql(CommandBuilder query, Boolean doRefactoring, Boolean bulkFill, Boolean useAssortments)at CompiledRazorTemplates.Dynamic.RazorEngine_da03cacf30a746efa56e4fd621ea79f6.Execute() in E:\Dynamicweb.NET\Solutions\bloomingville.espresso4.dk\Files\Templates\Designs\bloomingville\eCom\Productlist\espresso-with-filters.cshtml:line 73at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at Dynamicweb.Rendering.Template.RenderRazorTemplate()ClientConnectionId:c00c7a10-9af3-42d1-af91-db8631bbc709Error Number:1205,State:52,Class:13
1 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module 2 @using System.Collections.Generic 3 @using System.Text.RegularExpressions 4 @using System.Web 5 @using Co3.Espresso.Website.Services 6 @using Dynamicweb.Environment.Web 7 @using Co3.Espresso.Website.Models.FrontEnd 8 @using Co3.Espresso.Website.Models.FrontEnd.Ecommerce 9 @using Co3.Espresso.Website.Models.FrontEnd.Settings 10 @using Co3.Espresso.Website.Models.FrontEnd.Handlebars 11 @using Co3.Espresso4.Addons.ClerkIOIntegration.ClerkIOAPI 12 @using Dynamicweb.Frontend 13 @using Dynamicweb.Ecommerce.Products 14 15 @{ 16 bool ShowFilters = Espresso.Item.FiltersShow == "True"; 17 HandlebarsProductListTemplate handlebarsProductListTemplate = HandlebarsService.Instance.GetProductListTemplate( new HandlebarsProductListTemplateSettings() 18 { 19 Classes = new ClassList( "e-productlist js-e-productlist js-e-require" ), 20 HeaderClasses = new ClassList( "col-12 border-bottom" ), 21 MainClasses = new ClassList( ShowFilters ? "col-12" : "col-12" ), 22 AsideClasses = new ClassList( "col-12" ), 23 FooterClasses = new ClassList( "col-12 col-lg-3 col-xl-3" ), 24 PageSize = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageSize" ] ) ? GetInteger( "Ecom:ProductList.PageSize" ).ToString() : HttpContext.Current.Request[ "PageSize" ], 25 PageNumber = string.IsNullOrEmpty( HttpContext.Current.Request[ "PageNum" ] ) ? GetInteger( "Ecom:ProductList.CurrentPage" ).ToString() : HttpContext.Current.Request[ "PageNum" ], 26 SortBy = ProductListService.Instance.GetSortingParameterName( string.IsNullOrEmpty( HttpContext.Current.Request[ "SortBy" ] ) ? "" : HttpContext.Current.Request[ "SortBy" ] ), 27 SortOrder = string.IsNullOrEmpty( HttpContext.Current.Request[ "SortOrder" ] ) ? GetString( "Ecom:ProductList.SortOrder" ) : HttpContext.Current.Request[ "SortOrder" ], 28 ShowFilters = ShowFilters, 29 Heading = Espresso.Item.HeadingShow == "True" ? Espresso.Item.Name : string.Empty 30 } ); 31 32 List< EspressoPagingPage > productListPaging = new List< EspressoPagingPage >(); 33 if ( GetLoop( "Ecom:ProductList.Pages" ).Count > 0 ) 34 { 35 foreach ( LoopItem page in GetLoop( "Ecom:ProductList.Pages" ) ) 36 { 37 productListPaging.Add( new EspressoPagingPage() 38 { 39 Url = page.GetString( "Ecom:ProductList.Pages.Page.Url" ), 40 Number = page.GetString( "Ecom:ProductList.Pages.Page.Number" ) 41 } ); 42 } 43 } 44 45 string collectionSiteBaseUrl = string.Format("{0}://{1}", HttpContext.Current.Request.Url.Scheme, HttpContext.Current.Request.Url.Host); 46 string collectionFriendlyPath = PageView.Current().SearchFriendlyUrl ?? string.Empty; 47 string collectionCanonicalUrl = collectionFriendlyPath.StartsWith("http", StringComparison.OrdinalIgnoreCase) 48 ? collectionFriendlyPath 49 : collectionSiteBaseUrl + (collectionFriendlyPath.StartsWith("/") ? collectionFriendlyPath : "/" + collectionFriendlyPath); 50 string collectionCategoryName = Pageview.Page != null ? Pageview.Page.MenuText ?? string.Empty : string.Empty; 51 52 // Fetch all products for this collection — independent of AJAX paging 53 // Group IDs come from the module's "Erstat standardparametre" (Query.Parameters loop) 54 string schemaGroupIdsRaw = string.Empty; 55 var groupIdParam = GetLoop("Query.Parameters").FirstOrDefault(qp => qp.GetString("Parameter.Name") == "GroupId"); 56 if (groupIdParam != null) { schemaGroupIdsRaw = groupIdParam.GetString("Parameter.Value") ?? string.Empty; } 57 58 string schemaLangId = Pageview.Area != null ? Pageview.Area.EcomLanguageId : string.Empty; 59 int schemaProductListPageId = Pageview.Page != null ? Pageview.Page.ID : 0; 60 61 List<Dictionary<string, object>> collectionItemListElements = new List<Dictionary<string, object>>(); 62 int collectionItemPosition = 1; 63 64 if (!string.IsNullOrEmpty(schemaGroupIdsRaw)) 65 { 66 var schemaGroupIds = schemaGroupIdsRaw.Split(new[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries); 67 var schemaProductService = new Dynamicweb.Ecommerce.Products.ProductService(); 68 // Use a HashSet to avoid duplicate products when groups overlap 69 var seenProductIds = new HashSet<string>(); 70 71 foreach (string schemaGroupId in schemaGroupIds) 72 { 73 IEnumerable<Product> schemaProducts = schemaProductService.GetProductsByGroupId( 74 schemaGroupId.Trim(), false, schemaLangId, true); 75 76 foreach (Product schemaProduct in schemaProducts) 77 { 78 if (!schemaProduct.Active) { continue; } 79 if (string.IsNullOrEmpty(schemaProduct.Name)) { continue; } 80 if (!seenProductIds.Add(schemaProduct.Id)) { continue; } 81 82 var collectionListItem = new Dictionary<string, object> 83 { 84 { "@type", "ListItem" }, 85 { "position", collectionItemPosition }, 86 { "name", schemaProduct.Name } 87 }; 88 89 // Build product URL from page ID + product ID, then convert to friendly URL 90 string schemaRawUrl = string.Format("Default.aspx?ID={0}&ProductID={1}", schemaProductListPageId, schemaProduct.Id); 91 string friendlyProductPath = SearchEngineFriendlyURLs.GetFriendlyUrl(schemaRawUrl); 92 if (string.IsNullOrEmpty(friendlyProductPath)) { friendlyProductPath = schemaRawUrl; } 93 string collectionProductUrl = friendlyProductPath.StartsWith("http", StringComparison.OrdinalIgnoreCase) 94 ? friendlyProductPath 95 : collectionSiteBaseUrl + (friendlyProductPath.StartsWith("/") ? friendlyProductPath : "/" + friendlyProductPath); 96 collectionListItem.Add("url", collectionProductUrl); 97 98 // Get primary image 99 string collectionImagePath = schemaProduct.ImageLarge ?? schemaProduct.ImageMedium ?? string.Empty;100 if (!string.IsNullOrEmpty(collectionImagePath))101 {102 string collectionImageUrl = collectionImagePath.StartsWith("http", StringComparison.OrdinalIgnoreCase)103 ? collectionImagePath104 : collectionSiteBaseUrl + (collectionImagePath.StartsWith("/") ? collectionImagePath : "/" + collectionImagePath);105 collectionListItem.Add("image", collectionImageUrl);106 }107108 collectionItemListElements.Add(collectionListItem);109 collectionItemPosition++;110 }111 }112 }113114 EspressoProductList espressoProductListForSchema = ProductListService.Instance.GetProductList(115 new ProductListSettings()116 {117 Products = GetLoop( "Products" ).Select(118 productLoopItem => Co3.Espresso.Website.Services.ProductService.Instance.GetEspressoProduct(119 new ProductSettings()120 {121 Id = productLoopItem.GetString( "Ecom:Product.ID" ),122 VariantId = productLoopItem.GetString( "Ecom:Product.VariantID" ),123 PrimaryVariantId = productLoopItem.GetString( "Ecom:Product.DefaultVariantComboID" ),124 EmbeddedInModelList = true125 }126 )127 ).ToList(),128129 Paging = productListPaging,130 PageSize = Convert.ToInt32( handlebarsProductListTemplate.PageSize ),131 CurrentPage = Convert.ToInt32( handlebarsProductListTemplate.PageNumber )132 }133 );134135 var collectionPageSchema = new Dictionary<string, object>136 {137 { "@context", "https://schema.org" },138 { "@type", "CollectionPage" },139 { "name", collectionCategoryName },140 { "url", collectionCanonicalUrl },141 { "mainEntity", new Dictionary<string, object>142 {143 { "@type", "ItemList" },144 { "itemListElement", collectionItemListElements }145 }146 }147 };148 string collectionPageSchemaJson = JsonService.Instance.ToJson(collectionPageSchema);149 string clerkPopularProductsCategoryId = GetLoop("Query.Parameters").FirstOrDefault(qp => qp.GetString("Parameter.Name") == "ClerkPopularProductsCategoryId").GetString("Parameter.Value");150 if (string.IsNullOrEmpty( clerkPopularProductsCategoryId ) == false)151 {152 EspressoProductList popularCategory = APIWrapper.Instance.IGetPopularProductsForCategory( clerkPopularProductsCategoryId,"PopularProductsForCategory" );153 if (popularCategory.Products.Any())154 {155 List<EspressoProduct> popularProducts = popularCategory.Products.ToList();156 int clerkPageSize = 4;157 <div class="e-productlist-header my-1 py-1"><p class="h1 m-0">@Translate("eCom Product - Related group - PopularProductsForCategory - Heading", "Bedst sælgende i denne kategori" )</p></div>158 <div class="@handlebarsProductListTemplate.MainClasses px-0 bloomingville-productlist-popular-category">159 <div class="e-productlist">160 <div class="row">161 @foreach ( EspressoProduct espressoProduct in popularProducts.Take( clerkPageSize ).ToList() )162 {163 <div class="@handlebarsProductListTemplate.ItemClasses">164 @RenderingService.Instance.PartialView( ProductListService.Instance.ItemTemplatePath, espressoProduct )165 </div>166 }167 </div>168 </div>169 </div>170 }171 }172 }173174 <div class="@handlebarsProductListTemplate.Classes" data-paragraphid="@PageView.Current().CurrentParagraph.ID" data-require="productlist" data-page-size="@handlebarsProductListTemplate.PageSize" data-page-count="@GetLoop( "Ecom:ProductList.Pages" ).Count" data-current-page="@GetInteger( "Ecom:ProductList.CurrentPage" )">175 <div class="row">176 <div class="col-12">177 @RenderingService.Instance.PartialView( "ecom/productlist/partials/header.cshtml", handlebarsProductListTemplate )178 </div>179180 <div class="@handlebarsProductListTemplate.AsideClasses">181 <form class="js-e-productlist-form" data-action="@Espresso.Item.Url">182 <input type="hidden" name="PageNum" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageNumber )">183 <input type="hidden" name="SortBy" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortBy )">184 <input type="hidden" name="SortOrder" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.SortOrder )">185 <input type="hidden" name="PageSize" value="@HttpUtility.HtmlAttributeEncode( handlebarsProductListTemplate.PageSize )">186187 @if ( handlebarsProductListTemplate.ShowFilters )188 {189 foreach ( LoopItem facetGroup in GetLoop( "FacetGroups" ) )190 {191 <input type="hidden" name="fg" value="@facetGroup.GetString( "FacetGroup.Name" )">192 }193 <input type="hidden" class="js-e-visible-options-count" value="@Espresso.Item.FiltersVisibleOptionCount">194 }195 @foreach ( LoopItem query in GetLoop( "Query.Parameters" ) )196 {197 if ( string.IsNullOrEmpty( query.GetString( "Parameter.Value" ) ) == false )198 {199 if ( query.GetBoolean( "Parameter.IsHandledAsFacet" ) == false && query.GetString( "Parameter.Name" ) != "q" )200 {201 <input type="hidden" name="@query.GetString( "Parameter.Name" )" value="@HttpUtility.HtmlAttributeEncode( query.GetString( "Parameter.Value" ) )">202 }203 }204 }205 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters.cshtml", Espresso )206 @RenderingService.Instance.PartialView( "ecom/productlist/partials/filters-modal.cshtml" )207 </form>208 </div>209210 <div class="@handlebarsProductListTemplate.MainClasses">211 @RenderingService.Instance.PartialView( "ecom/productlist/partials/products.cshtml", espressoProductListForSchema )212 @RenderingService.Instance.PartialView( "ecom/productlist/partials/footer.cshtml", handlebarsProductListTemplate )213 </div>214 </div>215 </div>216 <script>217 dataLayer.push({218 event: 'view_item_list',219 ecommerce: {220 items: [221 @foreach ( LoopItem product in GetLoop( "Products" ) )222 {223 if ( product.GetInteger( "Products.LoopCounter" ) > 1 )224 {225 @Raw( "," )226 }227 <text>228 {229 item_name: "@product.GetString( "Ecom:Product.Name" )",230 item_id: "@product.GetString( "Ecom:Product.Number" )",231 item_variant: "@product.GetString( "Ecom:Product.VariantID" )",232 }233 </text>234 }235 ]236 }237 });238 </script>239240 @if (collectionItemListElements.Count > 0)241 {242 <script type="application/ld+json">@collectionPageSchemaJson</script>243 }

Passion for boliginteriør og nordisk design

Hos Bloomingville har vi alt i boliginteriør, som hjælper dig med at skabe den helt rigtige stemning hjemme hos dig. Du kan finde skønt boliginteriør fra vores fire brands: Bloomingville, Bloomingville MINI, Creative Collection og ILLUME x Bloomingville.

Har du også en passion for boliginteriør og design? Lad dig inspirere af vores mange unikke styles i smukt nordisk design. Vi har møbler, pynteting og interiør til: stue, køkken, kontor og entré, soveværelse og bad, børneværelse og have. Du finder også en masse fint til boligen, lamper til hjemmet og alt til jul. Vi har alt, du har brug for til at kreere et hyggeligt hjem.

Boliginteriør til stuen

I stuen kan du skabe de hyggeligste rammer med vores boliginteriør som fyrfadsstager, puder, plaider, tæpper, nips og brugskunst - det hele i Bloomingvilles nordiske design -  perfekt til at indrette hjemmets hjerterum. Vi har også masser af opbevaring til stuen, der både er funktionel og stemningsfuld. Det er alt fra stilrene magasinholdere til kasser i naturmaterialer.

Boliginteriør til køkkenet

Vi har alt, hvad du drømmer om til at indrette et smukt køkken i moderne skandinavisk stil. Se vores store udvalg af stel i stentøj, skærebrætter, serveringsfade, bakker, krukker til opbevaring og alverdens køkkenredskaber. Så kan du skabe orden i køkkenskuffer eller på køkkenbordet, dække et smukt bord, servere kager på fine fade og indrette køkkenet med stemning og stil.

Boliginteriør til kontor og entré

Indret din entré med knager, spejle og smarte opbevaringsløsninger. Vores interiør gør det muligt at kombinere det praktiske med det æstetiske. Du kan også skabe et helt nyt og hyggeligt hjemmekontor med vores dekorative kontorartikler, så det bliver et inspirerende sted at sidde og arbejde. Vi har også et håndplukket udvalg af smukke æsker til opbevaring og pæne magasinholdere, der gør det hele meget rarere på hjemmekontoret.

Boliginteriør til soveværelset

Få et fuldendt udtryk i dit soveværelse med et sengegavl, der giver en hotel-feeling, og et lækkert sengetæppe, der skruer op for det luksuriøse look. Put dejlige puder ovenpå sengetæppet, som passer ind i det farvetema og den stil, som du har valgt i soveværelset. Bloomingville har også en masse nips til at skabe stemning i soveværelset som duftlys, vaser, gulvtæpper, spejle og bløde tekstiler. Det hele rimer på “ahhh”.

Boliginteriør til børneværelset

Bloomingville MINI er vores kollektion af interiør til børneværelset, som byder på opbevaring, møbler, tekstiler, tæpper, kurve, dekoration, legetøj, stel, service og meget mere. Det er et farvefint univers i børnehøjde og altid skabt med historien i fokus, så det giver hjerter i øjnene hos børnene. Så forkæl de små med bløde bamser, sjove opbevaringskasser, det fineste legekøkken eller søde børnemøbler  – alt i et trendy nordisk design, som vi holder så meget af.

God fornøjelse med at indrette dit drømmehjem.

keyboard_arrow_up