Nilan Comfort CT300

Här på denna sida hittar du vårt utbud av kvalitetsfilter till ditt Nilan Comfort CT300-system. Vi tillverkar och utvecklar själva våra filter i Danmark, och när du handlar hos oss handlar du direkt hos Nilans egen filterleverantör. Detta är din garanti för att det filter du får från oss är lika bra som, eller bättre än, det filter som sitter i ditt system.

Error executing template "Designs/danfilter/eCom/Productlist/espresso.cshtml"System.NullReferenceException: Object reference not set to an instance of an object.at Dynamicweb.Ecommerce.LiveIntegration.Products.PriceManager.ProcessResponse(XmlDocument response) in C:\git\danfilter.espresso4.dk\Dynamicweb.Ecommerce.LiveIntegration\Products\PriceManager.cs:line 45at Co3.Danfilter.Website.Services.ProductService.GetPrices(Product product, PriceType priceType) in C:\git\danfilter.espresso4.dk\Co3.Danfilter.Website\Services\ProductService.cs:line 40at CompiledRazorTemplates.Dynamic.RazorEngine_5b8a451855d24c909046bb5ca4be85bc.<>c__DisplayClass14_0.b__0(TextWriter __razor_helper_writer) in E:\Dynamicweb.NET\Solutions\danfilter.espresso4.dk\files\Templates\Designs\danfilter\eCom\Productlist\espresso.cshtml:line 328at CompiledRazorTemplates.Dynamic.RazorEngine_5b8a451855d24c909046bb5ca4be85bc.Execute() in E:\Dynamicweb.NET\Solutions\danfilter.espresso4.dk\files\Templates\Designs\danfilter\eCom\Productlist\espresso.cshtml:line 662at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.b__0(TextWriter writer)at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @using Co3.Espresso.Website.Services; 2 @using Dynamicweb.Frontend; 3 @using Dynamicweb.Rendering; 4 @using Co3.Espresso.Base.Extensions; 5 @using Co3.Espresso.Website.Models.FrontEnd; 6 @using Dynamicweb.Ecommerce.Common 7 @using Dynamicweb.Ecommerce.Products 8 9 @inherits RazorTemplateBase< RazorTemplateModel< Template > > 10 11 @using System.Globalization 12 @using System.Security.Cryptography.X509Certificates 13 @using Co3.Danfilter.Website.Models.FrontEnd 14 @using danfilterModels = Co3.Danfilter.Data.Models 15 @using Co3.Danfilter.Website.Services 16 @using Co3.Espresso.Base.Extensions 17 @using Co3.Espresso.Website.Models.FrontEnd 18 @using Co3.Espresso.Website.Services 19 @using Dynamicweb.Content 20 @using Dynamicweb.Ecommerce 21 @using Dynamicweb.Frontend 22 @using Dynamicweb.Rendering 23 @using Dynamicweb.Rendering.Translation 24 @using EcomContext = Dynamicweb.Ecommerce.Common.Context 25 @using ProductService = Co3.Espresso.Website.Services.ProductService 26 @using danfilterService = Co3.Danfilter.Website.Services 27 @using Dynamicweb.Ecommerce.Orders 28 @using Co3.Danfilter.Data.Services 29 @using Co3.Espresso.Website.Models.FrontEnd.Elements 30 @using Dynamicweb.Ecommerce.Products 31 @using Dynamicweb.SystemTools 32 @using System.Web 33 34 @functions { 35 36 public string getCountryCodeFromArea( Area area ) 37 { 38 RegionInfo regionInfo = new RegionInfo( area.CultureInfo.LCID ); 39 return regionInfo.TwoLetterISORegionName; 40 } 41 42 public static string GetStandardCollapseToggleTextExpand() 43 { 44 return "Se mere"; 45 } 46 47 public static string GetStandardCollapseToggleTextCollapse() 48 { 49 return "Se mindre"; 50 } 51 52 public static bool HasFreeDelivery( string productID = "" ) 53 { 54 bool returnValue = false; 55 if ( !string.IsNullOrEmpty( productID ) ) 56 { 57 Shipping shippingWithLowestFreeFeeAmount = Services.Shippings.GetShippings( EcomContext.LanguageID )?.Where( s => s.Active && s.FreeFeeAmount != default( double ) )?.OrderBy( s => s.FreeFeeAmount ).FirstOrDefault(); 58 if ( shippingWithLowestFreeFeeAmount != null ) 59 { 60 EspressoPrice price = danfilterService.ProductService.Instance.GetPrice( productID ); 61 EspressoPrice priceBefore = danfilterService.ProductService.Instance.GetBeforePrice( productID ); 62 EspressoPrice priceToUse; 63 if ( priceBefore.Price != default( double ) && priceBefore.Price < price.Price ) 64 { 65 priceToUse = priceBefore; 66 } 67 else 68 { 69 priceToUse = price; 70 } 71 returnValue = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( shippingWithLowestFreeFeeAmount.FreeFeeAmount ).Price <= priceToUse.Price; 72 } 73 } 74 return returnValue; 75 } 76 77 public static bool HasDiscount( string productID = "" ) 78 { 79 bool returnValue = false; 80 81 if ( !string.IsNullOrEmpty( productID ) ) 82 { 83 Co3.Danfilter.Data.Models.PriceList prices = danfilterService.ProductService.Instance.GetPrices( productID, EcomContext.LanguageID, PriceType.QuantityPrice ); 84 returnValue = prices.Prices.Count > 1; 85 } 86 return returnValue; 87 } 88 89 public static EspressoPrice GetLowestEspressoPrice(string productID, danfilterModels.PriceList prices ) 90 { 91 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetPrice( productID ); 92 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices ) 93 { 94 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) ); 95 if ( itemEspressoPrice.Price < returnValue.Price ) 96 { 97 returnValue = itemEspressoPrice; 98 } 99 }100 return returnValue;101 }102103 public static EspressoPrice GetLowestEspressoBeforePrice(string productID, danfilterModels.PriceList prices )104 {105 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );106 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetBeforePrice( productID );107108 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )109 {110 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );111 EspressoPrice itemEspressoBeforePrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductBasePrice ) );112 if ( itemEspressoPrice.Price < espressoPrice.Price )113 {114 returnValue = itemEspressoBeforePrice;115 }116 }117 return returnValue;118 }119120 public static EspressoPrice GetHighestEspressoPrice(string productID, danfilterModels.PriceList prices )121 {122 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetPrice( productID );123 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )124 {125 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );126 if ( itemEspressoPrice.Price > returnValue.Price )127 {128 returnValue = itemEspressoPrice;129 }130 }131 return returnValue;132 }133134 public static EspressoPrice GetHighestEspressoBeforePrice(string productID, danfilterModels.PriceList prices )135 {136 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );137 EspressoPrice returnValue = danfilterService.ProductService.Instance.GetBeforePrice( productID );138139 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )140 {141 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );142 EspressoPrice itemEspressoBeforePrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductBasePrice ) );143 if ( itemEspressoPrice.Price > espressoPrice.Price )144 {145 returnValue = itemEspressoBeforePrice;146 }147 }148 return returnValue;149 }150151 public static string GetPricePrefix( string productID, danfilterModels.PriceList prices )152 {153 string returnValue = string.Empty;154 EspressoPrice espressoPrice = danfilterService.ProductService.Instance.GetPrice( productID );155 foreach ( KeyValuePair< double, danfilterModels.Price > price in prices.Prices )156 {157 EspressoPrice itemEspressoPrice = danfilterService.ProductService.Instance.GetPriceWithOrWithoutVAT( decimal.ToDouble( price.Value.ProductPrice ) );158 if ( itemEspressoPrice.Price < espressoPrice.Price )159 {160 returnValue = string.Format("{0} ", Translation.GetTranslation( "eCom Productlist - Price from - Text" ));161 break;162 }163 }164 return returnValue;165 }166167 }168169170171172 @helper ProductDescription( string sectionClasses = "e-section", bool sectionCollapse = false, string contentClasses = null, string heading = null, string content = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )173 {174 if ( string.IsNullOrEmpty( content ) == false )175 {176 ClassList headingClassList = new ClassList();177 headingClassList.AddClasses( "col-12" );178 ClassList contentClassList = new ClassList();179 contentClassList.AddClasses( "col-12" );180181 @sectionStart( sectionClasses: sectionClasses, sectionCollapse: sectionCollapse, contentClasses: contentClasses, collapseToggleTextCollapse: collapseToggleTextCollapse, collapseToggleTextExpand: collapseToggleTextExpand )182183 if ( string.IsNullOrEmpty( heading ) == false )184 {185 <div class="@headingClassList">186 <h2 class="h2">@heading</h2>187 </div>188 }189 <div class="@contentClassList">190 @content191 </div>192193 @sectionEnd()194 }195 }196197198 @helper ProductVideo( string sectionClasses = "e-section", string contentClasses = null, string heading = null, string videoURL = null )199 {200 if ( string.IsNullOrEmpty( videoURL ) == false )201 {202 ClassList headingClassList = new ClassList();203 headingClassList.AddClasses( "col-12" );204 ClassList contentClassList = new ClassList();205 contentClassList.AddClasses( "col-12" );206207208 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )209210 if ( string.IsNullOrEmpty( heading ) == false )211 {212 <div class="@headingClassList">213 <p class="h2">@heading</p>214 </div>215 }216217 <div class="@contentClassList">218 <div class="embed-responsive embed-responsive-16by9 mb-2">219 <iframe class="embed-responsive-item" src="@videoURL" width="1080" height="608" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>220 </div>221 </div>222 @sectionEnd()223 }224 }225226 @helper ProductRelatedProducts( string sectionClasses = "e-section", string contentClasses = null, string heading = null,227 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )228 {229 if ( productLoop != null && productLoop.Any() == true )230 {231 ClassList headingClassList = new ClassList();232 headingClassList.AddClasses( "col-12" );233 ClassList contentClassList = new ClassList();234 contentClassList.AddClasses( "col-12" );235236 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )237238 if ( string.IsNullOrEmpty( heading ) == false )239 {240 <div class="@headingClassList">241 <h2 class="text-center">@heading</h2>242 </div>243 }244 <div class="@contentClassList">245 <div class="e-products mb-2">246 <div class="row justify-content-center">247 @{248 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();249 }250 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )251 {252 @ProductlistItem( product, productlistItemClassList )253 }254 </div>255 </div>256 </div>257258 @sectionEnd()259 }260 }261262 @helper ProductRelatedProductsDanFilter( string sectionClasses = "e-section", string contentClasses = null, string heading = null,263 IEnumerable< RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem > productLoop = null )264 {265 if ( productLoop != null && productLoop.Any() == true )266 {267 ClassList headingClassList = new ClassList();268 headingClassList.AddClasses( "col-12" );269 ClassList contentClassList = new ClassList();270 contentClassList.AddClasses( "col-12" );271272 @sectionStart( sectionClasses: sectionClasses, contentClasses: contentClasses )273274 if ( string.IsNullOrEmpty( heading ) == false )275 {276 <div class="@headingClassList">277 <h2 class="text-center">@heading</h2>278 </div>279 }280 <div class="@contentClassList">281 <div class="e-products mb-2">282 <div class="row justify-content-center">283 @{284 string productlistItemClassList = ProductlistService.Instance.GetGridItemWidth( null ).ToResponsiveClasses();285 }286 @foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product in productLoop )287 {288 @ProductlistItemDanFilter( product, productlistItemClassList )289 }290 </div>291 </div>292 </div>293294 @sectionEnd()295 }296 }297298 @helper ProductlistItem( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )299 {300 if ( product != null )301 {302 dynamic filterTypes = new List< dynamic >();303 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategory in product.GetLoop( "ProductCategories" ) )304 {305 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategoryField in productCategory.GetLoop( "ProductCategoryFields" ) )306 {307 if ( productCategoryField.GetString( "Ecom:Product.CategoryField.ID" ) == "B2CFilterType" )308 {309 if ( !string.IsNullOrEmpty( productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ) ) )310 {311 string[] filterTypesLabels = productCategoryField.GetString( "Ecom:Product.CategoryField.OptionLabel" ).Split( ',' );312 string[] filterTypeValues = productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ).Split( ',' );313 int index = 0;314 foreach ( string filterTypeValue in filterTypeValues )315 {316 filterTypes.Add( new317 {318 url = string.Format( "/admin/public/getimage.ashx?Crop=0&amp;Image=/Files/Images/danfilter/ikon-{0}.png&Format=png&Width=40&Height=40&Quality=75", filterTypeValue ),319 label = Translation.GetTranslation("eCom Product - Filter type label - " + filterTypesLabels[ index ])320 } );321 ++index;322 }323 }324 }325 }326 }327328 danfilterModels.PriceList prices = danfilterService.ProductService.Instance.GetPrices( product.GetString( "Ecom:Product.ID" ), EcomContext.LanguageID, PriceType.QuantityPrice );329 EspressoPrice productEspressoPrice = GetLowestEspressoPrice( product.GetString( "Ecom:Product.ID" ), prices );330 EspressoPrice productEspressoBeforePrice = GetLowestEspressoBeforePrice( product.GetString( "Ecom:Product.ID" ), prices );331 string pricePrefix = GetPricePrefix(product.GetString( "Ecom:Product.ID" ), prices);332333 dynamic productData = new334 {335 id = product.GetString( "Ecom:Product.ID" ),336 variantId = product.GetString( "Ecom:Product.VariantID" ),337 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),338 number = product.GetString( "Ecom:Product.Number" ),339 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),340 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageDefault.Clean" ), 400, 400, 5 ),341 pricePrefix = pricePrefix,342 price = productEspressoPrice,//danfilterService.ProductService.Instance.GetPrice( product.GetString( "Ecom:Product.ID" ) ),343 priceBefore = productEspressoBeforePrice,//danfilterService.ProductService.Instance.GetBeforePrice( product.GetString( "Ecom:Product.ID" ) ),344 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),345 discountLable = HasDiscount(product.GetString( "Ecom:Product.ID" )),346 freeDeliveryLable = HasFreeDelivery(product.GetString( "Ecom:Product.ID" )),347 filterTypes = filterTypes,348 stock = new349 {350 id = product.GetString( "Ecom:Product:Stock.ID" ),351 quantity = product.GetString( "Ecom:Product.Stock" ),352 text = product.GetString( "Ecom:Product:Stock.Text" ),353 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )354 }355 };356 bool showBeforePrice = productData.priceBefore.Price != 0 && productData.priceBefore.Price > productData.price.Price;357358359 <div class="@productlistItemClassList">360 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link " data-variant-id="@productData.variantId">361 <div class="e-products-item-container">362 <div class="e-products-item-image-container">363 <a class="e-products-item-image-wrapper" href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">364 <img src="@productData.imageLarge" alt="" class="e-products-item-image">365 @if ( productData.freeDeliveryLable && !productData.discountLable )366 {367 <span class="danfilter-productlist-item-label label-freedelivery">368 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Free delivery" )</span>369 </span>370 }371 @if ( productData.discountLable && !productData.freeDeliveryLable )372 {373 <span class="danfilter-productlist-item-label label-discount">374 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Discounts" )</span>375 </span>376 }377 @if ( productData.discountLable && productData.freeDeliveryLable )378 {379 <span class="danfilter-productlist-item-label label-both">380 <span class="label-text">@Translation.GetTranslation( "eCom Product - Label - Free delivery and discounts" )</span>381 </span>382 }383 </a>384 </div>385 <div class="e-products-item-text-container text-center">386 <h3 class="e-products-item-name mb-0">387 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">388 @productData.name389 </a>390 </h3>391 <div class="danfilter-productlist-item-pictogram-wrapper">392 @if ( productData.filterTypes.Count > 0 )393 {394 foreach ( dynamic filterType in productData.filterTypes )395 {396 <img src="@filterType.url" alt="@filterType.label" title="@filterType.label">397 }398 }399 </div>400401 @{402 ProductStatus productStatus = Co3.Danfilter.Website.Services.ProductService.Instance.GetProductStatus( productData.id, productData.variantId );403 }404 @RenderingService.Instance.PartialView( "/eCom/Product/_partials/productStatusStock.cshtml", productStatus )405 @if ( showBeforePrice )406 {407 <p class="e-products-item-text mb-0 small">408 <small class="e-products-item-price m-0 e-product-price-before text-muted">409 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">410 @productData.priceBefore411 </a>412 </small>413 </p>414 }415 <p class="e-products-item-text mb-0">416 <small class="e-products-item-price">417 <a href="@productData.url" onclick="trackProductClick(@HttpUtility.HtmlAttributeEncode( JsonService.Instance.ToJson( productData )))">418 @string.Format("{0}{1}", pricePrefix, productData.price)419 </a>420 </small>421 </p>422423 <form action="/system/data/cart" class="e-product-form js-e-product-form" method="post">424 <input name="CartCmd" type="hidden" value="Add">425 <input type="hidden" name="ProductID" value="@productData.id">426 <input name="VariantID" type="hidden" value="">427 <input name="UnitID" type="hidden" value="">428 <input name="Redirect" type="hidden" value="">429 <div class="danfilter-product-list-add-to-cart-wrapper">430 <input name="Quantity" type="hidden" value="1">431 <button class="btn btn-primary" type="submit">@Translation.GetTranslation( "eCom Product - Add To Cart - Button" )</button>432 </div>433 </form>434435 </div>436 </div>437 </div>438 </div>439 }440 }441442443 @helper ProductlistItemDanFilter( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem product, string productlistItemClassList = null )444 {445 if ( product != null )446 {447 dynamic filterTypes = new List< dynamic >();448 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategory in product.GetLoop( "ProductCategories" ) )449 {450 foreach ( RazorTemplateBase< RazorTemplateModel< Template > >.LoopItem productCategoryField in productCategory.GetLoop( "ProductCategoryFields" ) )451 {452 if ( productCategoryField.GetString( "Ecom:Product.CategoryField.ID" ) == "B2CFilterType" )453 {454 if ( !string.IsNullOrEmpty( productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ) ) )455 {456 string[] filterTypesLabels = productCategoryField.GetString( "Ecom:Product.CategoryField.OptionLabel" ).Split( ',' );457 string[] filterTypeValues = productCategoryField.GetString( "Ecom:Product.CategoryField.Value.Clean" ).Split( ',' );458 int index = 0;459 foreach ( string filterTypeValue in filterTypeValues )460 {461 filterTypes.Add( new462 {463 url = string.Format( "/admin/public/getimage.ashx?Crop=0&amp;Image=/Files/Images/danfilter/ikon-{0}.png&Format=png&Width=40&Height=40&Quality=75", filterTypeValue ),464 label = filterTypesLabels[ index ]465 } );466 ++index;467 }468 }469 }470 }471 }472473 danfilterModels.PriceList prices = danfilterService.ProductService.Instance.GetPrices( product.GetString( "Ecom:Product.ID" ), EcomContext.LanguageID, PriceType.QuantityPrice );474 EspressoPrice productEspressoPrice = GetLowestEspressoPrice( product.GetString( "Ecom:Product.ID" ), prices );475 EspressoPrice productEspressoBeforePrice = GetLowestEspressoBeforePrice( product.GetString( "Ecom:Product.ID" ), prices );476 string pricePrefix = GetPricePrefix(product.GetString( "Ecom:Product.ID" ), prices);477478 dynamic productData = new479 {480 id = product.GetString( "Ecom:Product.ID" ),481 variantId = product.GetString( "Ecom:Product.VariantID" ),482 url = ProductService.Instance.GetProductLink( product.GetString( "Ecom:Product.PrimaryOrFirstGroupID" ), product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),483 number = product.GetString( "Ecom:Product.Number" ),484 name = ProductService.Instance.GetName( product.GetString( "Ecom:Product.ID" ), product.GetString( "Ecom:Product.VariantID" ) ),485 imageLarge = ImageService.Instance.GetImageURL( product.GetString( "Ecom:Product.ImageDefault.Clean" ), 400, 400, 5 ),486 pricePrefix = pricePrefix,487 price = productEspressoPrice,//danfilterService.ProductService.Instance.GetPrice( product.GetString( "Ecom:Product.ID" ) ),488 priceBefore = productEspressoBeforePrice,//danfilterService.ProductService.Instance.GetBeforePrice( product.GetString( "Ecom:Product.ID" ) ),489 descriptionShortExtra01 = product.GetString( "Ecom:Product:Field.DescriptionShortExtra01" ),490 discountLable = HasDiscount(product.GetString( "Ecom:Product.ID" )),491 freeDeliveryLable = HasFreeDelivery(product.GetString( "Ecom:Product.ID" )),492 filterTypes = filterTypes,493 stock = new494 {495 id = product.GetString( "Ecom:Product:Stock.ID" ),496 quantity = product.GetString( "Ecom:Product.Stock" ),497 text = product.GetString( "Ecom:Product:Stock.Text" ),498 delivery = product.GetString( "Ecom:Product:Stock.DeliveryText" )499 }500 };501 bool showBeforePrice = productData.priceBefore.Price != 0 && productData.priceBefore.Price > productData.price.Price;502503504 <div class="@productlistItemClassList">505 <div class="e-products-item js-e-products-item js-e-products-item-@productData.id js-e-block-link e-block-link " data-variant-id="@productData.variantId">506 <div class="e-products-item-container">507 <div class="e-products-item-image-container">508 <a class="e-products-item-image-wrapper" href="@productData.url">509 <img src="@productData.imageLarge" alt="" class="e-products-item-image">510 </a>511 </div>512 <div class="e-products-item-text-container text-center">513 <h3 class="e-products-item-name mb-0">514 <a href="@productData.url">515 @productData.name516 </a>517 </h3>518 <div class="danfilter-productlist-item-pictogram-wrapper">519 @if ( productData.filterTypes.Count > 0 )520 {521 foreach ( dynamic filterType in productData.filterTypes )522 {523 <img src="@filterType.url" alt="@filterType.label" title="@filterType.label">524 }525 }526 </div>527528 @{529 ProductStatus productStatus = Co3.Danfilter.Website.Services.ProductService.Instance.GetProductStatus( productData.id, productData.variantId );530 }531 @RenderingService.Instance.PartialView( "/eCom/Product/_partials/productStatusStock.cshtml", productStatus )532533534 <form action="/system/data/cart" class="e-product-form js-e-product-form" method="post">535 <input name="CartCmd" type="hidden" value="Add">536 <input type="hidden" name="ProductID" value="@productData.id">537 <input name="VariantID" type="hidden" value="">538 <input name="UnitID" type="hidden" value="">539 <input name="Redirect" type="hidden" value="">540 <div class="danfilter-product-list-add-to-cart-wrapper">541 <input name="Quantity" type="hidden" value="1">542 <button class="btn btn-primary" type="submit">@Translation.GetTranslation( "eCom Product - Add To Cart - Button" )</button>543 </div>544 </form>545546 </div>547 </div>548 </div>549 </div>550 }551 }552553554 @helper sectionStart( string sectionClasses = "e-section", string contentClasses = null, bool sectionCollapse = false, string sectionId = null, string collapseToggleTextExpand = null, string collapseToggleTextCollapse = null )555 {556 sectionId = string.IsNullOrEmpty( sectionId ) ? Guid.NewGuid().ToString( "N" ) : sectionId;557 ClassList sectionClassList = new ClassList();558 sectionClassList.AddClasses( sectionClasses );559 ClassList contentClassList;560561 if ( contentClasses == null )562 {563 contentClassList = Co3.Espresso.Website.Services.PageService.Instance.GetResponsiveClassesFromPageItem( PageView.Current().Page.Item );564 }565 else566 {567 contentClassList = new ClassList();568 contentClassList.AddClasses( contentClasses );569 }570571 // TODO: Split collapse logic into separate helper function.572 string collapseId = Guid.NewGuid().ToString( "N" );573 ClassList collapseToggleClassList = new ClassList();574 if ( sectionCollapse )575 {576 sectionClassList.AddClasses( "p-section-collapse js-p-section-collapse" );577 collapseToggleClassList.AddClasses( contentClasses );578 collapseToggleClassList.AddClasses( "p-section-collapse-toggle collapsed order-last text-center" );579 contentClassList.AddClasses( "p-section-collapse-content collapse is-md" );580 }581582 @:<section class="@sectionClassList" id="@sectionId">583 @:<div class="container-fluid">584 @:<div class="row">585586 // TODO: Split collapse logic into separate helper function.587 if ( sectionCollapse )588 {589 <div class="@collapseToggleClassList" data-toggle="collapse" data-target="#@collapseId">590 <button class="btn bg-white p-section-collapse-toggle-btn" type="button">591 <i class="material-icons p-section-collapse-toggle-icon">keyboard_arrow_down</i>592 </button>593 <small class="h4 p-section-collapse-toggle-text" data-expand-text="@( string.IsNullOrEmpty( collapseToggleTextExpand ) ? GetStandardCollapseToggleTextExpand() : collapseToggleTextExpand )" data-collapse-text="@( string.IsNullOrEmpty( collapseToggleTextCollapse ) ? GetStandardCollapseToggleTextCollapse() : collapseToggleTextCollapse )"></small>594 </div>595 }596597 @:<div class="@contentClassList" id="@collapseId">598 @:<div class="row">599 }600601 @helper sectionEnd()602 {603 @:</div>604 @:</div>605 @:</div>606 @:</div>607 @:</section>608 }609610611612613 @{614 ClassList productlistItemClassList = new ClassList();615 Dictionary< string, decimal > paragraphEcommerceGridItemWidth = ProductlistService.Instance.GetGridItemWidth( PageView.Current().CurrentParagraph.Item.GetValue< string >( "ItemWidth" ) );616 productlistItemClassList.AddClasses617 ( paragraphEcommerceGridItemWidth.ToResponsiveClasses618 ()619 );620 }621622 <script>623 function trackProductClick(productObj) {624 dataLayer.push({625 'event': 'productClick',626 'ecommerce': {627 'click': {628 'products': [{629 'name': productObj.name,630 'id': productObj.id,631 'price': productObj.price.Price632 }]633 }634 },635 'eventCallback': function() {636 document.location = productObj.url;637 }638 });639 return false;640 }641 </script>642643644 <div class="e-productlist js-gtm-tracking-productlist">645646 <div class="row">647 <div class="col-12">648649 <div class="e-productlist-body">650 <div class="row">651 <div class="col-12">652 <div class="e-products">653 <div class="row">654 @{655 int productIndex = 1;656 }657 <script>658 var arrImpressions = [];659 </script>660 @foreach ( LoopItem product in GetLoop( "Products" ) )661 {662 @ProductlistItem( product, productlistItemClassList.ToString() )663 IEnumerable< ProductGroupRelation > groups = Dynamicweb.Ecommerce.Services.ProductGroups.GetProductGroupRelations( product.GetString( "Ecom:Product.ID" ) );664 string listName = string.Empty;665 if ( groups != null && groups.FirstOrDefault( g => g.IsPrimary ) != null )666 {667 listName = Dynamicweb.Ecommerce.Services.ProductGroups.GetGroup( groups.FirstOrDefault( g => g.IsPrimary ).GroupId )?.Name ;668 }669670 <script>671 arrImpressions.push({672 "id": '@product.GetString( "Ecom:Product.ID" )',673 "name": '@product.GetString( "Ecom:Product.Name" )',674 "price": @product.GetDouble( "Ecom:Product.Price.Price" ),675 "position": @productIndex,676 "list": '@listName'677 });678 </script>679680 productIndex++;681 }682 </div>683 </div>684 </div>685 </div>686 </div>687688 </div>689 </div>690691 </div>692693 <script>694 dataLayer.push({695 "ecommerce": {696 "currencyCode": "@Context.Currency.Code",697 "impressions": arrImpressions698 }699 });700 </script>701

Vilket Nilan Comfort CT300 filter ska jag välja?

Standardfilter

• G4 filterklass
• PM: 10
• Tar bort damm och smuts
• Kan monteras i in- och utsuget

Läs mer här

standardfilter

Pollenfilter

• F7 filterklass
• PM: 2,5
• Minskar allergibesvär
• Monteras i insuget

Läs mer här

pollenfilter

SafeAir

• F9 filterklass
• PM: 1,0
• Tar bort skadliga partiklar
• Monteras i insuget

Läs mer här

SafeAir

Kolfilter

• Tar bort dålig lukt
• Ingen partikelfiltrering
• Monteras i insuget med partikelfilter

Läs mer här

Kulfilter

Filterbyte i Nilan Comfort CT300

Du bör kontrollera dina filter med jämna mellanrum, för att säkerställa att filtret är rent och filtrerar optimalt. Nilan rekommenderar som utgångspunkt att du kontrollerar dina filter var tredje månad och byter ut dem en till två gånger per år. Vind, väder och placering påverkar dina filters livslängd. Filter tål inte rengöring med vatten eller dammsugning, då detta förstör dess filtreringsförmåga.

Både påverkningar i och utanför hemmet har betydelse för hur ofta ditt Nilan Comfort CT300-filter ska bytas. Husdjur, avgaser och rök förkortar ditt ventilationsfilters livslängd. Som utgångspunkt bör du byta ditt Standardfilter var tredje månad och dina finare filter var sjätte månad.

Nilan Comfort CT300 ventilationssystem

Comfort CT300 är ett högeffektivt värmeåtervinningssystem som suger ut den varma och fuktiga luften från bl.a. kök och badrum, och tar på så sätt bort partiklar, fukt och oönskad lukt. Energin från utsugningen används till att värma upp luften utifrån, som kommer in genom insuget. Denna modell finns ofta i ett skafferirum, där den är placerad i ett skåp eller på en vägg. Comfort CT300 är av energiklass A.

 Nilan Comfort CT300 Ventilationsanlæg

Nilan Comfort CT300 ventilationssystem

Comfort CT300 är ett högeffektivt värmeåtervinningssystem som suger ut den varma och fuktiga luften från bl.a. kök och badrum, och tar på så sätt bort partiklar, fukt och oönskad lukt. Energin från utsugningen används till att värma upp luften utifrån, som kommer in genom insuget. Denna modell finns ofta i ett skafferirum, där den är placerad i ett skåp eller på en vägg. Comfort CT300 är av energiklass A.

 Nilan Comfort CT300 Ventilationsanlæg

Hittade du inte vad du sökte?

Är du fortfarande osäker på vilket ventilationssystem du har monterat i ditt hem eller har du svårt att välja vilken filtertyp du ska använda? Då är du välkommen att kontakta Filterhusets Kundtjänst. Vi finns redo att hjälpa dig med dina eventuella frågor.

Kontakta oss

Adress

Retur
Genvägen 1, 231 62 
Trelleborg, Sverige

DANFILTER ApS
CVR-nummer: 10062527

Öppettider

Kundtjänst telefon:
Mån - tors kl. 9.00 - 17.00
Fredag kl. 9.00 - 16.00

Lager:
Mån - tors kl. 8.00 - 16.00
Fredag kl. 8.00 - 14.00

Hittade du inte vad du sökte?

Är du fortfarande osäker på vilket ventilationssystem du har monterat i ditt hem eller har du svårt att välja vilken filtertyp du ska använda? Då är du välkommen att kontakta Filterhusets Kundtjänst. Vi finns redo att hjälpa dig med dina eventuella frågor.

Kontakta oss

Adress

Retur
Genvägen 1, 231 62 
Trelleborg, Sverige

DANFILTER ApS
CVR-nummer: 10062527

Öppettider

Kundtjänst telefon:
Mån - tors kl. 9.00 - 17.00
Fredag kl. 9.00 - 16.00

Lager:
Mån - tors kl. 8.00 - 16.00
Fredag kl. 8.00 - 14.00

keyboard_arrow_up