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_4456007afb9245febb3e2b225efc8ca2.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 68
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 805

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

Sort by

Wheel size

Campaign

30 out of 39 products
Load more products
Bontrager Line Pro 40 TLR Boost 27.5 MTB Wheel 30

Bontrager Line Pro 40 TLR Boost 27.5 MTB Wheel 30

trek122

1000 Many in stock.

1000 Many in stock.

£84.87
Bontrager Aeolus XXX Tubular Road Wheel 700

Bontrager Aeolus XXX Tubular Road Wheel 700

trek123

1000 Many in stock.

1000 Many in stock.

£20.22
Bontrager Kovee Elite 23 TLR Boost 29 MTB Wheel

Bontrager Kovee Elite 23 TLR Boost 29 MTB Wheel

trek124

1000 Many in stock.

1000 Many in stock.

£46.79
Bontrager Line Comp 40 TLR Boost 27.5 MTB Wheel

Bontrager Line Comp 40 TLR Boost 27.5 MTB Wheel

trek125

1000 Many in stock.

1000 Many in stock.

£22.69
HollowGram 27,5 SL Wheel

HollowGram 27,5 SL Wheel

can101

Out of stock.

Out of stock.

£90.37
Ibis S35 29

Ibis S35 29" Logo Alloy Boost Wheelset

ib101

950 Many in stock.

950 Many in stock.

£54.71
Ibis S35 29

Ibis S35 29" Logo Carbon Boost Wheelset

ib102

1000 Many in stock.

1000 Many in stock.

£177.68
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod)

00000

1000 Many in stock.

1000 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2001)

trek2001

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2002)

trek2002

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2003)

trek2003

2342 Many in stock.

2342 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2004)

trek2004

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2005)

trek2005

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2006)

trek2006

787 Many in stock.

787 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2007)

trek2007

865 Many in stock.

865 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2008)

trek2008

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2009)

trek2009

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2010)

trek2010

865 Many in stock.

865 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2011)

trek2011

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2012)

trek2012

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2013)

trek2013

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2014)

trek2014

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2015)

trek2015

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2016)

trek2016

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2017)

trek2017

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2018)

trek2018

977 Many in stock.

977 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2019)

trek2019

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2020)

trek2020

Out of stock.

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2021)

trek2021

999 Many in stock.

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2022)

trek2022

566 Many in stock.

566 Many in stock.

£33.10
30 out of 39 products
Load more products
30 out of 39 products
Load more products
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_ceab189d36dd41acb40d3ccf683fc60c.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 68
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 805

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_4456007afb9245febb3e2b225efc8ca2.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 68
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\TemplateRenderingService.cs:line 14
   at Dynamicweb.Rendering.Template.RenderRazorTemplate() in E:\A10\_w\2\s\src\Core\Dynamicweb.Core\Rendering\Template.cs:line 805

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

Wheels

39 products

Wheels

39 products

Wheels

Bontrager Line Pro 40 TLR Boost 27.5 MTB Wheel 30

Bontrager Line Pro 40 TLR Boost 27.5 MTB Wheel 30

trek122

1000 Many in stock.

£84.87

1000 Many in stock.

£84.87
Bontrager Aeolus XXX Tubular Road Wheel 700

Bontrager Aeolus XXX Tubular Road Wheel 700

trek123

1000 Many in stock.

£20.22

1000 Many in stock.

£20.22
Bontrager Kovee Elite 23 TLR Boost 29 MTB Wheel

Bontrager Kovee Elite 23 TLR Boost 29 MTB Wheel

trek124

1000 Many in stock.

£46.79

1000 Many in stock.

£46.79
Bontrager Line Comp 40 TLR Boost 27.5 MTB Wheel

Bontrager Line Comp 40 TLR Boost 27.5 MTB Wheel

trek125

1000 Many in stock.

£22.69

1000 Many in stock.

£22.69
HollowGram 27,5 SL Wheel

HollowGram 27,5 SL Wheel

can101

Out of stock.

£90.37

Out of stock.

£90.37
Ibis S35 29

Ibis S35 29" Logo Alloy Boost Wheelset

ib101

950 Many in stock.

£54.71

950 Many in stock.

£54.71
Ibis S35 29

Ibis S35 29" Logo Carbon Boost Wheelset

ib102

1000 Many in stock.

£177.68

1000 Many in stock.

£177.68
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod)

00000

1000 Many in stock.

£33.10

1000 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2001)

trek2001

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2002)

trek2002

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2003)

trek2003

2342 Many in stock.

£33.10

2342 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2004)

trek2004

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2005)

trek2005

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2006)

trek2006

787 Many in stock.

£33.10

787 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2007)

trek2007

865 Many in stock.

£33.10

865 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2008)

trek2008

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2009)

trek2009

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2010)

trek2010

865 Many in stock.

£33.10

865 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2011)

trek2011

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2012)

trek2012

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2013)

trek2013

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2014)

trek2014

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2015)

trek2015

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2016)

trek2016

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2017)

trek2017

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2018)

trek2018

977 Many in stock.

£33.10

977 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2019)

trek2019

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2020)

trek2020

Out of stock.

£33.10

Out of stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2021)

trek2021

999 Many in stock.

£33.10

999 Many in stock.

£33.10
Bontrager Paradigm CX RSL Road Wheel (family prod)

Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2022)

trek2022

566 Many in stock.

£33.10

566 Many in stock.

£33.10
30 out of 39 products
Load more products

Section header

Vertical navigation

By clicking 'Accept All' you consent that we may collect information about you for various purposes, including: Statistics and Marketing