Filter selection:

ELEGANCE touch-free dispenser for liquid soap, white
ELEGANCE touch-free dispenser for liquid soap, white

ELEGANCE touch-free dispenser for liquid soap, white

496,72 € Available in stock
ELEGANCE touch-free dispenser for disinfectant, white
ELEGANCE touch-free dispenser for disinfectant, white

ELEGANCE touch-free dispenser for disinfectant, white

551,35 € Available in stock
CleanLine touch-free foam soap dispenser, brushed stainless steel
CleanLine touch-free foam soap dispenser, brushed stainless steel

CleanLine touch-free foam soap dispenser, brushed stainless steel

1.457,65 € Available in stock
CleanLine touch-free dispenser for liquid soap / sanitizer dispenser
CleanLine touch-free dispenser for liquid soap / sanitizer dispenser

CleanLine touch-free dispenser for liquid soap / sanitizer dispenser

1.310,46 € Available in stock
CARL soap dispenser, white
CARL soap dispenser, white
Colour customisable

CARL soap dispenser, white

2.700,00 € Available in stock
Copy of CARL sæbedispenser, hvid
Copy of CARL sæbedispenser, hvid
Colour customisable

Copy of CARL sæbedispenser, hvid

2.700,00 € Available in stock
STAINLESS DESIGN dispenser for liquid soap/disinfectant
STAINLESS DESIGN dispenser for liquid soap/disinfectant

STAINLESS DESIGN dispenser for liquid soap/disinfectant

309,15 € Available in stock
STAINLESS DESIGN touch-free dispenser for foam soap
STAINLESS DESIGN touch-free dispenser for foam soap

STAINLESS DESIGN touch-free dispenser for foam soap

2.547,13 € Available in stock
STAINLESS DESIGN manual dispenser for liquid soap
STAINLESS DESIGN manual dispenser for liquid soap

STAINLESS DESIGN manual dispenser for liquid soap

414,27 € Available in stock
STAINLESS DESIGN manual dispenser for disinfectant
STAINLESS DESIGN manual dispenser for disinfectant

STAINLESS DESIGN manual dispenser for disinfectant

3.086,28 € Available in stock
STAINLESS DESIGN manual dispenser for foam soap
STAINLESS DESIGN manual dispenser for foam soap

STAINLESS DESIGN manual dispenser for foam soap

3.098,58 € Available in stock
BJÖRK touch-free dispenser for liquid soap/disinfectant, white
Error executing template "Designs/Swift-v2/Paragraph/Swift-v2_ProductDefaultImage.cshtml"
System.NullReferenceException: Object reference not set to an instance of an object.
   at CompiledRazorTemplates.Dynamic.RazorEngine_54383a43615944e3b07b22ca1b7d95cb.<>c__DisplayClass0_0.<ExecuteAsync>b__2(MediaViewModel x)
   at System.Collections.Generic.List`1.RemoveAll(Predicate`1 match)
   at CompiledRazorTemplates.Dynamic.RazorEngine_54383a43615944e3b07b22ca1b7d95cb.ExecuteAsync()
   at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at RazorEngine.Templating.RazorEngineServiceExtensions.Run(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.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Ecommerce.ProductCatalog 3 @using Dynamicweb.Ecommerce.CustomerExperienceCenter.Favorites 4 5 @{ 6 ProductViewModel product = null; 7 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 8 { 9 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 10 } 11 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 12 { 13 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 14 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 15 16 if (productList?.Products is object) 17 { 18 product = productList.Products[0]; 19 } 20 } 21 } 22 23 @if (product is object) 24 { 25 string imagePath = product?.DefaultImage?.Value ?? ""; 26 string imagePathUrlEncoded = Dynamicweb.Context.Current.Server.UrlEncode(imagePath); 27 28 string ratio = Model.Item.GetRawValueString("ImageAspectRatio", ""); 29 ratio = ratio != "0" ? ratio : ""; 30 string ratioCssClass = ratio != "" ? " ratio" : ""; 31 string ratioVariable = ratio != "" ? "--bs-aspect-ratio: " + ratio : ""; 32 33 string width = Model.Item.GetRawValueString("Width", "auto"); 34 int smallImageSize = 640; 35 int largeImageSize = width == "auto" ? 1280 : Convert.ToInt32(width); 36 37 string ImageObjectFit = Model.Item.GetRawValueString("ImageObjectFit", "contain"); 38 39 string imagePathXs = "/Admin/Public/GetImage.ashx?width=" + smallImageSize + "&image=" + imagePathUrlEncoded + "&format=webp"; 40 string imagePathS = "/Admin/Public/GetImage.ashx?width=" + largeImageSize + "&image=" + imagePathUrlEncoded + "&format=webp"; 41 string imagePathFallBack = "/Admin/Public/GetImage.ashx?width=" + largeImageSize + "&image=" + imagePathUrlEncoded + "&format=webp"; 42 43 bool showFavoritesSelector = !string.IsNullOrEmpty(Model.Item.GetString("ShowAddToFavorites")) ? Model.Item.GetBoolean("ShowAddToFavorites") : false; 44 string anonymousUsersLimitations = Pageview.AreaSettings.GetRawValueString("AnonymousUsers", ""); 45 bool anonymousUser = Pageview.User == null; 46 47 var favoriteParameters = new Dictionary<string, object>(); 48 if (!anonymousUser && showFavoritesSelector) 49 { 50 int defaultFavoriteListId = 0; 51 52 IEnumerable<FavoriteList> favoreiteLists = Pageview.User.GetFavoriteLists(); 53 if (favoreiteLists.Count() == 1) 54 { 55 foreach (FavoriteList list in favoreiteLists) 56 { 57 defaultFavoriteListId = list.ListId; 58 } 59 } 60 61 favoriteParameters.Add("ListId", defaultFavoriteListId); 62 } 63 64 MediaViewModel alternativeImage = new MediaViewModel(); 65 if (Model.Item.GetBoolean("ShowAlternativeImageOnHover")) { 66 var selectedImageCategories = Model.Item.GetList("GetAlternativeImageFrom")?.GetRawValue().OfType<string>().ToList(); 67 List<MediaViewModel> allAssetsImages = product.AssetCategories.Where(x => selectedImageCategories.Contains(x.SystemName)).SelectMany(x => x.Assets).ToList(); 68 allAssetsImages.RemoveAll(x => x.Value == product.DefaultImage.Value); 69 alternativeImage = allAssetsImages.FirstOrDefault(); 70 } 71 72 string altImagePathXs = string.Empty; 73 string altImagePathS = string.Empty; 74 75 if (!string.IsNullOrEmpty(alternativeImage?.Value)) 76 { 77 altImagePathXs = "/Admin/Public/GetImage.ashx?width=" + smallImageSize + "&image=" + Dynamicweb.Context.Current.Server.UrlEncode(alternativeImage.Value) + "&format=webp"; 78 altImagePathS = "/Admin/Public/GetImage.ashx?width=" + largeImageSize + "&image=" + Dynamicweb.Context.Current.Server.UrlEncode(alternativeImage.Value) + "&format=webp"; 79 } 80 81 string colorSchemeBorder = !string.IsNullOrWhiteSpace(Model.ColorScheme?.Id) ? "border: 1px solid rgba(0,0,0,0)" : ""; 82 string imageId = "ProductImage_" + product.Id + product.VariantId.Replace(".", "_"); 83 string fullWidth = width == "auto" ? "w-100" : ""; 84 string customWidth = width != "auto" ? "style=\"width: " + width + "px\"" : "style=\"min-width: 60px\""; 85 86 if (!string.IsNullOrEmpty(imagePath)) 87 { 88 <figure class="h-100 @fullWidth position-relative item_@Model.Item.SystemName.ToLower()" @customWidth data-dw-colorscheme="@Model.ColorScheme?.Id"> 89 <div class="ratio" style="@(ratioVariable)"> 90 <div class="d-flex justify-content-center align-items-center"> 91 @if (imagePath.StartsWith("/Files/", StringComparison.OrdinalIgnoreCase)) 92 { 93 <img id="@imageId" 94 srcset=" 95 @imagePathXs @(smallImageSize)w, 96 @imagePathS @(largeImageSize)w" 97 sizes="(max-width: 992px) 50vw, 25vw" 98 src="@imagePathFallBack" 99 @if (Model.Item.GetBoolean("ShowAlternativeImageOnHover") && !string.IsNullOrEmpty(alternativeImage?.Value)) { <text> 100 data-alternative-image=" 101 @altImagePathXs @(smallImageSize)w, 102 @altImagePathS @(largeImageSize)w" 103 onmouseover="swift.Image.swapImage(event)" 104 onmouseout="swift.Image.swapImage(event)" 105 </text> } 106 loading="lazy" 107 decoding="async" 108 class="h-100 w-100" 109 style="object-fit: @ImageObjectFit; @colorSchemeBorder" 110 alt="@product.Name" 111 itemprop="image"> 112 } 113 else 114 { 115 <img id="@imageId" 116 src="/Files/@product.DefaultImage.Value" 117 loading="lazy" 118 class="h-100 w-100" 119 style="object-fit: contain; @colorSchemeBorder" 120 alt="@product.Name" 121 itemprop="image"> 122 } 123 </div> 124 </div> 125 126 @if (!anonymousUser) 127 { 128 if (showFavoritesSelector) 129 { 130 <div class="position-absolute top-0 end-0 my-3" style="z-index: 2"> 131 @RenderPartial("Components/ToggleFavorite.cshtml", product, favoriteParameters) 132 </div> 133 } 134 } 135 </figure> 136 } 137 } 138 else if (Pageview.IsVisualEditorMode) 139 { 140 <div class="alert alert-dark m-0">@Translate("The default image will be shown here, if any")</div> 141 } 142
Colour customisable

BJÖRK touch-free dispenser for liquid soap/disinfectant, white

365,29 € Available in stock
12 out of 43 products
Load more products