Produkcja z recyklatowego plastikuProdukcja z recyklatowego plastiku
Zamówienia złożone przed 14.00 wysyłamy tego samego dniaZamówienia złożone przed 14.00 wysyłamy tego samego dnia
W magazynieW magazynie
Error executing template "Designs/Rapido/eCom/Productlist/NZProductsRender.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_1c952d59605c4c339e0af7bd108f61f4.Execute() in E:\Solutions\S_DW_Lauridsen\lauridsen-live\Files\Templates\Designs\Rapido\eCom\Productlist\NZProductsRender.cshtml:line 44
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.RunCompile(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb.Core 3 @using System 4 @using System.Web 5 @using System.Linq 6 @using Dynamicweb.Ecommerce.Products 7 8 @using Dynamicweb.Security.UserManagement; 9 10 11 @{ 12 string pageUrl = GetGlobalValue("Global:Pageview.Url.Raw"); 13 14 //Favorites 15 string pageId = GetGlobalValue("Global:Page.ID"); 16 string feedFullUrl = pageUrl + "&feed=true"; 17 string requestQuery = GetGlobalValue("Global:Request.Query") + "&feed=true"; 18 string groupID = HttpContext.Current.Request.QueryString.Get("groupid"); 19 string searchQuery = HttpContext.Current.Request.QueryString.Get("Search"); 20 string productCatalogId = GetGlobalValue("Global:Page.ID"); 21 string listId = HttpContext.Current.Request.QueryString.Get("ListID"); 22 bool isFavoriteList = !String.IsNullOrEmpty(listId) ? true : false; 23 requestQuery += !isFavoriteList ? "&DoNotShowVariantsAsSingleProducts=True" : ""; 24 feedFullUrl += !isFavoriteList ? "&DoNotShowVariantsAsSingleProducts=True" : ""; 25 int mostPopularProducts = GetInteger("eCom:Related.MostPopularProducts.Count"); 26 string favoritPage = String.Format("/Default.aspx?ID={0}&CC20=CreateFormList", GetPageIdByNavigationTag("CustomerFavorites").ToString()); 27 28 29 int productsPageId = GetPageIdByNavigationTag("ProductsPage"); 30 int productsSearchFeedId = productsPageId; 31 int productGroupsPageId = GetPageIdByNavigationTag("ProductGroupsFeed"); 32 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") + ")"; 33 34 int listViewsCount = 0; 35 listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductItemContainer"]) ? 1 : 0; 36 listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductGridItemContainer"]) ? 1 : 0; 37 listViewsCount += Converter.ToBoolean(Pageview.Area.Item["ProductDetailsItemContainer"]) ? 1 : 0; 38 39 bool hideSorting = Converter.ToBoolean(Pageview.Area.Item["HideSorting"]); 40 bool onlyPreviewForAnonymousUsers = Pageview.AreaSettings.GetBoolean("OnlyPreviewForAnonymous"); 41 bool onlyPreview = onlyPreviewForAnonymousUsers ? Pageview.User == null : false; 42 43 Dynamicweb.Ecommerce.Products.GroupService currentGroup = new Dynamicweb.Ecommerce.Products.GroupService(); 44 string categoryBottomDescription = !string.IsNullOrWhiteSpace(groupID) && currentGroup.GetGroup(groupID).ProductGroupFieldValues.Any(x => x.ProductGroupField.SystemName.Equals("categoryBottomDescription")) ? currentGroup.GetGroup(groupID).ProductGroupFieldValues.GetProductGroupFieldValue("categoryBottomDescription").Value.ToString() : ""; 45 } 46 47 @* Set product canonical URL *@ 48 @SnippetStart("canonical") 49 @{ 50 string host = GetGlobalValue("Global:Request.Host"); 51 string url = GetGlobalValue("Global:Pageview.Url"); 52 int queryIndex = url.IndexOf("?", StringComparison.Ordinal); 53 if (queryIndex > -1) 54 { 55 url = url.Substring(0, queryIndex); 56 } 57 } 58 <link rel="canonical" href="https://@host@url"> 59 @SnippetEnd("canonical") 60 61 @if (GetGlobalValue("Global:Pageview.Url").Split('/').Count() > 3 || !string.IsNullOrEmpty(searchQuery)) 62 { 63 if (!string.IsNullOrEmpty(searchQuery)) 64 { 65 <section class="mt-5 grid__col--bleed-y"> 66 <h1 class="h2">@Translate("Search result for"): @searchQuery</h1> 67 </section> 68 69 <div class="grid__cell grid__cell--align-middle-right grid__col-12"> 70 <div class="grid__col--bleed"> 71 <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"> 72 <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> 73 <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field w-100" placeholder="@searchQuery" value="@searchQuery"> 74 <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> 75 <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon"></i> 76 </div> 77 </div> 78 </div> 79 } 80 81 <div name="multiForm" id="multiForm" method="post"> 82 <input type="hidden" name="CartCmd" id="CartCmd" value="addMulti" /> 83 <div class="paragraph-container mt-5"> 84 <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> 85 </div> 86 </div> 87 88 <script id="ProductPreRenderContainer" type="text/x-template"> 89 <div class="grid__col-12"> 90 <div class="pre-render-element pre-render-element--xxs"></div> 91 </div> 92 <div class="grid__col-12"> 93 <div class="pre-render-element pre-render-element--xs"></div> 94 </div> 95 96 @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "left" && Pageview.Device.ToString() != "Mobile") 97 { 98 <div class="grid__col-3"> 99 <div class="pre-render-element pre-render-element--xs"></div> 100 <div class="pre-render-element pre-render-element--md"></div> 101 <div class="pre-render-element pre-render-element--md"></div> 102 <div class="pre-render-element pre-render-element--md"></div> 103 </div> 104 } 105 106 <div class="grid__col-auto"> 107 <div class="pre-render-element pre-render-element--xs"></div> 108 <div class="pre-render-element pre-render-element--lg"></div> 109 <div class="pre-render-element pre-render-element--lg"></div> 110 <div class="pre-render-element pre-render-element--lg"></div> 111 <div class="pre-render-element pre-render-element--lg"></div> 112 </div> 113 </script> 114 115 <script id="ProductContainer" type="text/x-template"> 116 {{#each .}} 117 @if (!isFavoriteList) 118 { 119 switch (Pageview.Area.Item["PromotionBlockDesign"].ToString()) 120 { 121 case "OnlyText": 122 break; 123 case "TextAndImage": 124 break; 125 case "Banner": 126 <text> 127 {{#ifCond groupPromotionImage "!==" ""}} 128 <article class="grid__col-12 u-margin-bottom"> 129 <div class="u-color-light grid center-container center-container--with-background-image u-padding" style="background-image:url('{{groupPromotionImage}}'); background-size: cover;"> 130 <div class="grid__col-12 u-middle"> 131 <div class="grid__cell"> 132 {{{groupDescription}}} 133 </div> 134 </div> 135 </div> 136 </article> 137 {{/ifCond}} 138 </text> 139 break; 140 } 141 } 142 143 @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "top" || Pageview.Device.ToString() == "Mobile") 144 { 145 <div class="grid__col-12 grid__col--bleed-x"> 146 <input type="checkbox" id="CheckFacetGroups" class="facets-container-trigger" /> 147 148 149 150 <div class="grid facets-container dw-mod"> 151 152 <div class="grid__col-xs-12 grid__col--bleed-y js-facets-group"> 153 <div class="facets-group__name">@Translate("Dimension1", "Dimension 1")</div> 154 <div class="js-facets-container"> 155 <div class="custom-control custom-control--number products__facet"> 156 <form id="dimension1" class="js-custom-facet-number facet-min-max" action="" method="GET"> 157 <input type="number" class="js-custom-facet-number-input w-100" name="dimension1" value="@Dynamicweb.Context.Current.Request.QueryString.Get("dimension1")" placeholder="Dimension 1"> 158 <i class="search-icon fa fa-search facet-min-max__submit"></i> 159 </form> 160 </div> 161 </div> 162 </div> 163 164 <div class="grid__col-xs-12 grid__col--bleed-y js-facets-group"> 165 <div class="facets-group__name">@Translate("Dimension2", "Dimension 2")</div> 166 <div class="js-facets-container"> 167 <div class="custom-control custom-control--number products__facet"> 168 <form id="dimension2" class="js-custom-facet-number facet-min-max" action="" method="GET"> 169 <input type="number" class="js-custom-facet-number-input w-100" name="dimension2" value="@Dynamicweb.Context.Current.Request.QueryString.Get("dimension2")" placeholder="Dimension 2"> 170 <i class="search-icon fa fa-search facet-min-max__submit"></i> 171 </form> 172 </div> 173 </div> 174 </div> 175 176 {{#FacetGroups}} 177 <div class="grid__col-lg-3 grid__col-md-3 grid__col-sm-4 grid__col-xs-12"> 178 <input type="checkbox" id="OptionsGroup_{{counter}}" class="dropdown-trigger" /> 179 <div class="dropdown dw-mod"> 180 <label class="dropdown__header dropdown__btn dw-mod" for="OptionsGroup_{{counter}}">{{name}}</label> 181 <div id="FacetOptions" class="dropdown__content dropdown__content--padding dw-mod"> 182 183 {{#ifCond template "===" "Number"}} 184 {{>Number}} 185 {{/ifCond}} 186 187 {{#ifCond template "===" "Range"}} 188 {{>Range}} 189 {{/ifCond}} 190 191 {{#FacetOptions}} 192 {{#ifCond template "===" "Checkboxes"}} 193 {{>Checkboxes}} 194 {{/ifCond}} 195 {{#ifCond template "===" "Weight"}} 196 {{>Weight}} 197 {{/ifCond}} 198 {{#ifCond template "===" "Tags"}} 199 {{>Tags}} 200 {{/ifCond}} 201 {{#ifCond template "===" "Colors"}} 202 {{>Colors}} 203 {{/ifCond}} 204 {{/FacetOptions}} 205 </div> 206 <label class="dropdown-trigger-off" for="OptionsGroup_{{counter}}"></label> 207 </div> 208 </div> 209 {{/FacetGroups}} 210 </div> 211 <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> 212 <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> 213 </div> 214 } 215 216 217 @if (Pageview.Area.Item["EcommerceFacetsViewMode"].ToString() == "left" && Pageview.Device.ToString() != "Mobile" && string.IsNullOrEmpty(searchQuery) && !isFavoriteList) 218 { 219 220 @*Code break - Filter*@ 221 222 <div class="grid__col-12 grid__col-md-3 filter-container"> 223 <div class="u-hidden-sm"> 224 <div class="grid__col-sm-12 grid__col--bleed pb-lg-5 p-0"> 225 <div class="filter-container__search typeahead u-color-inherit js-typeahead" data-page-size="10" id="TopProductSearch" data-search-feed-id="@productsSearchFeedId&feed=true&groupid=@groupID" data-result-page-id="@productsPageId" data-groups-page-id="@productGroupsPageId"> 226 <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> 227 <input type="text" class="typeahead-search-field u-no-margin js-typeahead-search-field w-100" placeholder="@Translate("Search")" value="@searchQuery"> 228 <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> 229 <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon"></i> 230 </div> 231 </div> 232 </div> 233 <input type="checkbox" id="CheckFacetGroups" class="facets-container-trigger" /> 234 <div class="facets-container dw-mod"> 235 236 <form class="facets-group js-facets-group js-custom-facet-number"> 237 <div class="facets-group__name">@Translate("Dimension1"," Dimension 1")</div> 238 <div class="js-facets-container"> 239 <div class="custom-control custom-control--number products__facet"> 240 <input type="number" class="js-custom-facet-number-input w-100" name="dimension1" value="@Dynamicweb.Context.Current.Request.QueryString.Get("dimension1")" placeholder="Dimension 1"> 241 <i class="search-icon fa fa-search facet-min-max__submit"></i> 242 </div> 243 </div> 244 <div class="facets-group__name">@Translate("Dimension2", "Dimension 2")</div> 245 <div class="js-facets-container"> 246 <div class="custom-control custom-control--number products__facet"> 247 <input type="number" class="js-custom-facet-number-input w-100" name="dimension2" value="@Dynamicweb.Context.Current.Request.QueryString.Get("dimension2")" placeholder="Dimension 2"> 248 <i class="search-icon fa fa-search facet-min-max__submit"></i> 249 </div> 250 </div> 251 </form> 252 253 {{#FacetGroups}} 254 <div class="facets-group js-facets-group"> 255 <div class="facets-group__name">{{name}}</div> 256 <div class="js-facets-container"> 257 258 {{#ifCond template "===" "Number"}} 259 {{>Number}} 260 {{/ifCond}} 261 262 {{#ifCond template "===" "Range"}} 263 {{>Range}} 264 {{/ifCond}} 265 266 {{#FacetOptions}} 267 {{#ifCond template "===" "Checkboxes"}} 268 {{>Checkboxes}} 269 {{/ifCond}} 270 {{#ifCond template "===" "Weight"}} 271 {{>Weight}} 272 {{/ifCond}} 273 {{#ifCond template "===" "Tags"}} 274 {{>Tags}} 275 {{/ifCond}} 276 {{#ifCond template "===" "Colors"}} 277 {{>Colors}} 278 {{/ifCond}} 279 {{/FacetOptions}} 280 </div> 281 282 <div class="js-facets-trigger"> 283 <span class="js-facets-more">@Translate("See more")</span> 284 <span class="js-facets-less">@Translate("See less")</span> 285 </div> 286 287 </div> 288 289 {{/FacetGroups}} 290 291 </div> 292 <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector more">@Translate("Select filters")</label> 293 <label for="CheckFacetGroups" class="btn btn--primary btn--full dw-mod facet-selector less">@Translate("Close filters")</label> 294 </div> 295 296 } 297 298 <div class="@(!string.IsNullOrEmpty(searchQuery) || isFavoriteList ? "grid__col-12 grid__col--bleed-x" : "grid__col-12 grid__col-md-9") pt-3"> 299 <div class="grid__cell"> 300 @if (!string.IsNullOrEmpty(searchQuery)) 301 { 302 <div class="u-pull--left"> 303 <span>@Translate("SearchTotalText") @GetString("Ecom:ProductList.PageProdCnt") @Translate("Results")</span> 304 </div> 305 } 306 307 @if (!isFavoriteList) 308 { 309 <div class="collection sort-collection float-left float-lg-right pr-0 p-lg-0 u-pull--right u-no-margin"> 310 @if (!hideSorting) 311 { 312 <p class="sort-collection__header u-inline-block u-margin-right">@Translate("Sort by")</p> 313 <input type="checkbox" id="ProductSort" class="dropdown-trigger" /> 314 <div class="dropdown u-margin-right u-inline-block dw-mod"> 315 <label class="dropdown__header dropdown__btn dropdown__btn--small dw-mod" for="ProductSort">{{selectedSort}}</label> 316 <div class="dropdown__content dw-mod"> 317 <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl')">@Translate("Default")</div> 318 <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl&Products&SortBy=Created&SortOrder=DESC')">@Translate("Newest")</div> 319 <div class="dropdown__item" onclick="HandlebarsBolt.UpdateContent('productList', '@feedFullUrl&Products&SortBy=@mostPopularProducts&SortOrder=DESC')">@Translate("Most bought products")</div> 320 </div> 321 <label class="dropdown-trigger-off" for="ProductSort"></label> 322 </div> 323 } 324 325 @if (listViewsCount > 1) 326 { 327 if (Converter.ToBoolean(Pageview.Area.Item["ProductItemContainer"])) 328 { 329 <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductItemContainer')"><i class="fa fa-th-list"></i></button> 330 } 331 332 if (Converter.ToBoolean(Pageview.Area.Item["ProductGridItemContainer"])) 333 { 334 <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductGridItemContainer')"><i class="fa fa-th"></i></button> 335 } 336 337 if (Converter.ToBoolean(Pageview.Area.Item["ProductDetailsItemContainer"])) 338 { 339 <button type="button" class="btn btn--tag btn--sm" onclick="HandlebarsBolt.UpdateTemplate('ProductsContainer', 'ProductDetailsItemContainer')"><i class="fa fa-list"></i></button> 340 } 341 } 342 343 @if (isFavoriteList) 344 { 345 <div class="u-pull--right"> 346 <button type="submit" class="btn btn--primary btn--sm dw-mod">@Translate("Buy all")</button> 347 </div> 348 } 349 350 </div> 351 } 352 353 <div class="grid"> 354 <div class="grid__col-12 mt-6 grid__col--bleed-y"> 355 <div class="collection u-no-margin" id="selectedFacets"> 356 @{ 357 bool dimension1Selected = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("dimensionminimum1")) || !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("dimensionmaximum1")); 358 bool dimension2Selected = !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("dimensionminimum2")) || !string.IsNullOrEmpty(Dynamicweb.Context.Current.Request.QueryString.Get("dimensionmaximum2")); 359 } 360 @if (dimension1Selected) 361 { 362 <button type="button" class="btn btn--tag js-custom-facet-clear" data-check="checked" value="Dimension 1" title="@Translate("Remove filter")"> 363 Dimension 1 <i class="icon icon-nz-close"></i> 364 </button> 365 } 366 @if (dimension2Selected) 367 { 368 <button type="button" class="btn btn--tag js-custom-facet-clear" data-check="checked" value="Dimension 2" title="@Translate("Remove filter")"> 369 Dimension 2 <i class="icon icon-nz-close"></i> 370 </button> 371 } 372 {{#FacetSelections}} 373 {{#ifCond template "===" "SelectedFilter"}} 374 {{>SelectedFilter}} 375 {{/ifCond}} 376 {{#ifCond template "===" "SelectedColorFilter"}} 377 {{>SelectedColorFilter}} 378 {{/ifCond}} 379 {{#ifCond template "===" "ResetFilters"}} 380 {{>ResetFilters}} 381 {{/ifCond}} 382 {{/FacetSelections}} 383 </div> 384 </div> 385 </div> 386 387 <div id="ProductsContainer" data-template="{{listTemplate}}" class="grid product-list dw-mod" data-save-cookie="true"> 388 {{#ProductsContainer}} 389 {{#ifCond template "===" "ProductItemContainer"}} 390 {{>ProductItemContainer}} 391 {{/ifCond}} 392 {{#ifCond template "===" "ProductGridItemContainer"}} 393 {{>ProductGridItemContainer}} 394 {{/ifCond}} 395 {{#ifCond template "===" "ProductDetailsItemContainer"}} 396 {{>ProductDetailsItemContainer}} 397 {{/ifCond}} 398 {{/ProductsContainer}} 399 </div> 400 401 <div class="grid"> 402 <div class="grid__col-12 grid__col--bleed-y"> 403 <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> 404 <button type="button" class="btn btn--clean js-scroll-btn mt-5" data-target=".js-target">@Translate("Return to top")</button> 405 </div> 406 @if (!string.IsNullOrWhiteSpace(categoryBottomDescription)) 407 { 408 <div class="grid__col-12 grid__col--bleed-y"> 409 @categoryBottomDescription 410 </div> 411 } 412 </div> 413 </div> 414 </div> 415 416 {{else}} 417 <div class="grid__col-12"> 418 <p class="grid__col--bleed">@Translate("Your search gave 0 results")</p> 419 <h2 class="h2 u-ta-center">@Translate("SearchHeadline")</h2> 420 <p class="u-ta-center">@Translate("SearchContent")</p> 421 </div> 422 {{/each}} 423 </script> 424 425 @*Partial templates*@ 426 <script id="Checkboxes" type="text/x-template"> 427 <div class="custom-control custom-checkbox products__facet js-facets-checkbox"> 428 <input type="checkbox" id="{{queryParameter}}-{{value}}" class="{{selected}} custom-control-input" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{selected}} {{disabled}}> 429 <label class="custom-control-label {{disabled}}" for="{{queryParameter}}-{{value}}"></label> 430 <span class="ml-4 d-inline-block custom-control__label">{{label}}</span> 431 <span class="custom-control__count">({{count}})</span> 432 </div> 433 </script> 434 435 <script id="Number" type="text/x-template"> 436 <div class="custom-control custom-control--number products__facet"> 437 438 @{ 439 var getCurrentPageId = new Dynamicweb.Content.Page(); 440 var getFriendlyUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl(getCurrentPageId.ParentPageId); 441 string producturl = getFriendlyUrl.ToString(); 442 } 443 444 <form id="{{queryParameter}}" class="js-custom-facet-number" action="@producturl" method="GET"> 445 <i class="u-no-margin dw-mod js-typeahead-enter-btn fa fa-search search-icon js-custom-facet-number-submit"></i> 446 <input type="text" class="custom-control__number js-custom-facet-number-input" name="{{queryParameter}}" placeholder="" /> 447 </form> 448 449 </div> 450 </script> 451 452 <script id="Range" type="text/x-template"> 453 <div class="custom-control--range products__facet"> 454 <input type="text" class="js-range-slider" name="{{queryParameter}}" value="" 455 data-type="double" 456 {{#FacetOptions}} 457 {{#if @@first}} 458 data-min="{{value}}" 459 {{/if}} 460 {{#if @@last}} 461 data-max="{{value}}" 462 {{/if}} 463 {{#if @@first}} 464 data-from="{{value}}" 465 {{/if}} 466 {{#if @@last}} 467 data-to="{{value}}" 468 {{/if}} 469 {{/FacetOptions}} /> 470 </div> 471 </script> 472 473 <script id="Weight" type="text/x-template"> 474 <div> 475 <label class="{{disabled}}"> 476 <input type="checkbox" class="{{selected}}" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{selected}} {{disabled}}> 477 {{label}} {{weight}} <span class="u-color-light-gray u-pull--right">({{count}})</span> 478 </label> 479 </div> 480 </script> 481 482 <script id="Tags" type="text/x-template"> 483 <button type="button" class="btn btn--tag {{selected}} {{disabled}}" data-check="{{selected}}" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" {{disabled}}> 484 {{label}} <span class="facets-group__counter">({{count}})</span> 485 </button> 486 </script> 487 488 <script id="Colors" type="text/x-template"> 489 <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> 490 </script> 491 492 <script id="SelectedFilter" type="text/x-template"> 493 <button type="button" class="btn btn--tag" data-check="checked" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" title="@Translate("Remove filter")"> 494 {{group}}: {{label}} <i class="icon icon-nz-close"></i> 495 </button> 496 </script> 497 498 <script id="SelectedColorFilter" type="text/x-template"> 499 <button type="button" class="btn btn--tag" data-check="checked" onclick="Facets.UpdateFacets(this);" name="{{queryParameter}}" value="{{value}}" title="@Translate("Remove filter")"> 500 {{group}}: <div class="btn__colorbox" style="background-color: {{label}}"></div> <i class="icon icon-nz-close"></i> 501 </button> 502 </script> 503 504 <script id="ResetFilters" type="text/x-template"> 505 <button type="button" class="btn btn--tag" onclick="Facets.ResetFacets(this);"> 506 @Translate("Reset all filters") <i class="fa fa-rotate-left"></i> 507 </button> 508 </script> 509 510 511 512 513 514 @* Product list templates *@ 515 516 @* List view *@ 517 518 <script id="ProductItemContainer" type="text/x-template"> 519 {{#.}} 520 <article id="Product{{id}}" data-template="ProductItem" data-preloader="overlay" class="product-list__item product-list-item grid__col-12"> 521 {{#Product}} 522 {{>ProductItem}} 523 {{/Product}} 524 </article> 525 {{/.}} 526 </script> 527 528 <script id="ProductItem" type="text/x-template"> 529 {{#.}} 530 <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> 531 <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> 532 <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> 533 {{#if variantid}} 534 {{else}} 535 <div class="grid product-list__list-item grid__col-12 product-list-container dw-mod"> 536 <div class="grid__col-sm-2 grid__col-12 p-0 {{noImage}} dw-mod"> 537 <div class="stickers-container dw-mod"> 538 {{#Stickers}} 539 {{>Sticker}} 540 {{/Stickers}} 541 </div> 542 543 <div class="grid__cell product-list-img-container"> 544 <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> 545 </div> 546 547 </div> 548 549 <div data-preview="@onlyPreview" class="grid__col-12 grid__col-sm-3 pb-0 pb-lg-4"> 550 <a class="" href="{{link}}"> 551 <div class="item-number dw-mod">@Translate("Product number") {{number}}</div> 552 <h3 class="product-list-item__name font-weight-light u-no-margin">{{name}}</h3> 553 <div class="product-list-item__description u-no-margin">{{{description}}}</div> 554 {{#if stockText}} 555 <div class="product-list-item__stock"> 556 <div class="stock-icon ml-0 {{stockState}}"></div> 557 <span>{{stockText}}</span> 558 </div> 559 {{/if}} 560 <span class="product-card__quantity-alert js-product-quantity-error-{{productId}} ">@Translate("Max stock level is reached")</span> 561 </a> 562 </div> 563 564 @if (!onlyPreview) 565 { 566 567 568 <div class="grid__col-12 grid__col-sm-3 product-list-item__center-text"> 569 @* 570 {{#Discount}} 571 <div class="price dw-mod">{{this.discountPrice}}</div> 572 {{/Discount}} 573 *@ 574 575 {{#each Discount}} 576 {{#if @@first}} 577 <div class="grid__cell"> 578 @Translate("ItemText") {{this.discountQuantity}} {{this.discountVismaUnitName}} 579 </div> 580 <div class="{{onSale}} dw-mod"> 581 {{this.unitPrice}} 582 </div> 583 {{/if}} 584 {{/each}} 585 586 <div class="product-list__list-item__price-actions dw-mod"> 587 <div class="before-price {{onSale}} dw-mod">{{discount}}</div> 588 </div> 589 590 @* IF SENTENCE FROM DISCOUNT LIST IN JSON FEED FILE (NZPRODUTLISTFEED.CSHTML) *@ 591 {{#if Discount.[1].discountFormatted}} 592 593 <div class="js-popup popup_productsrender_container"> 594 <a class="js-popup-trigger">@Translate("DiscountText")</a> 595 <div class="js-popup-modal popup_productsrender_modal"> 596 <div class="js-popout-close nz-icon icon-nz-close-circled"></div> 597 <ul class="grid__col-12 pt-5 p-0 d-flex flex-row flex-wrap"> 598 @* FOREACH DISCOUNT LOOP FROM JSON FEED *@ 599 {{#each Discount}} 600 {{#unless @@first}} 601 602 <li class="grid__col-lg-6 p-0 mb-0 grid__col-12 align-items-center align-items-xl-start">@Translate("UnitPriceText") {{this.discountQuantity}} {{this.discountVismaUnitName}}</li> 603 <li class="grid__col-lg-6 p-0 pb-3 grid__col-12 align-items-center align-items-xl-end">{{this.discountFormatted}}</li> 604 {{/unless}} 605 {{/each}} 606 607 </ul> 608 </div> 609 </div> 610 611 612 {{/if}} 613 </div> 614 615 616 @* Combinations div needed to handle variant options(used in script block with Variants.SetVariantOptionStatesForProductList function) and should not be deleted *@ 617 <div id="Combinations" data-product-id="{{productId}}" data-id="{{id}}" class="js-variants-wrap u-hidden"> 618 {{#VariantStockCombination}} 619 {{>VariantStockCombination}} 620 {{/VariantStockCombination}} 621 </div> 622 623 @*<div id="Variants{{id}}" data-template="VariantsTemplate" data-product-id="{{productId}}"> 624 {{#Variants}} 625 {{>VariantsTemplate}} 626 {{/Variants}} 627 </div> 628 629 <small id="helpText_{{id}}" class="help-text {{hideViewMore}} {{hideHelpText}}">@Translate("Please select variant!")</small> 630 *@ 631 632 <div class="grid__col-12 grid__col-sm-4 pb-0 pb-lg-4 d-inline-block text-right"> 633 <div class="d-inline-block product-card__quantity-container"> 634 635 <div class="product-card__quantity product-card__quantity--list"> 636 {{#ifCond hasVariants "!==" "disabled"}} 637 <span class="product-card__quantity-add js-product-quantity-add" data-icon-nz="chevron-up"></span> 638 <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}}"> 639 <span class="product-card__quantity-subtract js-product-quantity-subtract" data-icon-nz="chevron-down"></span> 640 {{/ifCond}} 641 </div> 642 </div> 643 <div class="product-list__button-container d-inline-block"> 644 {{#ifCond Discount.[0].discount ">" 0 }} 645 {{#ifCond hasVariants "!==" "disabled"}} 646 <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> 647 648 {{/ifCond}} 649 {{/ifCond}} 650 {{#ifCond Discount "===" "" }} 651 {{#ifCond hasVariants "!==" "disabled"}} 652 <div class="cfp-btn-container pt-4 pt-lg-0"> 653 <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> 654 </div> 655 {{/ifCond}} 656 {{/ifCond}} 657 {{#ifCond hasVariants "==" "disabled"}} 658 <a href="{{link}}" class="btn btn-secondary dw-mod js-scroll-btn d-inline-block px-5">@Translate("Select variant")</a> 659 {{/ifCond}} 660 661 <input type="checkbox" id="UnitOptions_{{productId}}" class="dropdown-trigger" /> 662 <div class="dropdown u-w110px u-w100px--xs {{hasUnits}} dw-mod"> 663 <label class="dropdown__header dropdown__btn dw-mod" for="UnitOptions_{{productId}}">{{unitName}}</label> 664 <div id="unitOptions" class="dropdown__content dw-mod"> 665 {{#unitOptions}} 666 {{>UnitOption}} 667 {{/unitOptions}} 668 </div> 669 <label class="dropdown-trigger-off" for="UnitOptions_{{productId}}"></label> 670 </div> 671 <input type="hidden" value="{{unitId}}" name="Unit{{productId}}" id="Unit_{{productId}}" /> 672 673 <div> 674 {{#ifCond hasVariants "!==" "disabled"}} 675 <div class="favorites w-100 {{hasVariants}} dw-mod" {{hasVariants}}> 676 {{#Favorite}} 677 {{>FavoriteTemplate}} 678 {{/Favorite}} 679 </div> 680 {{/ifCond}} 681 </div> 682 683 </div> 684 </div> 685 } 686 687 else 688 { 689 <div class="grid__col-12 grid__col-sm-6 align-items-center align-items-lg-end"> 690 <div class="grid__cell"> 691 <div class="grid__col-12 pb-0"> 692 <h5>@Translate("LoginText")</h5> 693 </div> 694 <div class="grid__col-12 pb-0"> 695 <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> 696 </div> 697 </div> 698 </div> 699 } 700 701 </div> 702 {{/if}} 703 {{/.}} 704 </script> 705 706 @* Grid view *@ 707 708 <script id="ProductGridItemContainer" type="text/x-template"> 709 {{#.}} 710 <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"> 711 <div class="product-list__inner"> 712 {{#Product}} 713 {{>ProductGridItem}} 714 {{/Product}} 715 </div> 716 </div> 717 {{/.}} 718 </script> 719 720 <script id="ProductGridItem" type="text/x-template"> 721 {{#.}} 722 <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> 723 <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> 724 725 <div class="grid__cell product-list__grid-item__image dw-mod {{noImage}}"> 726 <div class="stickers-container dw-mod"> 727 {{#Stickers}} 728 {{>Sticker}} 729 {{/Stickers}} 730 </div> 731 <a href="{{link}}" onclick="Scroll.SavePosition(event)"> 732 <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}}" /> 733 </a> 734 <div class="favorites favorites--for-grid-view u-pull--right {{hasVariants}} dw-mod" {{hasVariants}}> 735 {{#Favorite}} 736 {{>FavoriteTemplate}} 737 {{/Favorite}} 738 </div> 739 </div> 740 741 <div class="grid__cell product-list__grid-item__price-info {{shortGridInfo}} dw-mod"> 742 <a href="{{link}}" onclick="Scroll.SavePosition(event)" title="{{name}}"> 743 <div class="item-number dw-mod">@Translate("Product number") {{number}}</div> 744 <h6 class="u-condensed-text">{{name}}</h6> 745 </a> 746 747 @if (!onlyPreview) 748 { 749 <div class="before-price {{onSale}} dw-mod">{{discount}}</div> 750 } 751 752 <input type="hidden" id="Quantity_{{id}}" name="Quantity{{id}}" value="1" min="1"> 753 <input type="hidden" value="{{unitId}}" name="Unit{{id}}" id="Unit_{{id}}" /> 754 <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> 755 </div> 756 757 <div class="product-list__grid-item__footer dw-mod"> 758 <div class="u-ta-center"> 759 <a href="{{link}}" id="CartButton_{{id}}" class="btn btn--secondary btn--full u-no-margin dw-mod">@Translate("View")</a> 760 </div> 761 </div> 762 {{/.}} 763 </script> 764 765 @* Details view *@ 766 767 <script id="ProductDetailsItemContainer" type="text/x-template"> 768 {{#.}} 769 <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}}"> 770 {{#Product}} 771 {{>ProductDetailsItem}} 772 {{/Product}} 773 </div> 774 {{/.}} 775 </script> 776 777 <script id="ProductDetailsItem" type="text/x-template"> 778 {{#.}} 779 <input type="hidden" name="ProductLoopCounter{{id}}" value="{{id}}" /> 780 <input type="hidden" name="ProductID{{id}}" value="{{productId}}" /> 781 782 <div class="grid__cell"> 783 <div class="product-list__details-item__left dw-mod"> 784 <div class="lightbox u-hidden-xxs"> 785 <a href="{{link}}" onclick="Scroll.SavePosition(event)"> 786 <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}}" /> 787 <div class="u-margin-right {{noImage}}"> 788 <img src="/Admin/Public/GetImage.ashx?width=40&amp;height=35&amp;crop=5&FillCanvas=true&amp;Compression=75&amp;image={{image}}" alt="{{name}}" /> 789 </div> 790 </a> 791 </div> 792 793 <div class="u-margin-right"> 794 <a href="{{link}}" onclick="Scroll.SavePosition(event)" title="{{name}}"><h6 class="u-no-margin">{{name}}</h6></a> 795 <div class="item-number item-number--compressed dw-mod"> 796 {{number}} 797 @if (!onlyPreview) 798 { 799 <span> 800 <span class="stock-icon {{stockState}} dw-mod" title="{{stockText}}"></span> {{stockText}}{{deliveryText}} 801 </span> 802 } 803 </div> 804 </div> 805 </div> 806 807 <div class="product-list__details-item__right dw-mod"> 808 @if (!onlyPreview) 809 { 810 <div class="grid__cell u-hidden-sm u-hidden-md u-hidden-lg"> 811 <div class="u-full-width u-ta-right"> 812 <div class="before-price {{onSale}} dw-mod">{{discount}}</div> 813 <div class="price price--condensed dw-mod">{{price}}</div> 814 </div> 815 </div> 816 } 817 818 <div class="grid__cell grid__cell--align-middle-right"> 819 <div class="u-pull--right u-margin-right"> 820 <input type="checkbox" id="UnitOptions_{{id}}" class="dropdown-trigger" /> 821 822 <div class="dropdown u-w120px {{hasUnits}} dw-mod"> 823 <label class="dropdown__header dropdown__btn dw-mod" for="UnitOptions_{{id}}">{{unitName}}</label> 824 <div id="unitOptions" class="dropdown__content dw-mod"> 825 {{#unitOptions}} 826 {{>UnitOption}} 827 {{/unitOptions}} 828 </div> 829 <label class="dropdown-trigger-off" for="UnitOptions_{{id}}"></label> 830 </div> 831 832 <input type="hidden" value="{{unitId}}" name="Unit{{id}}" id="Unit_{{id}}" /> 833 <input type="hidden" value="{{variantid}}" name="VariantID{{id}}" id="Variant_{{id}}" /> 834 </div> 835 836 <div class="favorites u-pull--right u-margin-right {{hasVariants}} dw-mod" {{hasVariants}}> 837 {{#Favorite}} 838 {{>FavoriteTemplate}} 839 {{/Favorite}} 840 </div> 841 842 @if (!onlyPreview) 843 { 844 <div class="u-pull--right u-margin-right u-w100px u-ta-right u-hidden-xs u-hidden-xxs"> 845 <div class="before-price {{onSale}} dw-mod">{{discount}}</div> 846 <div class="price price--condensed dw-mod">{{price}}</div> 847 </div> 848 849 <div class="u-pull--right {{hideBuyOptions}}"> 850 <input type="number" class="u-w80px u-no-margin u-margin-right" id="Quantity_{{id}}" name="Quantity{{id}}" value="1" min="1"> 851 </div> 852 853 <div class="u-pull--right {{hideBuyOptions}}"> 854 <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> 855 </div> 856 857 } 858 859 <div class="u-pull--right {{hideViewMore}}"> 860 <a href="{{link}}" class="btn btn--secondary u-no-margin u-w130px dw-mod" onclick="Scroll.SavePosition(event)">@Translate("View")</a> 861 </div> 862 863 <div class="favorites favorites--lg u-hidden {{hasVariants}} u-hidden-xs u-hidden-xxs dw-mod" {{hasVariants}}> 864 {{#Favorite}} 865 {{>FavoriteListItem}} 866 {{/Favorite}} 867 </div> 868 869 </div> 870 </div> 871 <div class="grid__cell-footer stickers-container stickers-container--block dw-mod"> 872 {{#Stickers}} 873 {{>MiniSticker}} 874 {{/Stickers}} 875 </div> 876 </div> 877 {{/.}} 878 </script> 879 880 <script id="Sticker" type="text/x-template"> 881 <div class="stickers-container__tag {{className}} dw-mod">{{text}}</div> 882 </script> 883 884 <script id="MiniSticker" type="text/x-template"> 885 <div class="stickers-container__tag stickers-container__tag--micro {{className}} dw-mod">{{text}}</div> 886 </script> 887 888 @* Units templates *@ 889 890 <script id="UnitOption" type="text/x-template"> 891 <div class="dropdown__item dw-mod" onclick="HandlebarsBolt.UpdateContent('Product{{id}}', '{{link}}&feed=true&UnitID={{value}}&rid={{id}}')">{{name}}</div> 892 </script> 893 894 @* Variants templates *@ 895 896 <script id="VariantsTemplate" type="text/x-template"> 897 {{#.}} 898 <div> 899 <div class="u-bold">{{name}}</div> 900 <div id="VariantOptions{{id}}"> 901 {{#VariantOptions}} 902 {{>VariantOption}} 903 {{/VariantOptions}} 904 </div> 905 </div> 906 {{/.}} 907 </script> 908 909 <script id="VariantOption" type="text/x-template"> 910 <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> 911 </script> 912 913 <script id="VariantOptionImage" type="text/x-template"> 914 <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}} /> 915 </script> 916 917 <script id="VariantCombinations" type="text/x-template"> 918 </script> 919 920 @* Favorites templates *@ 921 922 923 <script id="FavoriteTemplate" type="text/x-template"> 924 <div class="favorites-list u-ta-left w-100"> 925 <label for="FavoriteTrigger_{{id}}" class="btn mb-0 w-100 btn-secondary"><small class="x-small">@Translate("Add to list")</small></label> 926 <input type="checkbox" id="FavoriteTrigger_{{id}}" class="dropdown-trigger" /> 927 928 <div class="dropdown dropdown--absolute-position"> 929 <div class="dropdown__content dropdown__content--padding u-w220px dw-mod"> 930 <ul class="list list--clean dw-mod"> 931 {{#FavoriteLists}} 932 {{>FavoriteListItem}} 933 {{/FavoriteLists}} 934 </ul> 935 </div> 936 <label class="dropdown-trigger-off" for="FavoriteTrigger_{{id}}"></label> 937 </div> 938 939 </div> 940 </script> 941 942 <script id="FavoriteListItem" type="text/x-template"> 943 <li> 944 <a href="{{link}}" class="list__link u-no-underline dw-mod"><i class="{{favoriteIcon}}"></i> {{name}}</a> 945 </li> 946 </script> 947 948 <script> 949 document.addEventListener("DOMContentLoaded", function (event) { 950 Facets.Init("selectedFacets", "productList"); 951 952 Variants.SetProductFeedId('@productCatalogId'); 953 Variants.SetViewMode("productList"); 954 955 document.getElementById("productList").addEventListener('contentLoaded', function (e) { 956 //var variantsContainers = document.getElementsByClassName("js-variants-wrap"); 957 958 //for (var i = 0; i < variantsContainers.length; i++) { 959 // var variantsContainerElement = variantsContainers[i]; 960 // Variants.SetVariantOptionStatesForProductList(variantsContainerElement); 961 //} 962 963 if (e.srcElement.classList.contains("js-variants-wrap")) { 964 Variants.SetVariantOptionStatesForProductList(e.srcElement); 965 } 966 if (e.srcElement.id === "productList") { 967 Search.Init(); 968 } 969 970 App.RangeSlider.initialize(); 971 App.LoadMore.facets(); 972 App.RangeSlider.customNumberInput(); 973 }, false); 974 975 }); 976 977 </script> 978 } 979

Skontaktuj się z nami

Czy masz pytania dotyczące naszych produktów, rozwiązań lub usług? Czy potrzebujesz pomocy z obliczeniami lub wymiarowaniem? Zapraszamy do kontaktu. Wypełnij poniższy formularz, a my skontaktujemy się z Tobą tak szybko jak to możliwe.