Wohnzimmer

Küche

Schlafzimmer & Bad

Kinderzimmer

Error executing template "Designs/bloomingville/eCom/Productlist/espresso-with-filters.cshtml"System.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 79) 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:a43804c5-fb75-43c6-bbdc-2091a2afbfdfError 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 }

Bringen Sie Leben in jeden Raum Ihres Zuhauses mit der richtigen Einrichtung! Jeder Raum in einem Haus hat einen einzigartigen Zweck und seinen eigenen Charakter. Von dem willkommenen Eingang bis zum gemütlichen Schlafzimmer sollte jeder Raum Ihren persönlichen Stil widerspiegeln und Ihre funktionellen Bedürfnisse erfüllen.

Bei Bloomingville bieten wir eine breite Palette an Wohnaccessoires, um Ihnen dabei zu helfen, in jedem Raum die perfekte Atmosphäre zu schaffen. Egal, ob Sie Ihr Wohnzimmer auffrischen, Ihre Küche verbessern oder ein entspannendes Schlafzimmer schaffen möchten, wir haben alles, was Sie brauchen, um Ihre Räume heimelig zu gestalten.

Von stylischen Wanddekorationen und schönen Kissen bis hin zu funktionalen Aufbewahrungslösungen und eleganten Leuchten, unsere Kollektion hat alles, was Sie brauchen, um Ihre Vision zum Leben zu erwecken. Ob Sie einen klassischen, minimalistischen oder eclectischen Stil bevorzugen, unsere Produkte sind so gestaltet, dass sie Ihren Geschmack treffen und Ihr Zuhause gemütlich und einladend machen.

Bringen Sie Ihre Wohnaccessoires auf die nächste Stufe mit Bloomingville. Stöbern Sie heute in unserer Sammlung von raumspezifischen Produkten und starten Sie mit der Gestaltung des Raumes, von dem Sie immer geträumt haben! Egal, ob Sie Ihrem Esszimmer eine Note von Eleganz verleihen möchten, eine gemütliche Leseecke im Schlafzimmer schaffen oder Ihr Home-Office auf den neuesten Stand bringen möchten, wir haben alles, was Sie brauchen, um Ihre Vision zum Leben zu erwecken.
 

keyboard_arrow_up