Egenproduktion af genbrugsplastEgenproduktion af genbrugsplast
Bestil før kl. 14.00 - så sender vi i dagBestil før kl. 14.00 - så sender vi i dag
Lagerførende på varer til akutopgaverLagerførende på varer til akutopgaver
Gratis beregning og dimensioneringGratis beregning og dimensionering
Exception in template (Designs\Rapido\eCom/Productlist/NZProductsRender.cshtml): System.NullReferenceException: Object reference not set to an instance of an object.
at CompiledRazorTemplates.Dynamic.fdcecbdbfedaa.Execute()
at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateBase.cs:line 126
at RazorEngine.Templating.TemplateService.Run(ITemplate template, DynamicViewBag viewBag) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateService.cs:line 608
at RazorEngine.Templating.TemplateService.Parse(String razorTemplate, Object model, DynamicViewBag viewBag, String cacheName) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Templating\TemplateService.cs:line 439
at RazorEngine.Razor.Parse[T](String razorTemplate, T model, DynamicViewBag viewBag, String cacheName) in c:\Users\abbottm\Documents\GitHub\RazorEngine\src\Core\RazorEngine.Core\Razor.cs:line 290
at Dynamicweb.Rendering.Template.RenderRazorTemplate()
@inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> @using Dynamicweb.Core @using System @using System.Web @using System.Linq @using Dynamicweb.Ecommerce.Products @using Dynamicweb.Security.UserManagement; @{ string pageUrl = GetGlobalValue("Global:Pageview.Url.Raw"); //Favorites string pageId = GetGlobalValue("Global:Page.ID"); string feedFullUrl = pageUrl + "&feed=true"; string requestQuery = GetGlobalValue("Global:Request.Query") + "&feed=true"; string groupID = HttpContext.Current.Request.QueryString.Get("groupid"); string searchQuery = HttpContext.Current.Request.QueryString.Get("Search"); string productCatalogId = GetGlobalValue("Global:Page.ID"); string listId = HttpContext.Current.Request.QueryString.Get("ListID"); bool isFavoriteList = !String.IsNullOrEmpty(listId) ? true : false; requestQuery += !isFavoriteList ? "&DoNotShowVariantsAsSingleProducts=True" : ""; feedFullUrl += !isFavoriteList ? "&DoNotShowVariantsAsSingleProducts=True" : ""; int mostPopularProducts = GetInteger("eCom:Related.MostPopularProducts.Count"); string favoritPage = String.Format("/Default.aspx?ID={0}&CC20=CreateFormList", GetPageIdByNavigationTag("CustomerFavorites").ToString()); int productsPageId = GetPageIdByNavigationTag("ProductsPage"); int productsSearchFeedId = productsPageId; int productGroupsPageId = GetPageIdByNavigationTag("ProductGroupsFeed"); string searchCountText = Translate("Showing page", "Showing page") + " " + GetValue("Ecom:ProductList.CurrentPage") + " " + Translate("of", "of") + " " + GetValue("Ecom:ProductList.TotalPages") + " (" + GetValue("Ecom:ProductList.PageProdCnt") + " " + Translate("products", "products") + ")"; int listViewsCount = 0; listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductItemContainer"]) ? 1 : 0; listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductGridItemContainer"]) ? 1 : 0; listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductDetailsItemContainer"]) ? 1 : 0; bool hideSorting = Converter.ToBoolean(Pageview.Area.Item["HideSorting"]); bool onlyPreview = Converter.ToBoolean(Pageview.Area.Item["OnlyPreviewForAnonymous"]) && Pageview.User == null; Dynamicweb.Ecommerce.Products.GroupService currentGroup = new Dynamicweb.Ecommerce.Products.GroupService(); string categoryBottomDescription = !string.IsNullOrWhiteSpace(groupID) && currentGroup.GetGroup(groupID).ProductGroupFieldValues.Any(x => x.ProductGroupField.SystemName.Equals("categoryBottomDescription")) ? currentGroup.GetGroup(groupID).ProductGroupFieldValues.GetProductGroupFieldValue("categoryBottomDescription").Value.ToString() : ""; } @* Set product canonical URL *@ @SnippetStart("canonical") @{ string host = GetGlobalValue("Global:Request.Host"); string url = GetGlobalValue("Global:Pageview.Url"); int queryIndex = url.IndexOf("?", StringComparison.Ordinal); if (queryIndex > -1) { url = url.Substring(0, queryIndex); } } <link rel="canonical" href="https://@host@url"> @SnippetEnd("canonical") @if (GetGlobalValue("Global:Pageview.Url").Split('/').Count() > 3 || !string.IsNullOrEmpty(searchQuery)) { if (!string.IsNullOrEmpty(searchQuery)) { <section class="mt-5 grid__col--bleed-y"> <h1 class="h2">@Translate("Search result for"): @searchQuery</h1> </section> <div class="grid__cell grid__cell--align-middle-right grid__col-12"> <div class="grid__col--bleed"> <div class="typeahead u-color-inherit js-typeahead" data-page-size="10" id="TopProductSearch" data-search-feed-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> <ul class="dropdown dropdown--absolute-position u-min-w220px js-handlebars-root js-typeahead-groups-content dw-mod" id="TopProductSearchGroupsContent" data-template="SearchGroupsTemplate" data-json-feed="/Default.aspx?ID=@productGroupsPageId&feedType=productGroups" data-init-onload="false" data-preloader="minimal"></ul> <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field w-100" placeholder="@searchQuery" value="@searchQuery"> <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content u-full-width dw-mod" id="TopProductSearchContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false" data-preloader="minimal"></ul> <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon"></i> </div> </div> </div> } <div name="multiForm" id="multiForm" method="post"> <input type="hidden" name="CartCmd" id="CartCmd" value="addMulti" /> <div class="paragraph-container mt-5"> <div class="grid grid--align-content-start js-handlebars-root product-list js-target" id="productList" data-template="ProductContainer" data-pre-render-template="ProductPreRenderContainer" data-json-feed="@feedFullUrl" data-preloader="overlay"></div> </div> </div> <script id="ProductPreRenderContainer" type="text/x-template"> <div class="grid__col-12"> <div class="pre-render-element pre-render-element--xxs"></div> </div> <div class="grid__col-12"> <div class="pre-render-element pre-render-element--xs"></div> </div> @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "left" && Pageview.Device.ToString() != "Mobile") { <div class="grid__col-3"> <div class="pre-render-element pre-render-element--xs"></div> <div class="pre-render-element pre-render-element--md"></div> <div class="pre-render-element pre-render-element--md"></div> <div class="pre-render-element pre-render-element--md"></div> </div> } <div class="grid__col-auto"> <div class="pre-render-element pre-render-element--xs"></div> <div class="pre-render-element pre-render-element--lg"></div> <div class="pre-render-element pre-render-element--lg"></div> <div class="pre-render-element pre-render-element--lg"></div> <div class="pre-render-element pre-render-element--lg"></div> </div> </script> <script id="ProductContainer" type="text/x-template"> {{#each .}} @if (!isFavoriteList) { switch (Pageview.Area.Item["PromotionBlockDesign"].ToString()) { case "OnlyText": break; case "TextAndImage": break; case "Banner": <text> {{#ifCond groupPromotionImage "!==" ""}} <article class="grid__col-12 u-margin-bottom"> <div class="u-color-light grid center-container center-container--with-background-image u-padding" style="background-image:url('{{groupPromotionImage}}'); background-size: cover;"> <div class="grid__col-12 u-middle"> <div class="grid__cell"> {{{groupDescription}}} </div> </div> </div> </article> {{/ifCond}} </text> break; } } @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "top" || Pageview.Device.ToString() == "Mobile") { <div class="grid__col-12 grid__col--bleed-x"> <input type="checkbox" id="CheckFacetGroups" class="facets-container-trigger" /> <div class="grid facets-container dw-mod"> <div class="grid__col-xs-12 grid__col--bleed-y js-facets-group"> <div class="facets-group__name">Dimension 1 (mm)</div> <div class="js-facets-container"> <div class="custom-control custom-control--number products__facet"> <form id="dimension1" class="js-custom-facet-number facet-min-max" action="" method="GET"> <input type="number" class="js-custom-facet-number-input facet-min-max__min w-100" name="dimension1" value="@Dynamicweb.Input.Request("dimension1")" placeholder="Dimension 1"> <i class="search-icon fa fa-search facet-min-max__submit"></i> </form> </div> </div> </div> <div class="grid__col-xs-12 grid__col--bleed-y js-facets-group"> <div class="facets-group__name">Dimension 2 (mm)</div> <div class="js-facets-container"> <div class="custom-control custom-control--number products__facet"> <form id="dimension2" class="js-custom-facet-number facet-min-max" action="" method="GET"> <input type="number" class="js-custom-facet-number-input facet-min-max__min w-100" name="dimension2" value="@Dynamicweb.Input.Request("dimension2")" placeholder="Dimension 2"> <i class="search-icon fa fa-search facet-min-max__submit"></i> </form> </div> </div> </div> {{#FacetGroups}} <div class="grid__col-lg-3 grid__col-md-3 grid__col-sm-4 grid__col-xs-12"> <input type="checkbox" id="OptionsGroup_{{counter}}" class="dropdown-trigger" /> <div class="dropdown dw-mod"> <label class="dropdown__header dropdown__btn dw-mod" for="OptionsGroup_{{counter}}">{{name}}</label> <div id="FacetOptions" class="dropdown__content dropdown__content--padding dw-mod"> {{#ifCond template "===" "Number"}} {{>Number}} {{/ifCond}} {{#ifCond template "===" "Range"}} {{>Range}} {{/ifCond}} {{#FacetOptions}} {{#ifCond template "===" "Checkboxes"}} {{>Checkboxes}} {{/ifCond}} {{#ifCond template "===" "Weight"}} {{>Weight}} {{/ifCond}} {{#ifCond template "===" "Tags"}} {{>Tags}} {{/ifCond}} {{#ifCond template "===" "Colors"}} {{>Colors}} {{/ifCond}} {{/FacetOptions}} </div> <label class="dropdown-trigger-off" for="OptionsGroup_{{counter}}"></label> </div> </div> {{/FacetGroups}} </div> <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector more" style="margin-left: 14px; margin-right: 14px; width: calc(100% - 28px);">@Translate("Select filters")</label> <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector less" style="margin-left: 14px; margin-right: 14px; width: calc(100% - 28px);">@Translate("Close filters")</label> </div> } @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "left" && Pageview.Device.ToString() != "Mobile" && string.IsNullOrEmpty(searchQuery) && !isFavoriteList) { @*Code break - Filter*@ <div class="grid__col-12 grid__col-md-3 filter-container"> <div class="u-hidden-sm"> <div class="grid__col-sm-12 grid__col--bleed pb-lg-5 p-0"> <div class="filter-container__search typeahead u-color-inherit js-typeahead" data-page-size="10" id="TopProductSearch" data-search-feed-id="@productsSearchFeedId&feed=true" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> <ul class="dropdown dropdown--absolute-position u-min-w220px js-handlebars-root js-typeahead-groups-content dw-mod" id="TopProductSearchGroupsContent" data-template="SearchGroupsTemplate" data-json-feed="/Default.aspx?ID=@productGroupsPageId&feedType=productGroups" data-init-onload="false" data-preloader="minimal"></ul> <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field w-100" placeholder="@Translate("Search")" value="@searchQuery"> <ul class="dropdown dropdown--absolute-position u-min-w220px u-full-width js-handlebars-root js-typeahead-search-content u-full-width dw-mod" id="TopProductSearchContent" data-template="SearchContentTemplate" data-json-feed="/Default.aspx?ID=@productsSearchFeedId&feedType=productsOnly&feed=true" data-init-onload="false" data-preloader="minimal"></ul> <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon"></i> </div> </div> </div> <input type="checkbox" id="CheckFacetGroups" class="facets-container-trigger" /> <div class="facets-container dw-mod"> <form class="facets-group js-facets-group js-custom-facet-number"> <div class="facets-group__name">Dimension 1 (mm)</div> <div class="js-facets-container"> <div class="custom-control custom-control--number products__facet"> <input type="number" class="js-custom-facet-number-input w-100" name="dimension1" value="@Dynamicweb.Input.Request("dimension1")" placeholder="Dimension 1"> <i class="search-icon fa fa-search facet-min-max__submit"></i> </div> </div> <div class="facets-group__name">Dimension 2 (mm)</div> <div class="js-facets-container"> <div class="custom-control custom-control--number products__facet"> <input type="number" class="js-custom-facet-number-input w-100" name="dimension2" value="@Dynamicweb.Input.Request("dimension2")" placeholder="Dimension 2"> <i class="search-icon fa fa-search facet-min-max__submit"></i> </div> </div> </form> {{#FacetGroups}} <div class="facets-group js-facets-group"> <div class="facets-group__name">{{name}}</div> <div class="js-facets-container"> {{#ifCond template "===" "Number"}} {{>Number}} {{/ifCond}} {{#ifCond template "===" "Range"}} {{>Range}} {{/ifCond}} {{#FacetOptions}} {{#ifCond template "===" "Checkboxes"}} {{>Checkboxes}} {{/ifCond}} {{#ifCond template "===" "Weight"}} {{>Weight}} {{/ifCond}} {{#ifCond template "===" "Tags"}} {{>Tags}} {{/ifCond}} {{#ifCond template "===" "Colors"}} {{>Colors}} {{/ifCond}} {{/FacetOptions}} </div> <div class="js-facets-trigger"> <span class="js-facets-more">@Translate("See more")</span> <span class="js-facets-less">@Translate("See less")</span> </div> </div> {{/FacetGroups}} </div> <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector more">@Translate("Select filters")</label> <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector less">@Translate("Close filters")</label> </div> } <div class="@(!string.IsNullOrEmpty(searchQuery) || isFavoriteList ? "grid__col-12 grid__col--bleed-x" : "grid__col-12 grid__col-md-9") pt-3"> <div class="grid__cell"> @if (!string.IsNullOrEmpty(searchQuery)) { <div class="u-pull--left"> <span>@Translate("SearchTotalText") @GetString("Ecom:ProductList.PageProdCnt") @Translate("Results")</span> </div> } @if (!isFavoriteList) { <div class="collection sort-collection float-left float-lg-right pr-0 p-lg-0 u-pull--right u-no-margin"> @if (!hideSorting) { <p class="sort-collection__header u-inline-block u-margin-right">@Translate("Sort by")</p> <input type="checkbox" id="ProductSort" class="dropdown-trigger" /> <div class="dropdown u-margin-right u-inline-block dw-mod"> <label class="dropdown__header dropdown__btn dropdown__btn--small dw-mod" for="ProductSort">{{selectedSort}}</label> <div class="dropdown__content dw-mod"> <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl')">@Translate("Default")</div> <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl&Products&SortBy=Created&SortOrder=DESC')">@Translate("Newest")</div> <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl&Products&SortBy=Video&SortOrder=DESC')">@Translate("Variants")</div> <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl&Products&SortBy=@mostPopularProducts&SortOrder=DESC')">@Translate("Most bought products")</div> </div> <label class="dropdown-trigger-off" for="ProductSort"></label> </div> } @if (listViewsCount > 1) { if (Converter.ToBoolean(Pageview.Area.Item["ProductItemContainer"])) { <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductItemContainer')"><i class="fa fa-th-list"></i></button> } if (Converter.ToBoolean(Pageview.Area.Item["ProductGridItemContainer"])) { <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductGridItemContainer')"><i class="fa fa-th"></i></button> } if (Converter.ToBoolean(Pageview.Area.Item["ProductDetailsItemContainer"])) { <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductDetailsItemContainer')"><i class="fa fa-list"></i></button> } } @if (isFavoriteList) { <div class="u-pull--right"> <button type="submit" class="btn btn--primary btn--sm dw-mod">@Translate("Buy all")</button> </div> } </div> } <div class="grid"> <div class="grid__col-12 mt-6 grid__col--bleed-y"> <div class="collection u-no-margin" id="selectedFacets"> @{ bool dimension1Selected = !string.IsNullOrEmpty(Dynamicweb.Input.Request("dimensionminimum1")) || !string.IsNullOrEmpty(Dynamicweb.Input.Request("dimensionmaximum1")); bool dimension2Selected = !string.IsNullOrEmpty(Dynamicweb.Input.Request("dimensionminimum2")) || !string.IsNullOrEmpty(Dynamicweb.Input.Request("dimensionmaximum2")); } @if (dimension1Selected) { <button type="button" class="btn btn--tag js-custom-facet-clear" data-check="checked" value="Dimension 1" title="@Translate("Remove filter")"> Dimension 1 <i class="icon icon-nz-close"></i> </button> } @if (dimension2Selected) { <button type="button" class="btn btn--tag js-custom-facet-clear" data-check="checked" value="Dimension 2" title="@Translate("Remove filter")"> Dimension 2 <i class="icon icon-nz-close"></i> </button> } {{#FacetSelections}} {{#ifCond template "===" "SelectedFilter"}} {{>SelectedFilter}} {{/ifCond}} {{#ifCond template "===" "SelectedColorFilter"}} {{>SelectedColorFilter}} {{/ifCond}} {{#ifCond template "===" "ResetFilters"}} {{>ResetFilters}} {{/ifCond}} {{/FacetSelections}} </div> </div> </div> <div id="ProductsContainer" data-template="{{listTemplate}}" class="grid product-list dw-mod" data-save-cookie="true"> {{#ProductsContainer}} {{#ifCond template "===" "ProductItemContainer"}} {{>ProductItemContainer}} {{/ifCond}} {{#ifCond template "===" "ProductGridItemContainer"}} {{>ProductGridItemContainer}} {{/ifCond}} {{#ifCond template "===" "ProductDetailsItemContainer"}} {{>ProductDetailsItemContainer}} {{/ifCond}} {{/ProductsContainer}} </div> <div class="grid"> <div class="grid__col-12 grid__col--bleed-y"> <button type="button" id="LoadMoreButton" class="btn btn--primary m-auto {{nextdisabled}} dw-mod" data-current="{{currentPage}}" data-page-size="{{pageSize}}" data-total="{{totalPages}}" data-container="ProductsContainer" data-feed-url="@feedFullUrl&groupid=@groupID{{loadMoreFeedParams}}" onclick="LoadMore.Next(this)" {{nextdisabled}}>@Translate("Load more") @Translate("Products")</button> <button type="button" class="btn btn--clean js-scroll-btn mt-5" data-target=".js-target">@Translate("Return to top")</button> </div> @if (!string.IsNullOrWhiteSpace(categoryBottomDescription)) { <div class="grid__col-12 grid__col--bleed-y"> @categoryBottomDescription </div> } </div> </div> </div> {{else}} <div class="grid__col-12"> <p class="grid__col--bleed">@Translate("Your search gave 0 results")</p> <h2 class="h2 u-ta-center">@Translate("SearchHeadline")</h2> <p class="u-ta-center">@Translate("SearchContent")</p> </div> {{/each}} </script> @*Partial templates*@ <script id="Checkboxes" type="text/x-template"> <div class="custom-control custom-checkbox products__facet js-facets-checkbox"> <input type="checkbox" id="{{queryParameter}}-{{value}}" class="{{selected}} custom-control-input" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{selected}} {{disabled}}> <label class="custom-control-label {{disabled}}" for="{{queryParameter}}-{{value}}"></label> <span class="ml-4 d-inline-block custom-control__label">{{label}}</span> <span class="custom-control__count">({{count}})</span> </div> </script> <script id="Number" type="text/x-template"> <div class="custom-control custom-control--number products__facet"> @{ var getCurrentPageId = new Dynamicweb.Content.Page(); var getFriendlyUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(getCurrentPageId.ParentPageId); string producturl = getFriendlyUrl.ToString(); } <form id="{{queryParameter}}" class="js-custom-facet-number" action="@producturl" method="GET"> <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon js-custom-facet-number-submit"></i> <input type="text" class="custom-control__number js-custom-facet-number-input" name="{{queryParameter}}" placeholder="" /> </form> </div> </script> <script id="Range" type="text/x-template"> <div class="custom-control--range products__facet"> <input type="text" class="js-range-slider" name="{{queryParameter}}" value="" data-type="double" {{#FacetOptions}} {{#if @@first}} data-min="{{value}}" {{/if}} {{#if @@last}} data-max="{{value}}" {{/if}} {{#if @@first}} data-from="{{value}}" {{/if}} {{#if @@last}} data-to="{{value}}" {{/if}} {{/FacetOptions}} /> </div> </script> <script id="Weight" type="text/x-template"> <div> <label class="{{disabled}}"> <input type="checkbox" class="{{selected}}" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{selected}} {{disabled}}> {{label}} {{weight}} <span class="u-color-light-gray u-pull--right">({{count}})</span> </label> </div> </script> <script id="Tags" type="text/x-template"> <button type="button" class="btn btn--tag {{selected}} {{disabled}}" data-check="{{selected}}" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{disabled}}> {{label}} <span class="facets-group__counter">({{count}})</span> </button> </script> <script id="Colors" type="text/x-template"> <button type="button" class="btn btn--colorbox u-margin-right {{selected}} {{disabled}}" style="background-color: {{value}}" title="{{label}}" data-check="{{selected}}" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{disabled}}></button> </script> <script id="SelectedFilter" type="text/x-template"> <button type="button" class="btn btn--tag" data-check="checked" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" title="@Translate("Remove filter")"> {{group}}: {{label}} <i class="icon icon-nz-close"></i> </button> </script> <script id="SelectedColorFilter" type="text/x-template"> <button type="button" class="btn btn--tag" data-check="checked" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" title="@Translate("Remove filter")"> {{group}}: <div class="btn__colorbox" style="background-color: {{label}}"></div> <i class="icon icon-nz-close"></i> </button> </script> <script id="ResetFilters" type="text/x-template"> <button type="button" class="btn btn--tag" onclick="Facets.ResetFacets(this);"> @Translate("Reset all filters") <i class="fa fa-rotate-left"></i> </button> </script> @* Product list templates *@ @* List view *@ <script id="ProductItemContainer" type="text/x-template"> {{#.}} <article id="Product{{id}}" data-template="ProductItem" data-preloader="overlay" class="product-list__item product-list-item grid__col-12"> {{#Product}} {{>ProductItem}} {{/Product}} </article> {{/.}} </script> <script id="ProductItem" type="text/x-template"> {{#.}} <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> <div class="grid product-list__list-item grid__col-12 product-list-container dw-mod"> <div class="grid__col-sm-2 grid__col-12 p-0 {{noImage}} dw-mod"> <div class="stickers-container dw-mod"> {{#Stickers}} {{>Sticker}} {{/Stickers}} </div> <div class="grid__cell product-list-img-container"> <a href="{{link}}" onclick="Scroll.SavePosition(event)"><img class="grid__cell-img b-lazy" src="/Files/Images/placeholder.gif" data-src="/Admin/Public/GetImage.ashx?width=150&amp;height=150&amp;crop=5&amp;Compression=75&amp;DoNotUpscale=true&amp;FillCanvas=true&amp;image={{image}}" alt="{{name}}" /></a> </div> </div> <div data-preview="@onlyPreview" class="grid__col-12 grid__col-sm-3 pb-0 pb-lg-4"> <a class="" href="{{link}}"> <div class="item-number dw-mod">@Translate("Product number") {{number}}</div> <h3 class="product-list-item__name font-weight-light u-no-margin">{{name}}</h3> <div class="product-list-item__description u-no-margin">{{{description}}}</div> {{#if stockText}} <div class="product-list-item__stock"> <div class="stock-icon ml-0 {{stockState}}"></div> <span>{{stockText}}</span> </div> {{/if}} <span class="product-card__quantity-alert js-product-quantity-error-{{productId}} ">@Translate("Max stock level is reached")</span> </a> </div> @if (User.IsExtranetUserLoggedIn()) { <div class="grid__col-12 grid__col-sm-3 product-list-item__center-text"> @* {{#Discount}} <div class="price dw-mod">{{this.discountPrice}}</div> {{/Discount}} *@ {{#each Discount}} {{#if @@first}} <div class="grid__cell"> @Translate("ItemText") {{this.discountQuantity}} @Translate("UnitPriceTextStk") </div> <div class="{{onSale}} dw-mod"> {{this.unitPrice}} </div> {{/if}} {{/each}} <div class="product-list__list-item__price-actions dw-mod"> <div class="before-price {{onSale}} dw-mod">{{discount}}</div> </div> @* IF SENTENCE FROM DISCOUNT LIST IN JSON FEED FILE (NZPRODUTLISTFEED.CSHTML) *@ {{#if Discount.[1].discountPrice}} <div class="js-popup popup_productsrender_container"> <a class="js-popup-trigger">@Translate("DiscountText")</a> <div class="js-popup-modal popup_productsrender_modal"> <div class="js-popout-close nz-icon icon-nz-close-circled"></div> <ul class="grid__col-12 pt-5 p-0 d-flex flex-row flex-wrap"> @* FOREACH DISCOUNT LOOP FROM JSON FEED *@ {{#each Discount}} {{#unless @@first}} <li class="grid__col-lg-6 p-0 mb-0 grid__col-12 align-items-center align-items-xl-start">@Translate("UnitPriceText") {{this.discountQuantity}} @Translate("UnitPriceTextStk")</li> <li class="grid__col-lg-6 p-0 pb-3 grid__col-12 align-items-center align-items-xl-end">{{this.discountPrice}}</li> {{/unless}} {{/each}} </ul> </div> </div> {{/if}} </div> @* Combinations div needed to handle variant options(used in script block with Variants.SetVariantOptionStatesForProductList function) and should not be deleted *@ <div id="Combinations" data-product-id="{{productId}}" data-id="{{id}}" class="js-variants-wrap u-hidden"> {{#VariantStockCombination}} {{>VariantStockCombination}} {{/VariantStockCombination}} </div> <div id="Variants{{id}}" data-template="VariantsTemplate" data-product-id="{{productId}}"> {{#Variants}} {{>VariantsTemplate}} {{/Variants}} </div> <small id="helpText_{{id}}" class="help-text {{hideViewMore}} {{hideHelpText}}">@Translate("Please select variant!")</small> <div class="grid__col-12 grid__col-sm-4 pb-0 pb-lg-4 d-inline-block text-right"> <div class="d-inline-block product-card__quantity-container"> <div class="product-card__quantity product-card__quantity--list"> <span class="product-card__quantity-add js-product-quantity-add" data-icon-nz="chevron-up"></span> <input class="product-card__quantity-input pointer-events js-quantity-input text-center" id="Quantity_{{productId}}" name="Quantity{{productId}}" type="number" data-id="{{productId}}" value="1" min="1" max="{{stock}}"> <span class="product-card__quantity-subtract js-product-quantity-subtract" data-icon-nz="chevron-down"></span> </div> </div> <div class="product-list__button-container d-inline-block"> {{#ifCond Discount.[0].discount ">" 0 }} <button type="button" id="CartButton_{{productId}}" class="btn btn--primary w-100 btn--condensed dw-mod {{hasVariants}} btn-search-addtocart" name="submit" onclick="Cart.AddToCart(event, '{{productId}}', document.getElementById('Quantity_{{productId}}').value, 'Unit_{{productId}}', 'Variant_{{productId}}');" {{hasVariants}}><span> @Translate("Add to cart")</span></button> {{/ifCond}} {{#ifCond Discount "===" "" }} <div class="cfp-btn-container pt-4 pt-lg-0"> <button type="button" id="CartButton_{{Id}}" class="btn btn-primary dw-mod js-scroll-btn d-inline-block px-5" name="submit" data-target=".js-target">@Translate("CallForPrice")</button> </div> {{/ifCond}} <input type="checkbox" id="UnitOptions_{{productId}}" class="dropdown-trigger" /> <div class="dropdown u-w110px u-w100px--xs {{hasUnits}} dw-mod"> <label class="dropdown__header dropdown__btn dw-mod" for="UnitOptions_{{productId}}">{{unitName}}</label> <div id="unitOptions" class="dropdown__content dw-mod"> {{#unitOptions}} {{>UnitOption}} {{/unitOptions}} </div> <label class="dropdown-trigger-off" for="UnitOptions_{{productId}}"></label> </div> <input type="hidden" value="{{unitId}}" name="Unit{{productId}}" id="Unit_{{productId}}" /> @if (!isFavoriteList) { <div class="favorites w-100 {{hasVariants}} dw-mod" {{hasVariants}}> {{#Favorite}} {{>FavoriteTemplate}} {{/Favorite}} </div> } @if (isFavoriteList) { <div class="favorites w-100 {{hasVariants}} dw-mod" {{hasVariants}}> {{#Favorite}} {{>FavoriteTemplate}} {{/Favorite}} </div> } </div> </div> } else { <div class="grid__col-12 grid__col-sm-6 align-items-center align-items-lg-end"> <div class="grid__cell"> <div class="grid__col-12 pb-0"> <h5>@Translate("LoginText")</h5> </div> <div class="grid__col-12 pb-0"> <label for="SignInModalTrigger" class="btn btn--primary u-no-margin sign-in-modal-trigger-button dw-mod" onclick="setTimeout(function () { document.getElementById('LoginUsername').focus() }, 10)">@Translate("Sign in")</label> </div> </div> </div> } </div> {{/.}} </script> @* Grid view *@ <script id="ProductGridItemContainer" type="text/x-template"> {{#.}} <div id="Product{{id}}" data-template="ProductGridItem" data-preloader="overlay" class="grid__col-lg-4 grid__col-md-4 grid__col-sm-4 grid__col-xs-6 product-list__list-item dw-mod"> <div class="product-list__inner"> {{#Product}} {{>ProductGridItem}} {{/Product}} </div> </div> {{/.}} </script> <script id="ProductGridItem" type="text/x-template"> {{#.}} <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> <div class="grid__cell product-list__grid-item__image dw-mod {{noImage}}"> <div class="stickers-container dw-mod"> {{#Stickers}} {{>Sticker}} {{/Stickers}} </div> <a href="{{link}}" onclick="Scroll.SavePosition(event)"> <img class="grid__cell-img u-padding b-lazy" src="/Files/Images/placeholder.gif" data-src="/Admin/Public/GetImage.ashx?width=150&amp;height=150&amp;crop=5&amp;Compression=75&amp;DoNotUpscale=true&amp;image={{image}}" alt="{{name}}" /> </a> <div class="favorites favorites--for-grid-view u-pull--right {{hasVariants}} dw-mod" {{hasVariants}}> {{#Favorite}} {{>FavoriteTemplate}} {{/Favorite}} </div> </div> <div class="grid__cell product-list__grid-item__price-info {{shortGridInfo}} dw-mod"> <a href="{{link}}" onclick="Scroll.SavePosition(event)" title="{{name}}"> <div class="item-number dw-mod">@Translate("Product number") {{number}}</div> <h6 class="u-condensed-text">{{name}}</h6> </a> @if (!onlyPreview) { <div class="before-price {{onSale}} dw-mod">{{discount}}</div> } <input type="hidden" id="Quantity_{{id}}" name="Quantity{{id}}" value="1" min="1"> <input type="hidden" value="{{unitId}}" name="Unit{{id}}" id="Unit_{{id}}" /> <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> </div> <div class="product-list__grid-item__footer dw-mod"> <div class="u-ta-center"> <a href="{{link}}" id="CartButton_{{id}}" class="btn btn--secondary btn--full u-no-margin dw-mod">@Translate("View")</a> </div> </div> {{/.}} </script> @* Details view *@ <script id="ProductDetailsItemContainer" type="text/x-template"> {{#.}} <div id="Product{{id}}" data-template="ProductDetailsItem" data-preloader="overlay" class="grid__col-md-12 product-list__details-item dw-mod" style="z-index: {{zIndex}}"> {{#Product}} {{>ProductDetailsItem}} {{/Product}} </div> {{/.}} </script> <script id="ProductDetailsItem" type="text/x-template"> {{#.}} <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> <div class="grid__cell"> <div class="product-list__details-item__left dw-mod"> <div class="lightbox u-hidden-xxs"> <a href="{{link}}" onclick="Scroll.SavePosition(event)"> <img class="lightbox__image {{noImage}}" src="/Admin/Public/GetImage.ashx?width=220&amp;height=220&amp;crop=5&amp;Compression=75&amp;image={{image}}" alt="{{name}}" /> <div class="u-margin-right {{noImage}}"> <img src="/Admin/Public/GetImage.ashx?width=40&amp;height=35&amp;crop=5&FillCanvas=true&amp;Compression=75&amp;image={{image}}" alt="{{name}}" /> </div> </a> </div> <div class="u-margin-right"> <a href="{{link}}" onclick="Scroll.SavePosition(event)" title="{{name}}"><h6 class="u-no-margin">{{name}}</h6></a> <div class="item-number item-number--compressed dw-mod"> {{number}} @if (!onlyPreview) { <span> <span class="stock-icon {{stockState}} dw-mod" title="{{stockText}}"></span> {{stockText}}{{deliveryText}} </span> } </div> </div> </div> <div class="product-list__details-item__right dw-mod"> @if (!onlyPreview) { <div class="grid__cell u-hidden-sm u-hidden-md u-hidden-lg"> <div class="u-full-width u-ta-right"> <div class="before-price {{onSale}} dw-mod">{{discount}}</div> <div class="price price--condensed dw-mod">{{price}}</div> </div> </div> } <div class="grid__cell grid__cell--align-middle-right"> <div class="u-pull--right u-margin-right"> <input type="checkbox" id="UnitOptions_{{id}}" class="dropdown-trigger" /> <div class="dropdown u-w120px {{hasUnits}} dw-mod"> <label class="dropdown__header dropdown__btn dw-mod" for="UnitOptions_{{id}}">{{unitName}}</label> <div id="unitOptions" class="dropdown__content dw-mod"> {{#unitOptions}} {{>UnitOption}} {{/unitOptions}} </div> <label class="dropdown-trigger-off" for="UnitOptions_{{id}}"></label> </div> <input type="hidden" value="{{unitId}}" name="Unit{{id}}" id="Unit_{{id}}" /> <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> </div> <div class="favorites u-pull--right u-margin-right {{hasVariants}} dw-mod" {{hasVariants}}> {{#Favorite}} {{>FavoriteTemplate}} {{/Favorite}} </div> @if (!onlyPreview) { <div class="u-pull--right u-margin-right u-w100px u-ta-right u-hidden-xs u-hidden-xxs"> <div class="before-price {{onSale}} dw-mod">{{discount}}</div> <div class="price price--condensed dw-mod">{{price}}</div> </div> <div class="u-pull--right {{hideBuyOptions}}"> <input type="number" class="u-w80px u-no-margin u-margin-right" id="Quantity_{{id}}" name="Quantity{{id}}" value="1" min="1"> </div> <div class="u-pull--right {{hideBuyOptions}}"> <button type="button" id="CartButton_{{id}}" class="btn btn--primary btn--condensed u-no-margin dw-mod {{hasVariants}}" name="submit" onclick="Cart.AddToCart(event, '{{productId}}', document.getElementById('Quantity_{{id}}').value, 'Unit_{{id}}', 'Variant_{{id}}');" {{hasVariants}}><i class="fa fa-shopping-cart"></i></button> </div> } <div class="u-pull--right {{hideViewMore}}"> <a href="{{link}}" class="btn btn--secondary u-no-margin u-w130px dw-mod" onclick="Scroll.SavePosition(event)">@Translate("View")</a> </div> <div class="favorites favorites--lg u-hidden {{hasVariants}} u-hidden-xs u-hidden-xxs dw-mod" {{hasVariants}}> {{#Favorite}} {{>FavoriteListItem}} {{/Favorite}} </div> </div> </div> <div class="grid__cell-footer stickers-container stickers-container--block dw-mod"> {{#Stickers}} {{>MiniSticker}} {{/Stickers}} </div> </div> {{/.}} </script> <script id="Sticker" type="text/x-template"> <div class="stickers-container__tag {{className}} dw-mod">{{text}}</div> </script> <script id="MiniSticker" type="text/x-template"> <div class="stickers-container__tag stickers-container__tag--micro {{className}} dw-mod">{{text}}</div> </script> @* Units templates *@ <script id="UnitOption" type="text/x-template"> <div class="dropdown__item dw-mod" onclick="HandlebarsBolt.UpdateContent('Product{{id}}', '{{link}}&feed=true&UnitID={{value}}&rid={{id}}')">{{name}}</div> </script> @* Variants templates *@ <script id="VariantsTemplate" type="text/x-template"> {{#.}} <div> <div class="u-bold">{{name}}</div> <div id="VariantOptions{{id}}"> {{#VariantOptions}} {{>VariantOption}} {{/VariantOptions}} </div> </div> {{/.}} </script> <script id="VariantOption" type="text/x-template"> <button type="button" id="{{id}}{{variantId}}" data-id="{{id}}" data-variant-id="{{variantId}}" data-product-id="{{productId}}" onclick="Variants.UpdateVariants(this)" class="btn btn--tag {{disabled}} {{selected}}" data-check="{{selected}}" {{disabled}}>{{name}}</button> </script> <script id="VariantOptionImage" type="text/x-template"> <img src="/Admin/Public/GetImage.ashx?width=100&amp;height=50&amp;crop=5&amp;Compression=75&amp;image=/Images/{{image}}" title="{{name}}" id="{{productid}}{{id}}" data-variant-id="{{id}}" data-product-id="{{productid}}" onclick="Variants.UpdateVariants(this)" class="btn btn--tag {{disabled}} {{selected}}" data-check="{{selected}}" {{disabled}} /> </script> <script id="VariantCombinations" type="text/x-template"> </script> @* Favorites templates *@ <script id="FavoriteTemplate" type="text/x-template"> <div class="favorites-list u-ta-left w-100"> <label for="FavoriteTrigger_{{id}}" class="btn mb-0 w-100 btn-secondary"><small class="x-small">@Translate("Add to list")</small></label> <input type="checkbox" id="FavoriteTrigger_{{id}}" class="dropdown-trigger" /> <div class="dropdown dropdown--absolute-position"> <div class="dropdown__content dropdown__content--padding u-w220px dw-mod"> <ul class="list list--clean dw-mod"> {{#FavoriteLists}} {{>FavoriteListItem}} {{/FavoriteLists}} </ul> </div> <label class="dropdown-trigger-off" for="FavoriteTrigger_{{id}}"></label> </div> </div> </script> <script id="FavoriteListItem" type="text/x-template"> <li> <a href="{{link}}" class="list__link u-no-underline dw-mod"><i class="{{favoriteIcon}}"></i> {{name}}</a> </li> </script> <script> document.addEventListener("DOMContentLoaded", function (event) { Facets.Init("selectedFacets", "productList"); Variants.SetProductFeedId('@productCatalogId'); Variants.SetViewMode("productList"); document.getElementById("productList").addEventListener('contentLoaded', function (e) { //var variantsContainers = document.getElementsByClassName("js-variants-wrap"); //for (var i = 0; i < variantsContainers.length; i++) { // var variantsContainerElement = variantsContainers[i]; // Variants.SetVariantOptionStatesForProductList(variantsContainerElement); //} if (e.srcElement.classList.contains("js-variants-wrap")) { Variants.SetVariantOptionStatesForProductList(e.srcElement); } if (e.srcElement.id === "productList") { Search.Init(); } App.RangeSlider.initialize(); App.LoadMore.facets(); App.RangeSlider.customNumberInput(); }, false); }); </script> }

Tilmelding til kursus

Tilmeld dig et af vore kurser og få den nyeste viden inden for sikker håndtering af spildevand.

Kontakt os

Har du spørgsmål til vores produkter, løsninger eller services? Eller søger du hjælp til beregninger og dimensioneringer? Vi står klar til at hjælpe. Udfyld formularen herunder, og vi kontakter dig hurtigst muligt.