Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupPoster.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_b0ee975905314fea9ad4e772bc6df36d.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) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 99 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 21 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 749
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend.Navigation 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using Dynamicweb.Environment 5 @using Dynamicweb.Frontend 6 7 @{ 8 ProductListViewModel productList = null; 9 if (Dynamicweb.Context.Current.Items.Contains("ProductList")) 10 { 11 productList = (ProductListViewModel)Dynamicweb.Context.Current.Items["ProductList"]; 12 } 13 else if (Pageview.Page.Item["DummyProductGroup"] != null && Pageview.IsVisualEditorMode) 14 { 15 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 16 ProductListViewModel groupList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 17 18 if (groupList?.Products is object) 19 { 20 productList = groupList; 21 } 22 } 23 } 24 25 @if (productList is object) 26 { 27 string layout = Model.Item.GetRawValueString("Layout", "align-middle-center-text-center"); 28 string alignment = ""; 29 30 string searchParameter = Dynamicweb.Context.Current.Request.GetString("q"); 31 32 bool hideTitle = Model.Item.GetBoolean("HideGroupTitle"); 33 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-4"); 34 35 string groupName = productList?.Group?.Name != null ? productList.Group.Name : ""; 36 string headerName = searchParameter != "" ? Translate("Search results for") + ": " + searchParameter : groupName; 37 38 bool hideDescription = Model.Item.GetBoolean("HideGroupDescription"); 39 string groupDescription = productList?.Group?.Description != null ? productList.Group.Description : ""; 40 string descriptionFontSize = Model.Item.GetRawValueString("DescriptionFontSize", "fs-6"); 41 42 string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : ""; 43 if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase)) 44 { 45 groupImage = $"/Files{groupImage}"; 46 } 47 48 string posterHeight = Model.Item.GetRawValueString("PosterHeight", ""); 49 posterHeight = posterHeight == "small" ? "min-vh-25" : posterHeight; 50 posterHeight = posterHeight == "medium" ? "min-vh-50" : posterHeight; 51 posterHeight = posterHeight == "large" ? "min-vh-75" : posterHeight; 52 53 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 54 contentPadding = contentPadding == "none" ? "p-3 px-xl-3 py-xl-4" : contentPadding; 55 contentPadding = contentPadding == "small" ? "p-3 p-xl-4" : contentPadding; 56 contentPadding = contentPadding == "large" ? "p-4 p-xl-5" : contentPadding; 57 58 string maxWidth = Model.Item.GetRawValueString("TextReadability", "max-width-on"); 59 maxWidth = maxWidth == "max-width-on" ? " mw-75ch" : maxWidth; 60 maxWidth = maxWidth == "max-width-off" ? "" : maxWidth; 61 62 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 63 64 if (!string.IsNullOrEmpty(groupImage)) 65 { 66 var parms = new Dictionary<string, object>(); 67 parms.Add("cssClass", "h-100 w-100"); 68 parms.Add("columns", Model.GridRowColumnCount); 69 70 switch (layout) 71 { 72 case "align-top-left-text-left": 73 alignment = "text-start justify-content-start align-items-start"; 74 break; 75 case "align-top-center-text-center": 76 alignment = "text-center justify-content-center align-items-start"; 77 break; 78 case "align-top-right-text-right": 79 alignment = "text-end justify-content-end align-items-start"; 80 break; 81 case "align-middle-left-text-left": 82 alignment = "text-start justify-content-start align-items-center"; 83 break; 84 case "align-middle-center-text-center": 85 alignment = "text-center justify-content-center align-items-center"; 86 break; 87 case "align-middle-right-text-right": 88 alignment = "text-end justify-content-end align-items-center"; 89 break; 90 case "align-bottom-left-text-left": 91 alignment = "text-start justify-content-start align-items-end"; 92 break; 93 case "align-bottom-center-text-center": 94 alignment = "text-center justify-content-center align-items-end"; 95 break; 96 case "align-bottom-right-text-right": 97 alignment = "text-end justify-content-end align-items-end"; 98 break; 99 } 100 101 <div class="position-relative h-100@(theme) @(posterHeight) item_@Model.Item.SystemName.ToLower()"> 102 @if (!string.IsNullOrEmpty(groupImage)) 103 { 104 string imageFilter = Model.Item.GetRawValueString("ImageFilter", ""); 105 imageFilter = imageFilter == "no-filter" ? "" : imageFilter; 106 imageFilter = imageFilter == "filter" ? " image-filter" : imageFilter; 107 108 <div class="position-absolute top-0 bottom-0 end-0 start-0@(imageFilter)"> 109 @RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms) 110 </div> 111 } 112 113 @if (!hideTitle || !hideDescription) 114 { 115 <div class="container-xl h-100 @(contentPadding)"> 116 <div class="h-100 w-100 position-relative d-flex @(alignment)"> 117 <div class="@(maxWidth)"> 118 @if (!hideTitle) 119 { 120 <h1 class="@titleFontSize">@headerName</h1> 121 } 122 123 @if (!hideDescription && !string.IsNullOrEmpty(groupDescription)) 124 { 125 <div class="@descriptionFontSize mb-0-last-child"> 126 @groupDescription 127 </div> 128 } 129 </div> 130 </div> 131 </div> 132 } 133 134 </div> 135 } 136 else if (Pageview.IsVisualEditorMode) 137 { 138 <div class="alert alert-dark m-0" role="alert"> 139 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span> 140 </div> 141 } 142 } 143 else if (Pageview.IsVisualEditorMode) 144 { 145 <div class="alert alert-dark m-0" role="alert"> 146 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span> 147 </div> 148 } 149
New newest product
3535 Many in stock.
3535 Many in stock.
New newest product 2
354 Many in stock.
354 Many in stock.
Product with discount
22 Many in stock.
22 Many in stock.
Product with discount (buy 2)
65735 Many in stock.
65735 Many in stock.
Newest product
2344 Many in stock.
2344 Many in stock.
F-Si Carbon 3 Cross Country Bike MAINs
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 4 Cross Country Bike MainUK
2 Hurry! Limited stock!
2 Hurry! Limited stock!
Habit 3 Trail Bike MAIN
1 Hurry! Limited stock!
1 Hurry! Limited stock!
Habit 4 Trail Bike
1993 Many in stock.
1993 Many in stock.
Habit 5 Full Suspension Mountain Bike
997 Many in stock.
997 Many in stock.
Trail Neo S Mountain Bike
996 Many in stock.
996 Many in stock.
F-Si Carbon 3 Cross Country Bike Red (Red)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 3 Cross Country Bike black (Black)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 4 Cross Country Bike BlackUK (Black)
1 Hurry! Limited stock!
1 Hurry! Limited stock!
F-Si Carbon 4 Cross Country Bike OrangeUK (Orange)
1 Hurry! Limited stock!
1 Hurry! Limited stock!
Habit 4 Trail Bike (Blue)
996 Many in stock.
996 Many in stock.
Habit 4 Trail Bike (Green)
997 Many in stock.
997 Many in stock.
Habit 3 Trail Bike red (Red)
Out of stock.
Out of stock.
Habit 5 Full Suspension Mountain Bike (Black)
997 Many in stock.
997 Many in stock.
Trail Neo S Mountain Bike (Green)
996 Many in stock.
996 Many in stock.
Cujo 1
999 Many in stock.
999 Many in stock.
Cujo 1 (Brown)
999 Many in stock.
999 Many in stock.
F-Si Carbon 3 Cross Country Bike (Green)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 3 Cross Country Bike (Yellow)
79525 Many in stock.
79525 Many in stock.
Habit Neo 2 Bike x
1973 Many in stock.
1973 Many in stock.
Moterra Neo Carbon 2 Mountain Bike
1994 Many in stock.
1994 Many in stock.
CAAD Optimo 1 Road Bike MAIN
1990 Many in stock.
1990 Many in stock.
CAAD Optimo 1 RED (Red)
996 Many in stock.
996 Many in stock.
CAAD Optimo 1 BLUE (Blue)
991 Many in stock.
991 Many in stock.
Habit Neo 2 red (Red)
1973 Many in stock.
1973 Many in stock.
Habit Neo 2 grey (Grey)
1973 Many in stock.
1973 Many in stock.
CAAD Optimo Sora Bike
997 Many in stock.
997 Many in stock.
Moterra Neo Carbon 2 Mountain Bike (Blue)
996 Many in stock.
996 Many in stock.
Moterra Neo Carbon 2 Mountain Bike (Grey)
997 Many in stock.
997 Many in stock.
Hi-MOD Women's Ultegra Di2 Bike
Out of stock.
Out of stock.
Hi-MOD Women's Ultegra Di2 (Pink)
Out of stock.
Out of stock.
CAAD Optimo Sora (White)
994 Many in stock.
994 Many in stock.
Townie Path Go! 10D EQ Step-Thru
567655 Many in stock.
567655 Many in stock.
Townie Path Go! 10D EQ Step-Thru grey (Grey)
Out of stock.
Out of stock.
Townie Path Go! 10D EQ Step-Thru green (Green)
Out of stock.
Out of stock.
Slash 7 Bike
996 Many in stock.
996 Many in stock.
Slash 7 (red variant) (Red)
Out of stock.
Out of stock.
Slash 7 (green variant) (Green)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 Bike
2995 Many in stock.
2995 Many in stock.
Supercaliber 9.7 (Red)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 (Black)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 (Green)
999 Many in stock.
999 Many in stock.
Precaliber 16 Girl Bike
1997 Many in stock.
1997 Many in stock.
Precaliber 16 Girl (Violet)
998 Many in stock.
998 Many in stock.
Precaliber 16 Girl (Pink)
998 Many in stock.
998 Many in stock.
Precaliber 20 7-speed Bike
1999 Many in stock.
1999 Many in stock.
Precaliber 20 7-speed (Black)
998 Many in stock.
998 Many in stock.
Precaliber 20 7-speed (Blue)
998 Many in stock.
998 Many in stock.
Wahoo 24 Girl Bike MAIN
3000 Many in stock.
3000 Many in stock.
Wahoo 24 Girl (grey variant) (Grey)
1000 Many in stock.
1000 Many in stock.
Wahoo 24 Girl (purple variant) (Purple)
1000 Many in stock.
1000 Many in stock.
Wahoo 24 Girl (red variant) (Red)
1000 Many in stock.
1000 Many in stock.
Domane Women's SL 6 MAIN
3000 Many in stock.
3000 Many in stock.
Domane SL 6 (red variant) (Red)
1000 Many in stock.
1000 Many in stock.
Domane SL 6 (black variant) (Black)
1000 Many in stock.
1000 Many in stock.
Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupImage.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_17c1c3f82337485c8ace68af01afddd2.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) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 99 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 21 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 749
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend.Navigation 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using Dynamicweb.Environment 5 @using Dynamicweb.Frontend 6 7 @{ 8 ProductListViewModel productList = null; 9 if (Dynamicweb.Context.Current.Items.Contains("ProductList")) 10 { 11 productList = (ProductListViewModel)Dynamicweb.Context.Current.Items["ProductList"]; 12 } 13 else if (Pageview.Page.Item["DummyProductGroup"] != null && Pageview.IsVisualEditorMode) 14 { 15 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 16 ProductListViewModel groupList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 17 18 if (groupList?.Products is object) 19 { 20 productList = groupList; 21 } 22 } 23 } 24 25 @if (productList is object) { 26 string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : string.Empty; 27 if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase)) 28 { 29 groupImage = $"/Files{groupImage}"; 30 } 31 32 string groupName = productList?.Group?.Name != null ? productList.Group.Name : string.Empty; 33 34 string ratio = Model.Item.GetRawValueString("ImageAspectRatio", string.Empty); 35 ratio = ratio != "0" ? ratio : string.Empty; 36 string ratioCssClass = ratio != string.Empty && ratio != "fill" ? " ratio" : string.Empty; 37 string ratioVariable = ratio != string.Empty ? "style=\"--bs-aspect-ratio: " + ratio + "\"" : string.Empty; 38 string fillClass = ratio == "fill" ? " h-100" : ""; 39 40 var parms = new Dictionary<string, object>(); 41 parms.Add("loading", "lazy"); 42 parms.Add("columns", Model.GridRowColumnCount); 43 44 if (ratio == "fill") { 45 parms.Add("cssClass", "w-100 h-100"); 46 } 47 else 48 { 49 parms.Add("cssClass", "mw-100 mh-100"); 50 } 51 52 parms.Add("style", string.Empty); 53 parms.Add("alt", groupName); 54 55 if (!string.IsNullOrEmpty(groupImage)) { 56 <div class="item_@Model.Item.SystemName.ToLower()"> 57 <figure class="m-0@(ratioCssClass)@(fillClass)" @ratioVariable> 58 @RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms) 59 </figure> 60 </div> 61 } else if (Pageview.IsVisualEditorMode) { 62 <div class="alert alert-dark m-0" role="alert"> 63 <span>@Translate("Product list group image: The image will be shown here, if any")</span> 64 </div> 65 } 66 } else if (Pageview.IsVisualEditorMode) 67 { 68 <div class="alert alert-dark m-0" role="alert"> 69 <span>@Translate("Product list group image: The image will be shown here, if any")</span> 70 </div> 71 } 72 73
Error executing template "Designs/Swift/Paragraph/Swift_ProductListGroupPoster.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at CompiledRazorTemplates.Dynamic.RazorEngine_b0ee975905314fea9ad4e772bc6df36d.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) in /_/src/Application/Providers/Dynamicweb.Rendering.Providers.NetCore/Razor/RazorTemplateRenderingProvider.cs:line 99 at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 21 at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 749
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Frontend.Navigation 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using Dynamicweb.Environment 5 @using Dynamicweb.Frontend 6 7 @{ 8 ProductListViewModel productList = null; 9 if (Dynamicweb.Context.Current.Items.Contains("ProductList")) 10 { 11 productList = (ProductListViewModel)Dynamicweb.Context.Current.Items["ProductList"]; 12 } 13 else if (Pageview.Page.Item["DummyProductGroup"] != null && Pageview.IsVisualEditorMode) 14 { 15 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 16 ProductListViewModel groupList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 17 18 if (groupList?.Products is object) 19 { 20 productList = groupList; 21 } 22 } 23 } 24 25 @if (productList is object) 26 { 27 string layout = Model.Item.GetRawValueString("Layout", "align-middle-center-text-center"); 28 string alignment = ""; 29 30 string searchParameter = Dynamicweb.Context.Current.Request.GetString("q"); 31 32 bool hideTitle = Model.Item.GetBoolean("HideGroupTitle"); 33 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "display-4"); 34 35 string groupName = productList?.Group?.Name != null ? productList.Group.Name : ""; 36 string headerName = searchParameter != "" ? Translate("Search results for") + ": " + searchParameter : groupName; 37 38 bool hideDescription = Model.Item.GetBoolean("HideGroupDescription"); 39 string groupDescription = productList?.Group?.Description != null ? productList.Group.Description : ""; 40 string descriptionFontSize = Model.Item.GetRawValueString("DescriptionFontSize", "fs-6"); 41 42 string groupImage = productList?.Group?.Assets != null ? productList.Group.Assets.FirstOrDefault(x => x.Name == "LargeImage").Value : ""; 43 if (groupImage.StartsWith("/") && !groupImage.StartsWith("/Files", StringComparison.OrdinalIgnoreCase)) 44 { 45 groupImage = $"/Files{groupImage}"; 46 } 47 48 string posterHeight = Model.Item.GetRawValueString("PosterHeight", ""); 49 posterHeight = posterHeight == "small" ? "min-vh-25" : posterHeight; 50 posterHeight = posterHeight == "medium" ? "min-vh-50" : posterHeight; 51 posterHeight = posterHeight == "large" ? "min-vh-75" : posterHeight; 52 53 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 54 contentPadding = contentPadding == "none" ? "p-3 px-xl-3 py-xl-4" : contentPadding; 55 contentPadding = contentPadding == "small" ? "p-3 p-xl-4" : contentPadding; 56 contentPadding = contentPadding == "large" ? "p-4 p-xl-5" : contentPadding; 57 58 string maxWidth = Model.Item.GetRawValueString("TextReadability", "max-width-on"); 59 maxWidth = maxWidth == "max-width-on" ? " mw-75ch" : maxWidth; 60 maxWidth = maxWidth == "max-width-off" ? "" : maxWidth; 61 62 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 63 64 if (!string.IsNullOrEmpty(groupImage)) 65 { 66 var parms = new Dictionary<string, object>(); 67 parms.Add("cssClass", "h-100 w-100"); 68 parms.Add("columns", Model.GridRowColumnCount); 69 70 switch (layout) 71 { 72 case "align-top-left-text-left": 73 alignment = "text-start justify-content-start align-items-start"; 74 break; 75 case "align-top-center-text-center": 76 alignment = "text-center justify-content-center align-items-start"; 77 break; 78 case "align-top-right-text-right": 79 alignment = "text-end justify-content-end align-items-start"; 80 break; 81 case "align-middle-left-text-left": 82 alignment = "text-start justify-content-start align-items-center"; 83 break; 84 case "align-middle-center-text-center": 85 alignment = "text-center justify-content-center align-items-center"; 86 break; 87 case "align-middle-right-text-right": 88 alignment = "text-end justify-content-end align-items-center"; 89 break; 90 case "align-bottom-left-text-left": 91 alignment = "text-start justify-content-start align-items-end"; 92 break; 93 case "align-bottom-center-text-center": 94 alignment = "text-center justify-content-center align-items-end"; 95 break; 96 case "align-bottom-right-text-right": 97 alignment = "text-end justify-content-end align-items-end"; 98 break; 99 } 100 101 <div class="position-relative h-100@(theme) @(posterHeight) item_@Model.Item.SystemName.ToLower()"> 102 @if (!string.IsNullOrEmpty(groupImage)) 103 { 104 string imageFilter = Model.Item.GetRawValueString("ImageFilter", ""); 105 imageFilter = imageFilter == "no-filter" ? "" : imageFilter; 106 imageFilter = imageFilter == "filter" ? " image-filter" : imageFilter; 107 108 <div class="position-absolute top-0 bottom-0 end-0 start-0@(imageFilter)"> 109 @RenderPartial("Components/Image.cshtml", new FileViewModel { Path = groupImage }, parms) 110 </div> 111 } 112 113 @if (!hideTitle || !hideDescription) 114 { 115 <div class="container-xl h-100 @(contentPadding)"> 116 <div class="h-100 w-100 position-relative d-flex @(alignment)"> 117 <div class="@(maxWidth)"> 118 @if (!hideTitle) 119 { 120 <h1 class="@titleFontSize">@headerName</h1> 121 } 122 123 @if (!hideDescription && !string.IsNullOrEmpty(groupDescription)) 124 { 125 <div class="@descriptionFontSize mb-0-last-child"> 126 @groupDescription 127 </div> 128 } 129 </div> 130 </div> 131 </div> 132 } 133 134 </div> 135 } 136 else if (Pageview.IsVisualEditorMode) 137 { 138 <div class="alert alert-dark m-0" role="alert"> 139 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span> 140 </div> 141 } 142 } 143 else if (Pageview.IsVisualEditorMode) 144 { 145 <div class="alert alert-dark m-0" role="alert"> 146 <span>@Translate("Product group poster: The poster paragraph will be shown here, if any")</span> 147 </div> 148 } 149
All bikes
All bikes
All bikes
New newest product
3535 Many in stock.
3535 Many in stock.
New newest product 2
354 Many in stock.
354 Many in stock.
Product with discount
22 Many in stock.
22 Many in stock.
Product with discount (buy 2)
65735 Many in stock.
65735 Many in stock.
Newest product
2344 Many in stock.
2344 Many in stock.
F-Si Carbon 3 Cross Country Bike MAINs
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 4 Cross Country Bike MainUK
2 Hurry! Limited stock!
2 Hurry! Limited stock!
Habit 3 Trail Bike MAIN
1 Hurry! Limited stock!
1 Hurry! Limited stock!
Habit 4 Trail Bike
1993 Many in stock.
1993 Many in stock.
Habit 5 Full Suspension Mountain Bike
997 Many in stock.
997 Many in stock.
Trail Neo S Mountain Bike
996 Many in stock.
996 Many in stock.
F-Si Carbon 3 Cross Country Bike Red (Red)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 3 Cross Country Bike black (Black)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 4 Cross Country Bike BlackUK (Black)
1 Hurry! Limited stock!
1 Hurry! Limited stock!
F-Si Carbon 4 Cross Country Bike OrangeUK (Orange)
1 Hurry! Limited stock!
1 Hurry! Limited stock!
Habit 4 Trail Bike (Blue)
996 Many in stock.
996 Many in stock.
Habit 4 Trail Bike (Green)
997 Many in stock.
997 Many in stock.
Habit 3 Trail Bike red (Red)
Out of stock.
Out of stock.
Habit 5 Full Suspension Mountain Bike (Black)
997 Many in stock.
997 Many in stock.
Trail Neo S Mountain Bike (Green)
996 Many in stock.
996 Many in stock.
Cujo 1
999 Many in stock.
999 Many in stock.
Cujo 1 (Brown)
999 Many in stock.
999 Many in stock.
F-Si Carbon 3 Cross Country Bike (Green)
79525 Many in stock.
79525 Many in stock.
F-Si Carbon 3 Cross Country Bike (Yellow)
79525 Many in stock.
79525 Many in stock.
Habit Neo 2 Bike x
1973 Many in stock.
1973 Many in stock.
Moterra Neo Carbon 2 Mountain Bike
1994 Many in stock.
1994 Many in stock.
CAAD Optimo 1 Road Bike MAIN
1990 Many in stock.
1990 Many in stock.
CAAD Optimo 1 RED (Red)
996 Many in stock.
996 Many in stock.
CAAD Optimo 1 BLUE (Blue)
991 Many in stock.
991 Many in stock.
Habit Neo 2 red (Red)
1973 Many in stock.
1973 Many in stock.
Habit Neo 2 grey (Grey)
1973 Many in stock.
1973 Many in stock.
CAAD Optimo Sora Bike
997 Many in stock.
997 Many in stock.
Moterra Neo Carbon 2 Mountain Bike (Blue)
996 Many in stock.
996 Many in stock.
Moterra Neo Carbon 2 Mountain Bike (Grey)
997 Many in stock.
997 Many in stock.
Hi-MOD Women's Ultegra Di2 Bike
Out of stock.
Out of stock.
Hi-MOD Women's Ultegra Di2 (Pink)
Out of stock.
Out of stock.
CAAD Optimo Sora (White)
994 Many in stock.
994 Many in stock.
Townie Path Go! 10D EQ Step-Thru
567655 Many in stock.
567655 Many in stock.
Townie Path Go! 10D EQ Step-Thru grey (Grey)
Out of stock.
Out of stock.
Townie Path Go! 10D EQ Step-Thru green (Green)
Out of stock.
Out of stock.
Slash 7 Bike
996 Many in stock.
996 Many in stock.
Slash 7 (red variant) (Red)
Out of stock.
Out of stock.
Slash 7 (green variant) (Green)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 Bike
2995 Many in stock.
2995 Many in stock.
Supercaliber 9.7 (Red)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 (Black)
998 Many in stock.
998 Many in stock.
Supercaliber 9.7 (Green)
999 Many in stock.
999 Many in stock.
Precaliber 16 Girl Bike
1997 Many in stock.
1997 Many in stock.
Precaliber 16 Girl (Violet)
998 Many in stock.
998 Many in stock.
Precaliber 16 Girl (Pink)
998 Many in stock.
998 Many in stock.
Precaliber 20 7-speed Bike
1999 Many in stock.
1999 Many in stock.
Precaliber 20 7-speed (Black)
998 Many in stock.
998 Many in stock.
Precaliber 20 7-speed (Blue)
998 Many in stock.
998 Many in stock.
Wahoo 24 Girl Bike MAIN
3000 Many in stock.
3000 Many in stock.
Wahoo 24 Girl (grey variant) (Grey)
1000 Many in stock.
1000 Many in stock.
Wahoo 24 Girl (purple variant) (Purple)
1000 Many in stock.
1000 Many in stock.
Wahoo 24 Girl (red variant) (Red)
1000 Many in stock.
1000 Many in stock.
Domane Women's SL 6 MAIN
3000 Many in stock.
3000 Many in stock.
Domane SL 6 (red variant) (Red)
1000 Many in stock.
1000 Many in stock.
Domane SL 6 (black variant) (Black)
1000 Many in stock.
1000 Many in stock.