Oficjalny internetowy sklep hummel® Bezpłatna dostawa przy zamówieniach powyżej 250 PLN

Exception in template (Designs\Hummel\QueryPublisher/PLPQ.cshtml): System.Exception: Error Running ExecuteReader: Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding., Sql: "SELECT
	                    -- Object columns
	                    O.DefinitionKey
	                    ,O.LastModified AS OjectLastModified
	                    ,O.ObjectId
	                    ,O.XmlObjectId
	                    ,O.ShopId
	                    ,O.LanguageId

	                    -- Value columns
	                    ,V.LastModified AS ValueLastModified
	                    ,V.XmlReferenceObjectId
	                    ,V.XmlReferenceObjectKey
	                    ,V.ValueId
	                    ,V.[Text]
                        ,V.FieldKey
                        ,V.SortOrder

                    FROM [LWI_Spec_Objects] AS O
                    JOIN [LWI_Spec_Values] AS V ON
	                    V.ShopId = O.ShopId
	                    AND V.LanguageId = O.LanguageId
	                    AND V.XmlObjectKey = O.DefinitionKey
	                    AND V.XmlObjectId = O.XmlObjectId
                    WHERE
                        O.DefinitionKey IN ('Product')
                        AND O.XmlObjectId IN ('356283')
                        AND O.ShopId IN ('SHOP3')
                        AND O.LanguageId IN ('LANG4')
                    ORDER BY O.DefinitionKey, O.LanguageId, O.ShopId, O.XmlObjectId
                    ", Params: '' ---> System.Data.SqlClient.SqlException: Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding. ---> System.ComponentModel.Win32Exception: The wait operation timed out
   --- End of inner exception stack trace ---
   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.TryConsumeMetaData()
   at System.Data.SqlClient.SqlDataReader.get_MetaData()
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at NORRIQ.Universal.DbLogWrapper.LoggedDbCommand.ExecuteReader(CommandBehavior behavior)
   at NLWI.Platforms.Dynamicweb9.Database.ADatabaseRepository.ExecuteReader(String query, Object[] ps)
   --- End of inner exception stack trace ---
   at NLWI.Platforms.Dynamicweb9.Database.ADatabaseRepository.ExecuteReader(String query, Object[] ps)
   at NLWI.Platforms.Dynamicweb9.Specs.Repositories.SpecificationRepository.GetSpecificationObjects(HashSet`1 keys) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Repositories\SpecificationRepository.cs:line 265
   at NLWI.Platforms.Dynamicweb9.Specs.Services.CachedSpecificationService.b__12_1(HashSet`1 k) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Services\CachedSpecificationService.cs:line 91
   at NLWI.Core.Platform.Caching.DictionaryCaching.GetOrInsert[TKey,TVal](HashSet`1 keys, Func`2 buildCacheKey, Func`2 lookupMethod, CacheOptions cacheOptions) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Core\Platform\Caching\DictionaryCaching.cs:line 102
   at NLWI.Platforms.Dynamicweb9.Specs.Services.CachedSpecificationService.GetSpecificationObjects(HashSet`1 specificationObjectIdentifiers) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Services\CachedSpecificationService.cs:line 88
   at NLWI.Platforms.Dynamicweb9.Specs.Services.CachedProductSpecificationService.GetProductSpecifications(Dictionary`2 autoIdMappings) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Services\CachedProductSpecificationService.cs:line 64
   at NLWI.Platforms.Dynamicweb9.Specs.Services.CachedProductSpecificationService.GetProductSpecifications(HashSet`1 productAutoIds) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Services\CachedProductSpecificationService.cs:line 59
   at NLWI.Platforms.Dynamicweb9.Specs.Services.CachedProductSpecificationService.GetProductSpecifications(Int64 productAutoId) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\Services\CachedProductSpecificationService.cs:line 91
   at NLWI.Platforms.Dynamicweb9.Specs.ProductSpecificationExtensionMethods.GetProductSpecifications(Int32 autoId) in D:\VSO Agents\00TFS01-norriq-ip\_work\3\s\src\NLWI.Platforms.Dynamicweb9.Specs\ProductSpecificationExtensionMethods.cs:line 48
   at CompiledRazorTemplates.Dynamic.daff.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()
@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 shopIdAndCurrencyCode = 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 (shopIdAndCurrencyCode) { //SE case "SHOP9EUR": priceKey = "fr-eurprice"; discountKey = "fr-eurdiscount"; break; //SE case "SHOP8PLN": priceKey = "pl-plnprice"; discountKey = "pl-plndiscount"; break; //SE case "SHOP7SEK": priceKey = "se-sekprice"; discountKey = "se-sekdiscount"; break; // .net case "SHOP6EUR": priceKey = "net-eurprice"; discountKey = "net-eurdiscount"; break; // co.uk case "SHOP5GBP": priceKey = "uk-gbpprice"; discountKey = "uk-gbpdiscount"; break; // .de case "SHOP4EUR": priceKey = "de-eurprice"; discountKey = "de-eurdiscount"; break; default: priceKey = "dk-dkprice"; discountKey = "dk-dkdiscount"; break; } var sortPosibilities = new List<string[]>(); //Temporary fix ; Raptor is only enabled for DK,DE,GB if (new[] { "DK", "DE", "GB" }.Contains(Pageview.Area.EcomCountryCode)) { sortPosibilities.Add(new[] { "recommended" + (Pageview.Area.EcomCountryCode != null ? Pageview.Area.EcomCountryCode.ToLower() : ""), "asc", Translate("B2C Recommended", "Recommended") }); } sortPosibilities.Add(new[] { "newest", "desc", Translate("B2C Newest", "Newest") }); sortPosibilities.Add(new[] { "popular", "asc", Translate("B2C Popularity", "Popularity") }); sortPosibilities.Add(new[] { priceKey, "asc", Translate("B2C Lowest price", "Lowest price") }); sortPosibilities.Add(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") }); } string[] 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_" + shopIdAndCurrencyCode).ToString("N2"); var priceWithoutDiscount = product.GetDouble("PriceWithVat_" + shopIdAndCurrencyCode).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_" + shopIdAndCurrencyCode)) { <div class="plp-product__label plp-product__label--red">@Translate("B2C Save", "Spar") @product.GetInteger("DiscountPercentage_" + shopIdAndCurrencyCode)%</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_" + shopIdAndCurrencyCode).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_" + shopIdAndCurrencyCode).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>

Zaloguj się

* Wszystkie pola muszą być prawidłowo wypełnione
* Brakż użytkownika o tym adresie email albo haśle



Twoja karta jest pusta

  • Rozmiar:

    Kolor:

    Numer produktu:

    Brak produktów w magazynie

    PLN

    PLN

    PLN

Szczegóły zamówienia

Suma częściowa 1600 PLN
PLN PLN
Razem PLN Z VAT
Idź do kasy Idź do koszyka

Zapomniałeś hasła?

* Wszystkie pola muszą być prawidłowo wypełnione

Jeśli Twój e-mail zostanie znaleziony w naszym systemie, otrzymasz wiadomość e-mail z instrukcjami resetowania hasła.