Official hummel® online store Free shipping on orders above 120€

Exception in template (Designs\Hummel\QueryPublisher/PLPQ.cshtml): System.Data.SqlClient.SqlException (0x80131904): Transaction (Process ID 130) 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 NORRIQ.Universal.DbLogWrapper.LoggedDataReader.Read()
   at StandardWebshop.CustomCode.Ecom.Product.ProductColors.ProductColorRepository.LoadProductColors(String language) in D:\VSO Agents\00TFS01-norriq\_work\102\s\Src\StandardWebshop\CustomCode\Ecom\Product\ProductColors\ProductColorRepository.cs:line 61
   at NORRIQ.Common8.Caching.CacheItemContainer.BuildItem[T](Func`1 buildmethod, Type dependencyType)
   at NORRIQ.Common8.Caching.HttpCache.GetOrInsert[T](String cacheKey, Func`1 buildCacheDependency, Func`1 buildNewItem)
   at NORRIQ.Common8.Caching.HttpCache`1.GetOrInsert[T](String cacheKey, Func`1 buildNewItem)
   at NORRIQ.Common8.Caching.ShopLanguageCache.GetOrInsert[T](String cacheKey, Func`1 buildNewItem)
   at StandardWebshop.CustomCode.Ecom.Product.ProductColors.ProductColorService.b__9_0() in D:\VSO Agents\00TFS01-norriq\_work\102\s\Src\StandardWebshop\CustomCode\Ecom\Product\ProductColors\ProductColorService.cs:line 62
   at NORRIQ.Common8.Caching.CacheItemContainer.BuildItem[T](Func`1 buildmethod, Type dependencyType)
   at NORRIQ.Common8.Caching.HttpCache.GetOrInsert[T](String cacheKey, Func`1 buildCacheDependency, Func`1 buildNewItem)
   at NORRIQ.Common8.Caching.HttpCache`1.GetOrInsert[T](String cacheKey, Func`1 buildNewItem)
   at NORRIQ.Common8.Caching.ShopLanguageCache.GetOrInsert[T](String cacheKey, Func`1 buildNewItem)
   at StandardWebshop.CustomCode.Ecom.Product.ProductColors.ProductColorService.GetCached() in D:\VSO Agents\00TFS01-norriq\_work\102\s\Src\StandardWebshop\CustomCode\Ecom\Product\ProductColors\ProductColorService.cs:line 56
   at StandardWebshop.CustomCode.Ecom.Product.ProductColors.ProductColorService.GetProductColors(String productId) in D:\VSO Agents\00TFS01-norriq\_work\102\s\Src\StandardWebshop\CustomCode\Ecom\Product\ProductColors\ProductColorService.cs:line 31
   at CompiledRazorTemplates.Dynamic.cdabcdbdeadccd.Execute()
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context)
   at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag)
   at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName)
   at RazorEngine.Razor.Parse[T](String razorTemplate, T model, DynamicViewBag viewBag, String cacheName)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()
ClientConnectionId:11ece5f6-45a8-40ad-b11a-dd3baf63cb24
Error Number:1205,State:52,Class:13
@using NLWI.Platforms.Dynamicweb9.Specs @using NORRIQ.Common8.Factory @using System.Web @using NLWI.Platforms.Dynamicweb9.Specs.ViewModels @using NORRIQ.Common8.Razor @using NORRIQ.RaptorEngine.Services @using StandardWebshop.CustomCode.Ecom.Group.GroupImages @using StandardWebshop.CustomCode.Ecom.Product @using StandardWebshop.CustomCode.Ecom.Product.ProductColors @using StandardWebshop.CustomCode.Ecom.Product.ProductPublication.Services @using StandardWebshop.CustomCode.Ecom.Seo.UrlProvider @using StandardWebshop.CustomCode.Razor @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> @functions { string FixImagePath(string path) { if (path == "") { return path; } path = path.TrimStart('/'); if (!path.StartsWith("files", StringComparison.CurrentCultureIgnoreCase)) { path = "/files/" + path; } else { path = "/" + path; } return path; } string GetImageUrl(ProductSpecifications spec) { if (spec.HasKey("ModelImages") && spec.GetAllByKey("ModelImages").Any()) { return spec.GetAllByKey("ModelImages").First().Value; } else if (spec.HasKey("ColorImage")) { return spec.GetByKey("ColorImage").Value; } else if (spec.HasKey("DetailColorImages") && spec.GetAllByKey("DetailColorImages").Any()) { return spec.GetAllByKey("DetailColorImages").First().Value; } else { return "/Files/Images/Ecom/default.jpg"; } } } @{ this.Pageview.ForceNoCache(); var productUrlService = ObjectFactory.GetInstance<HummelProductUrlService>(); var groupImageService = ObjectFactory.GetInstance<GroupImageService>(); var productColorService = ObjectFactory.GetInstance<ProductColorService>(); var currencyCode = Pageview.Area.EcomCurrencyId; var search = HttpUtility.HtmlEncode(System.Web.HttpContext.Current.Request.QueryString["search"] ?? ""); var HideBreadcrumb = Pageview.CurrentParagraph.Item["HideBreadcrumbOnPlp"] != null ? Pageview.CurrentParagraph.Item["HideBreadcrumbOnPlp"].ToString() : ""; var groupId = HttpContext.Current.Request.QueryString["GroupId"]; var ecomGroup = groupId != null ? Dynamicweb.Ecommerce.Products.Group.GetGroupById(groupId, Pageview.Area.EcomLanguageId) : null; var postfix = Pageview.Area.EcomShopId + currencyCode; var publicationService = ObjectFactory.GetInstance<ProductPublicationService>(); var noProductsFoundLinkParagraph = 0; Int32.TryParse((Pageview.Area.Item["PLPNoProductsFoundLink"] as string ?? "").Split('#').Last(), out noProductsFoundLinkParagraph); if (ecomGroup != null) { Pageview.Meta.Title = string.IsNullOrEmpty(ecomGroup.Meta.Title) ? ecomGroup.Name : ecomGroup.Meta.Title; if (!string.IsNullOrEmpty(ecomGroup.Meta.Description)) { Pageview.Meta.AddTag("Description", ecomGroup.Meta.Description); } if (!string.IsNullOrEmpty(ecomGroup.Meta.Keywords)) { Pageview.Meta.AddTag("Keywords", ecomGroup.Meta.Keywords); } Pageview.Meta.AddTag("OgTitle", ecomGroup.Name); Pageview.Meta.AddTag("OgType", "product.group"); } } <div class="plp-page@(HideBreadcrumb == "True" ? " plp-page__campaign" : "")"> <div class="container"> @if (HideBreadcrumb != "True") { <div class="row"> <div class="col-md-12"> @DwCaching.CacheByPage("Breadcrumb.xslt", () => RenderNavigation(new { Template = "Breadcrumb.xslt", StartLevel = 1, EndLevel = 3, Expandmode = "all", GroupPage = Navigation.GetPageIdByNavigationTag("groups") })) </div> </div> } <div class="row"> <div class="col-sm-4 col-md-3 col-xl-2"> @using NLWI.Core.Extensions @using NORRIQ.Common8.Factory @using NORRIQ.Common8.Razor @using StandardWebshop.CustomCode.Ecom.Filtering @using StandardWebshop.CustomCode.Razor @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> @{ var hasGroup = @System.Web.HttpContext.Current.Request.QueryString["groupid"]; var sortByFile = new SortByFileService("/files/filtersorting/sorting.txt"); } <div class="plp-sidebar" id="plp-sidebar"> @if (Pageview.Page.PropertyItem["ShowEcomSidebar"].ToString() == "True") { <nav class="plp-sidebar-nav"> @DwCaching.CacheByPage("Nav-Sidebar-Ecom.xslt", () => RenderNavigation(new { Template = "Nav-Sidebar-Ecom.xslt", Expandmode = "all", StartLevel = 1, EndLevel = 3, GroupPage = Navigation.GetPageIdByNavigationTag("groups") })) </nav> } @if (GetLoop("FacetGroups").Any()) { <div class="plp-filters"> <span class="plp-sidebar-mobile-trigger plp-sidebar-mobile-trigger--close"> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#close-small"></use> </svg> </span> <p class="plp-sidebar__header"> @Translate("B2C Filtre", "Filtre") <span id="filter-reset" class="plp-filters__reset">@Translate("B2C Nulstil", "Nulstil")</span> </p> </div> } @foreach (var filter in GetLoop("FacetGroups")) { foreach (var facets in filter.GetLoop("Facets").Where(a => !a.GetString("Facet.Name").StartsWith("Hidden"))) { var isOptionSelected = facets.GetLoop("FacetOptions").Any(a => a.GetBoolean("FacetOption.Selected")); var filterActive = facets.GetInteger("Facets.LoopCounter") <= 3 || isOptionSelected ? "plp-filter__trigger--active" : ""; var filterVisible = facets.GetInteger("Facets.LoopCounter") <= 3 || isOptionSelected ? "" : " style=\"display:none;\""; if (facets.GetString("Facet.RenderType") == "Checkboxes" && facets.GetInteger("Facet.OptionWithResultCount") > 0) { var queryParameter = facets.GetString("Facet.QueryParameter"); <div class="plp-filter" data-filter-type="@queryParameter"> <p class="plp-filter__trigger @filterActive"> @facets.GetString("Facet.Name") <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-down-small"></use> </svg> </p> <div class="plp-filter__container" @filterVisible> <ul class="plp-filter__list"> @foreach (var option in sortByFile.OrderByFileOrder(facets.GetLoop("FacetOptions"), a => a.GetString("FacetOption.Value"))) { var isChecked = option.GetBoolean("FacetOption.Selected") ? "checked=\"checked\"" : ""; var optionValue = option.GetString("FacetOption.Value"); <li class="@(option.GetInteger("FacetOption.Count") > 0 ? "plp-filter__item" : "plp-filter__item plp-filter__item--disabled")" data-filter-value="@optionValue"> <label class="plp-filter__label" for="plp-filter_@optionValue"> <input type="checkbox" id="plp-filter_@optionValue" @(option.GetBoolean("FacetOption.Selected") ? " checked=\"checked\" " : "") /> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#checkmark"></use> </svg> <span class="plp-filter__name"> @option.GetString("FacetOption.Name") <span class="plp-filter__count">(@option.GetString("FacetOption.Count"))</span> </span> </label> </li> } </ul> </div> </div> } else if (facets.GetString("Facet.RenderType") == "Icons" && facets.GetInteger("Facet.OptionWithResultCount") > 0) { <div class="plp-filter plp-filter--circle-list" data-filter-type="@facets.GetString("Facet.QueryParameter")"> <p class="plp-filter__trigger @filterActive"> @facets.GetString("Facet.Name") <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-down-small"></use> </svg> </p> <div class="plp-filter__container" @filterVisible> <ul class="plp-filter__list"> @foreach (var option in sortByFile.OrderByFileOrder(facets.GetLoop("FacetOptions"), a => a.GetString("FacetOption.Value"))) { <li class="@(option.GetInteger("FacetOption.Count") > 0 ? "plp-filter__item" : "plp-filter__item plp-filter__item--disabled")" data-filter-value="@option.GetString("FacetOption.Value")"> <label class="plp-filter__label" for="plp-filter_@option.GetString("FacetOption.Value")"> <input type="checkbox" id="plp-filter_@option.GetString("FacetOption.Value")" @(option.GetBoolean("FacetOption.Selected") ? " checked=\"checked\" " : "") /> <span class="plp-filter__name"> @option.GetString("FacetOption.Name") </span> </label> </li> } </ul> </div> </div> } } if (Pageview.Area.Item["SiteHasShopping"].ToString() == "True") { var priceQuery = System.Web.HttpContext.Current.Request["price"] ?? string.Empty; var priceSplit = priceQuery.Split(','); var from = priceSplit.Length == 2 ? (priceSplit[0] == "0" ? "" : priceSplit[0]) : ""; var to = priceSplit.Length == 2 ? (priceSplit[1] == "100000" ? "" : priceSplit[1]) : ""; <div class="plp-filter-range" data-filter-type="price-range" data-filter-currency="@Pageview.Area.EcomCurrencyId"> <p class="plp-filter__trigger plp-filter__trigger--active"> @Translate("B2C Pris", "Pris") <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-down-small"></use> </svg> </p> <div class="plp-filter__container"> <div class="plp-filter-range__input-container" data-filter-value="min"> <input class="plp-filter-range__input plp-filter-range__input--min" type="text" placeholder="0" value="@from" /> <span class="plp-filter-range__currency">@Pageview.Area.EcomCurrencyId</span> </div> <div class="plp-filter-range__devider">-</div> <div class="plp-filter-range__input-container" data-filter-value="max"> <input class="plp-filter-range__input plp-filter-range__input--max" type="text" placeholder="0" value="@to" /> <span class="plp-filter-range__currency">@Pageview.Area.EcomCurrencyId</span> </div> <button class="plp-filter-range__button"> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-right-small"></use> </svg> </button> </div> </div> } <div class="plp-sidebar-foot"> <span class="plp-sidebar-mobile-trigger plp-sidebar-mobile-trigger--close"> @Translate("Tilføj filter") @*<svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#close-small"></use> </svg>*@ </span> <span id="filter-reset" class="plp-filters__reset">@Translate("B2C Nulstil", "Nulstil")</span> </div> } @if (Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop || Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Tablet) { if (ecomGroup != null && !String.IsNullOrEmpty(ecomGroup.Description)) { <div class="plp-filter-text"> <div class="plp-filter-text__text-area"> @ecomGroup.Description </div> </div> } if (Pageview.CurrentParagraph.Item["CustomPlpSeoText"] != null) { <div class="plp-filter-text"> <div class="plp-filter-text__text-area"> @Pageview.CurrentParagraph.Item["CustomPlpSeoText"].ToString() </div> </div> } } </div> </div> <div class="col-sm-8 col-md-9 col-xl-10"> <section class="plp-content" id="plp-content" data-count="@GetString("Ecom:ProductList.PageProdCnt")"> <h1 class="headline headline--medium"> @if (!string.IsNullOrEmpty(search)) { @Translate("B2C Søgning på {search}", "Søgning på {search}").Replace("{search}", search) } else if (ecomGroup != null) { var customHeader = ecomGroup.ProductGroupFieldValues.GetProductGroupFieldValue("ProductListHeader"); if (customHeader != null && customHeader.Value != DBNull.Value && !string.IsNullOrWhiteSpace((string)customHeader.Value)) { @customHeader.Value } else { @ecomGroup.Name } } else if (Pageview.CurrentParagraph.Item["CustomPlpHeadline"] != null && !String.IsNullOrEmpty(Pageview.CurrentParagraph.Item["CustomPlpHeadline"].ToString())) { @Pageview.CurrentParagraph.Item["CustomPlpHeadline"].ToString() } else { @Pageview.Page.Item["Title"] } </h1> @if (ecomGroup != null) { var GroupImagePath = "/Files/Images/"; var TopImage1D = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage1").Value.ToString(); var TopImage1M = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage1Mobile").Value.ToString(); var TopImage1T = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage1Text").Value.ToString(); var TopImage1L = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage1Link").Value.ToString(); var TopImage1W = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage1TextWhite").Value.ToString().ToLower(); var TopImage2D = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage2").Value.ToString(); var TopImage2M = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage2Mobile").Value.ToString(); var TopImage2T = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage2Text").Value.ToString(); var TopImage2L = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage2Link").Value.ToString(); var TopImage2W = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage2TextWhite").Value.ToString().ToLower(); var TopImage3D = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage3").Value.ToString(); var TopImage3M = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage3Mobile").Value.ToString(); var TopImage3T = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage3Text").Value.ToString(); var TopImage3L = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage3Link").Value.ToString(); var TopImage3W = ecomGroup.ProductGroupFieldValues.First(x => x.ProductGroupField.SystemName == "TopImage3TextWhite").Value.ToString().ToLower(); if (!string.IsNullOrEmpty(TopImage1D) || !string.IsNullOrEmpty(TopImage2D) || !string.IsNullOrEmpty(TopImage3D)) { <div class="plp-topimage"> @if (!string.IsNullOrEmpty(TopImage1D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage1W"> @if (!string.IsNullOrEmpty(TopImage1L)) { <a href="@TopImage1L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage1M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage1M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage1D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage1T)) { <figcaption> @TopImage1T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage1M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage1M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage1D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage1T)) { <figcaption> @TopImage1T </figcaption> } </figure> } </div> } @if (!string.IsNullOrEmpty(TopImage2D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage2W"> @if (!string.IsNullOrEmpty(TopImage2L)) { <a href="@TopImage2L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage2M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage2M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage2D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage2T)) { <figcaption> @TopImage2T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage2M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage2M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage2D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage2T)) { <figcaption> @TopImage2T </figcaption> } </figure> } </div> } @if (!string.IsNullOrEmpty(TopImage3D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage3W"> @if (!string.IsNullOrEmpty(TopImage3L)) { <a href="@TopImage3L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage3M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage3M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage3D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage3T)) { <figcaption> @TopImage3T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage3M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(GroupImagePath + TopImage3M)"> } <img src="@this.Pageview.CdnWrap(GroupImagePath + TopImage3D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage3T)) { <figcaption> @TopImage3T </figcaption> } </figure> } </div> } </div> } else if (ecomGroup != null && !String.IsNullOrEmpty(ecomGroup.LargeImage)) { <figure class="plp-content__figure"> <img class="plp-content__image" src="@this.Pageview.CdnWrap(FixImagePath(ecomGroup.LargeImage))" alt="@ecomGroup.Name" /> </figure> Pageview.Meta.AddTag("OgImage", FixImagePath(ecomGroup.LargeImage)); } else if (ecomGroup != null) { var inherithedImage = groupImageService.GetImage(ecomGroup.Id); if (!string.IsNullOrEmpty(inherithedImage)) { <figure class="plp-content__figure"> <img class="plp-content__image" src="@this.Pageview.CdnWrap(FixImagePath(inherithedImage))" alt="@ecomGroup.Name" /> </figure> Pageview.Meta.AddTag("OgImage", FixImagePath(inherithedImage)); } } } else { var TopImage1D = Pageview.CurrentParagraph.Item["TopImage1"] != null ? Pageview.CurrentParagraph.Item["TopImage1"].ToString() : ""; var TopImage1M = Pageview.CurrentParagraph.Item["TopImage1Mobile"] != null ? Pageview.CurrentParagraph.Item["TopImage1Mobile"].ToString() : ""; var TopImage1T = Pageview.CurrentParagraph.Item["TopImage1Text"] != null ? Pageview.CurrentParagraph.Item["TopImage1Text"].ToString() : ""; var TopImage1L = Pageview.CurrentParagraph.Item["TopImage1Link"] != null ? Pageview.CurrentParagraph.Item["TopImage1Link"].ToString() : ""; var TopImage1W = Pageview.CurrentParagraph.Item["TopImage1TextWhite"] != null ? Pageview.CurrentParagraph.Item["TopImage1TextWhite"].ToString().ToLower() : ""; var TopImage2D = Pageview.CurrentParagraph.Item["TopImage2"] != null ? Pageview.CurrentParagraph.Item["TopImage2"].ToString() : ""; var TopImage2M = Pageview.CurrentParagraph.Item["TopImage2Mobile"] != null ? Pageview.CurrentParagraph.Item["TopImage2Mobile"].ToString() : ""; var TopImage2T = Pageview.CurrentParagraph.Item["TopImage2Text"] != null ? Pageview.CurrentParagraph.Item["TopImage2Text"].ToString() : ""; var TopImage2L = Pageview.CurrentParagraph.Item["TopImage2Link"] != null ? Pageview.CurrentParagraph.Item["TopImage2Link"].ToString() : ""; var TopImage2W = Pageview.CurrentParagraph.Item["TopImage2TextWhite"] != null ? Pageview.CurrentParagraph.Item["TopImage2TextWhite"].ToString().ToLower() : ""; var TopImage3D = Pageview.CurrentParagraph.Item["TopImage3"] != null ? Pageview.CurrentParagraph.Item["TopImage3"].ToString() : ""; var TopImage3M = Pageview.CurrentParagraph.Item["TopImage3Mobile"] != null ? Pageview.CurrentParagraph.Item["TopImage3Mobile"].ToString() : ""; var TopImage3T = Pageview.CurrentParagraph.Item["TopImage3Text"] != null ? Pageview.CurrentParagraph.Item["TopImage3Text"].ToString() : ""; var TopImage3L = Pageview.CurrentParagraph.Item["TopImage3Link"] != null ? Pageview.CurrentParagraph.Item["TopImage3Link"].ToString() : ""; var TopImage3W = Pageview.CurrentParagraph.Item["TopImage3TextWhite"] != null ? Pageview.CurrentParagraph.Item["TopImage3TextWhite"].ToString().ToLower() : ""; if (!string.IsNullOrEmpty(TopImage1D) || !string.IsNullOrEmpty(TopImage2D)) { <div class="plp-topimage"> @if (!string.IsNullOrEmpty(TopImage1D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage1W"> @if (!string.IsNullOrEmpty(TopImage1L)) { <a href="@TopImage1L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage1M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage1M)"> } <img src="@this.Pageview.CdnWrap(TopImage1D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage1T)) { <figcaption> @TopImage1T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage1M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage1M)"> } <img src="@this.Pageview.CdnWrap(TopImage1D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage1T)) { <figcaption> @TopImage1T </figcaption> } </figure> } </div> } @if (!string.IsNullOrEmpty(TopImage2D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage2W"> @if (!string.IsNullOrEmpty(TopImage2L)) { <a href="@TopImage2L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage2M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage2M)"> } <img src="@this.Pageview.CdnWrap(TopImage2D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage2T)) { <figcaption> @TopImage2T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage2M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage2M)"> } <img src="@this.Pageview.CdnWrap(TopImage2D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage2T)) { <figcaption> @TopImage2T </figcaption> } </figure> } </div> } @if (!string.IsNullOrEmpty(TopImage3D)) { <div class="plp-topimage__col plp-topimage__inverse--@TopImage3W"> @if (!string.IsNullOrEmpty(TopImage3L)) { <a href="@TopImage3L" class="plp-topimage__link"> <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage3M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage3M)"> } <img src="@this.Pageview.CdnWrap(TopImage3D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage3T)) { <figcaption> @TopImage3T </figcaption> } </figure> </a> } else { <figure class="plp-topimage__figure"> <picture> @if (!string.IsNullOrEmpty(TopImage3M)) { <source media="(max-width: 767px) and (orientation: portrait)" srcset="@this.Pageview.CdnWrap(TopImage3M)"> } <img src="@this.Pageview.CdnWrap(TopImage3D)" /> </picture> @if (!string.IsNullOrEmpty(TopImage3T)) { <figcaption> @TopImage3T </figcaption> } </figure> } </div> } </div> } } @{ string priceKey; string discountKey; switch (currencyCode) { case "EUR": priceKey = "euprice"; discountKey = "eudiscount"; break; case "GBP": priceKey = "gbpprice"; discountKey = "gbpdiscount"; break; default: priceKey = "dkprice"; discountKey = "dkdiscount"; break; } var sortPosibilities = new List<string[]>() { { new [] {"recommended" + (Pageview.Area.EcomCountryCode != null ? Pageview.Area.EcomCountryCode.ToLower() : ""),"asc", Translate("B2C Recommended", "Recommended") }}, { new [] {"newest","desc",Translate("B2C Newest", "Newest")}}, { new [] {"popular","asc", Translate("B2C Popularity", "Popularity")} }, { new [] { priceKey, "asc",Translate("B2C Lowest price", "Lowest price")}}, { new [] { priceKey, "desc",Translate("B2C Heighest price", "Heighest price")}} }; @* Only add highest discounts if there are products with discount *@ if (GetLoop("FacetGroups").Any(c => c.GetLoop("Facets").Any(a => a.GetString("Facet.Name") == "HiddenDiscountExists" && a.GetLoop("FacetOptions").Any(b => b.GetBoolean("FacetOption.Value"))))) { sortPosibilities.Add(new[] { discountKey, "desc", Translate("B2C Heighest discount", "Sale") }); } var sortSelected = sortPosibilities.FirstOrDefault(a => string.Equals(a[0], HttpContext.Current.Request.QueryString["SortBy"]) && string.Equals(a[1], HttpContext.Current.Request.QueryString["SortOrder"])) ?? sortPosibilities.First(); } <div class="plp-products-top"> <div class="plp-sidebar-mobile-trigger"> @Translate("B2C Filtre", "Filtre") <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-down-small"></use> </svg> </div> <div class="plp-sort" data-sort-name="SortBy" data-sort-direction-name="SortOrder"> <div class="plp-sort__current"> @Translate("B2C sort by", "sort by") <span>@sortSelected.Last()</span> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-down-small"></use> </svg> </div> <ul class="plp-sort__list" style="display: none;"> @foreach (var sort in sortPosibilities) { <li class="plp-sort__item@(sort == sortSelected ? " plp-sort__item--active" : "")" data-sort-value="@sort[0]" data-sort-direction="@sort[1]"> <span>@sort[2]</span> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#checkmark"></use> </svg> </li> } </ul> </div> <div class="plp-products-top__count"> <span>@GetString("QueryResult.TotalCount")</span> @Translate("B2C produkter", "produkter") <div class="plp-product-list__loading"> <svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" class="lds-eclipse"> <path ng-attr-d="{{config.pathCmd}}" ng-attr-fill="{{config.color}}" stroke="none" d="M5 50A45 45 0 0 0 95 50A45 50 0 0 1 5 50" fill="#28292f" transform="rotate(8 50 52.5)"> <animateTransform attributeName="transform" type="rotate" calcMode="linear" values="0 50 52.5;360 50 52.5" keyTimes="0;1" dur="1.5s" begin="0s" repeatCount="indefinite"></animateTransform> </path> </svg> </div> </div> <div class="filter-reset--mobile"> @Translate("B2C Nulstil filtre", "Nulstil filtre") </div> </div> @if (GetLoop("QueryResultItem").Any()) { <ul class="plp-product-list"> @{ var products = GetLoop("QueryResultItem"); if (string.Equals(sortSelected[0], "recommended" + (Pageview.Area.EcomCountryCode != null ? Pageview.Area.EcomCountryCode.ToLower() : ""))) { var raptorSortingService = ObjectFactory.GetInstance<RaptorSortingService>(); products = raptorSortingService.SearhBoost(products, p => string.Format("{0}-{1}", p.GetString("ProductNumber"), p.GetString("ColorCode")), null, "PersonalSearchBoostNew"); } } @foreach (var product in products) { var priceWithDiscount = product.GetDouble("DiscountPriceWithVat_" + postfix).ToString("N2"); var priceWithoutDiscount = product.GetDouble("PriceWithVat_" + postfix).ToString("N2"); var productNumber = product.GetString("ProductNumber"); var productColors = productColorService.GetProductColors(productNumber + "-at-SHOP3").Where(publicationService.ShowProduct).ToList(); var url = productUrlService.GetProductUri(new ProductColorKey(productNumber, product.GetString("ColorCode"), Pageview.Area.EcomLanguageId)).PathAndQuery; var perfion = ProductSpecificationExtensionMethods.GetProductSpecifications(product.GetInteger("AutoID")); var image = this.Pageview.CdnWrap("/Admin/Public/GetImage.ashx?Width=270&amp;Height=270&amp;Compression=85&amp;Crop=5&amp;Image=" + GetImageUrl(perfion)); bool isNew = false; var currentDate = DateTime.Now.Date; var newStatusExpirationDate = product.GetDate("NewStatusExpirationDate"); if (newStatusExpirationDate.Year != 1753 && product.GetBoolean("IsNew") && currentDate <= newStatusExpirationDate) //1753 is default value in import { isNew = true; } else if (product.GetBoolean("IsNew")) { isNew = true; } <li class="plp-product" data-auto-id="@product.GetInteger("AutoID")"> <div class="plp-product__container"> <div class="plp-product__inner-container" itemscope itemtype="http://schema.org/Product"> <a href="@url" class="plp-product__anchor"> <figure class="plp-product__figure"> <div class="plp-product__figure-inner" style="background-image: url(@image);" data-default-style="background-image:url(@image);"></div> <noscript> <img class="plp-product__image" src="@image" itemprop="image" /> </noscript> </figure> </a> @if (Pageview.Area.Item["SiteHasShopping"].ToString() == "True") { if (product.GetBoolean("DiscountExists_" + postfix)) { <div class="plp-product__label plp-product__label--red">@Translate("B2C Save", "Spar") @product.GetInteger("DiscountPercentage_" + postfix)%</div> } else if (isNew) { <div class="plp-product__label plp-product__label--black">@Translate("B2C Nyhed", "Nyhed")</div> } else if (product.GetBoolean("SalesCountIsBestSeller")) { <div class="plp-product__label plp-product__label--blue">@Translate("B2C bestseller", "Bestseller")</div> } } else { if (isNew) { <div class="plp-product__label plp-product__label--black">@Translate("B2C Nyhed", "Nyhed")</div> } } @*<div class="plp-product__favorite plp-product__favorite--active"> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#favorit-stroke"></use> </svg> <svg class="icon icon--active"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#favorit-full"></use> </svg> </div>*@ @if (productColors.Count > 1 && Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Desktop) { <div class="plp-product-colors owl-carousel"> @{ var shownColorCode = perfion.GetByKey("ColorCode").Value; int counter = 0; } @foreach (var color in productColors.OrderByDescending(a => a.ColorCode == shownColorCode)) { var colorImageLarge = this.Pageview.CdnWrap("/Admin/Public/GetImage.ashx?Width=270&amp;Height=270&amp;Compression=85&amp;Crop=5&amp;Image=" + (!string.IsNullOrEmpty(color.LargeImage) ? color.LargeImage : "/Files/Images/Ecom/default.jpg")); var colorImageSmall = this.Pageview.CdnWrap("/Admin/Public/GetImage.ashx?Width=60&amp;Height=60&amp;Compression=100&amp;Crop=5&amp;Image=" + (!string.IsNullOrEmpty(color.LargeImage) ? color.LargeImage : "/Files/Images/Ecom/default.jpg")); <a class="plp-product-colors__item@(counter == 0 ? " plp-product-colors__item--active" : "")" href="@color.GetUrl()"> @*<figure class="plp-product-colors__figure" style="background-image:url(@colorImage);"></figure> <noscript><img class="plp-product-colors__image" src="@colorImage" /></noscript>*@ <figure class="plp-product-colors__figure"> <img class="plp-product-colors__image plp-product-colors__image owl-lazy" data-src="@colorImageSmall" data-large-src="@colorImageLarge" /> </figure> </a> counter++; } </div> } <div class="plp-product__details"> @if (productColors.Count > 1) { <div class="plp-product__colors"> <span>@productColors.Count @Translate("B2C farver", "farver")</span> </div> } else { <div class="plp-product__colors">&nbsp;</div> } <div class="plp-product__name" itemprop="name">@product.GetString("ProductName")</div> @if (Pageview.Area.Item["SiteHasShopping"].ToString() == "True") { <div class="plp-product__price" itemprop="offers" itemscope itemtype="http://schema.org/Offer"> @if (priceWithDiscount != priceWithoutDiscount) { <span class="price-discount"><span itemprop="price" content="@(product.GetDouble("PriceWithVat_" + postfix).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture))">@priceWithDiscount</span> <span itemprop="priceCurrency" content="@currencyCode">@currencyCode</span></span> <span class="price-original">@priceWithoutDiscount @currencyCode</span> } else { <span itemprop="price" content="@(product.GetDouble("PriceWithVat_" + postfix).ToString("0.00", System.Globalization.CultureInfo.InvariantCulture))">@priceWithDiscount</span> <span itemprop="priceCurrency" content="@currencyCode">@currencyCode</span> } </div> } </div> </div> </div> </li> } </ul> @* Load more should get 20 additional product items on click by default. when there's no more products available to load, either remove element on postback or add plp-product-loadmore--off class to plp-product-loadmore e.g. <div class="plp-product-loadmore plp-product-loadmore--off"> *@ <div class="@(GetInteger("DwPaging.CurrentPage") < GetInteger("DwPaging.PageCount") ? "plp-product-loadmore" : "plp-product-loadmore plp-product-loadmore--off")" data-page-iterate="@GetString("DwPaging.PageSize")"> <button class="btn"> <span> @Translate("B2C Load more", "Load more") </span> </button> </div> <div title="Scroll to top" id="footer__scroll-to-top" class="btn-clear"> <span> <svg class="icon"> <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/dist/icons/icons.svg#arrow-up-small"></use> </svg> </span> </div> } else if (noProductsFoundLinkParagraph > 0) { @Pageview.RenderParagraphCachedCrossUsers(noProductsFoundLinkParagraph) } @if (Pageview.Device == Dynamicweb.Frontend.Devices.DeviceType.Mobile) { if (ecomGroup != null && !String.IsNullOrEmpty(ecomGroup.Description)) { <div class="plp-filter-text"> <div class="plp-filter-text__text-area"> @ecomGroup.Description </div> </div> } if (Pageview.CurrentParagraph.Item["CustomPlpSeoText"] != null) { <div class="plp-filter-text"> <div class="plp-filter-text__text-area"> @Pageview.CurrentParagraph.Item["CustomPlpSeoText"].ToString() </div> </div> } } </section> </div> </div> </div> </div>

Log ind

* All fields must contain valid data.
* Your email or password was entered incorrectly.



Your cart is empty

  • Size:

    Colour:

    Item no.:

    No items in stock

    EUR

    EUR

    EUR

Order details

Subtotal 1600 EUR
EUR EUR
Total EUR incl. VAT
Go to checkout Go to cart

Forgot password

* All fields must contain valid data.

If your email is found in our system an email with password resetting instructions is sent to you. Should arrive at your inbox shortly!