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

Gender

Colour

Size

Wheel size

Campaign

30 out of 90 products
Load more products
Bontrager Barbegazi Fat 26 Tyre

Bontrager Barbegazi Fat 26 Tyre

trek101

990 Many in stock.

990 Many in stock.

£13.61
Electra Lux Fat 26 Tyres

Electra Lux Fat 26 Tyres

trek103

1000 Many in stock.

1000 Many in stock.

£10.94
Bontrager Kids' Midfat MTB 20 Tyres

Bontrager Kids' Midfat MTB 20 Tyres

trek104

1000 Many in stock.

1000 Many in stock.

£3.42
Bontrager Flare 1 Rear Light

Bontrager Flare 1 Rear Light

trek105

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£2.05
Electra Retro Headlight

Electra Retro Headlight

trek106

Out of stock.

Out of stock.

£8.70
Bontrager Carbon XXX Saddle

Bontrager Carbon XXX Saddle

trek107
£54.71
Bontrager Arvada Comp Saddle

Bontrager Arvada Comp Saddle

trek108
£6.84
Bontrager Commuter Comp Saddle

Bontrager Commuter Comp Saddle

trek109

998 Many in stock.

998 Many in stock.

£12.58
Electra Cruiser XL Saddle

Electra Cruiser XL Saddle

trek110

1000 Many in stock.

1000 Many in stock.

£5.47
Electra Vinyl Ergo Saddle

Electra Vinyl Ergo Saddle

trek111

998 Many in stock.

998 Many in stock.

£4.92
Retro Textile Saddle

Retro Textile Saddle

trek112

3000 Many in stock.

3000 Many in stock.

£0.00
Electra Chopper Pedal Set

Electra Chopper Pedal Set

trek113

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£2.26
Bontrager XXX Integrated Road Handlebar

Bontrager XXX Integrated Road Handlebar

trek114

Out of stock.

Out of stock.

£69.89
Bontrager XXX Aero Handlebar

Bontrager XXX Aero Handlebar

trek115

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£11.63
Bontrager Elite VR-C Road Handlebar

Bontrager Elite VR-C Road Handlebar

trek116

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£9.57
Bontrager XXX VR-C Road Handlebar

Bontrager XXX VR-C Road Handlebar

trek117

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£47.87
Bontrager Kovee XXX Carbon 35 MTB Handlebar

Bontrager Kovee XXX Carbon 35 MTB Handlebar

trek118

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£21.88
Bontrager Kovee Pro Carbon 35 MTB Handlebar

Bontrager Kovee Pro Carbon 35 MTB Handlebar

trek119

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£31.46
Bontrager Line 35 MTB Handlebar

Bontrager Line 35 MTB Handlebar

trek120

1 Hurry! Limited stock!

1 Hurry! Limited stock!

£8.21
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
Slash C Frameset

Slash C Frameset

trek126

Out of stock.

Out of stock.

£65.24
Specialized Enduro S-Works 29

Specialized Enduro S-Works 29

spe101

933 Many in stock.

933 Many in stock.

£372.05
Specialized Stumpjumper S-Works 29 Frame - 2021

Specialized Stumpjumper S-Works 29 Frame - 2021

spe102

995 Many in stock.

995 Many in stock.

£314.60
Specialized Enduro 29 Frame - 2020

Specialized Enduro 29 Frame - 2020

spe103

998 Many in stock.

998 Many in stock.

£304.34
Fox Racing Shox 38 Factory 29 GRIP2

Fox Racing Shox 38 Factory 29 GRIP2

fox101

918 Many in stock.

918 Many in stock.

£140.75
Fox Racing Shox 38 Performance Elite

Fox Racing Shox 38 Performance Elite

spe104

990 Many in stock.

990 Many in stock.

£129.53
30 out of 90 products
Load more products
30 out of 90 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

Equipment

90 products

Equipment

90 products

Equipment

Bontrager Barbegazi Fat 26 Tyre

Bontrager Barbegazi Fat 26 Tyre

trek101

990 Many in stock.

£13.61

990 Many in stock.

£13.61
Electra Lux Fat 26 Tyres

Electra Lux Fat 26 Tyres

trek103

1000 Many in stock.

£10.94

1000 Many in stock.

£10.94
Bontrager Kids' Midfat MTB 20 Tyres

Bontrager Kids' Midfat MTB 20 Tyres

trek104

1000 Many in stock.

£3.42

1000 Many in stock.

£3.42
Bontrager Flare 1 Rear Light

Bontrager Flare 1 Rear Light

trek105

1 Hurry! Limited stock!

£2.05

1 Hurry! Limited stock!

£2.05
Electra Retro Headlight

Electra Retro Headlight

trek106

Out of stock.

£8.70

Out of stock.

£8.70
Bontrager Carbon XXX Saddle

Bontrager Carbon XXX Saddle

trek107
£54.71
£54.71
Bontrager Arvada Comp Saddle

Bontrager Arvada Comp Saddle

trek108
£6.84
£6.84
Bontrager Commuter Comp Saddle

Bontrager Commuter Comp Saddle

trek109

998 Many in stock.

£12.58

998 Many in stock.

£12.58
Electra Cruiser XL Saddle

Electra Cruiser XL Saddle

trek110

1000 Many in stock.

£5.47

1000 Many in stock.

£5.47
Electra Vinyl Ergo Saddle

Electra Vinyl Ergo Saddle

trek111

998 Many in stock.

£4.92

998 Many in stock.

£4.92
Retro Textile Saddle

Retro Textile Saddle

trek112

3000 Many in stock.

£0.00

3000 Many in stock.

£0.00
Electra Chopper Pedal Set

Electra Chopper Pedal Set

trek113

1 Hurry! Limited stock!

£2.26

1 Hurry! Limited stock!

£2.26
Bontrager XXX Integrated Road Handlebar

Bontrager XXX Integrated Road Handlebar

trek114

Out of stock.

£69.89

Out of stock.

£69.89
Bontrager XXX Aero Handlebar

Bontrager XXX Aero Handlebar

trek115

1 Hurry! Limited stock!

£11.63

1 Hurry! Limited stock!

£11.63
Bontrager Elite VR-C Road Handlebar

Bontrager Elite VR-C Road Handlebar

trek116

1 Hurry! Limited stock!

£9.57

1 Hurry! Limited stock!

£9.57
Bontrager XXX VR-C Road Handlebar

Bontrager XXX VR-C Road Handlebar

trek117

1 Hurry! Limited stock!

£47.87

1 Hurry! Limited stock!

£47.87
Bontrager Kovee XXX Carbon 35 MTB Handlebar

Bontrager Kovee XXX Carbon 35 MTB Handlebar

trek118

1 Hurry! Limited stock!

£21.88

1 Hurry! Limited stock!

£21.88
Bontrager Kovee Pro Carbon 35 MTB Handlebar

Bontrager Kovee Pro Carbon 35 MTB Handlebar

trek119

1 Hurry! Limited stock!

£31.46

1 Hurry! Limited stock!

£31.46
Bontrager Line 35 MTB Handlebar

Bontrager Line 35 MTB Handlebar

trek120

1 Hurry! Limited stock!

£8.21

1 Hurry! Limited stock!

£8.21
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
Slash C Frameset

Slash C Frameset

trek126

Out of stock.

£65.24

Out of stock.

£65.24
Specialized Enduro S-Works 29

Specialized Enduro S-Works 29

spe101

933 Many in stock.

£372.05

933 Many in stock.

£372.05
Specialized Stumpjumper S-Works 29 Frame - 2021

Specialized Stumpjumper S-Works 29 Frame - 2021

spe102

995 Many in stock.

£314.60

995 Many in stock.

£314.60
Specialized Enduro 29 Frame - 2020

Specialized Enduro 29 Frame - 2020

spe103

998 Many in stock.

£304.34

998 Many in stock.

£304.34
Fox Racing Shox 38 Factory 29 GRIP2

Fox Racing Shox 38 Factory 29 GRIP2

fox101

918 Many in stock.

£140.75

918 Many in stock.

£140.75
Fox Racing Shox 38 Performance Elite

Fox Racing Shox 38 Performance Elite

spe104

990 Many in stock.

£129.53

990 Many in stock.

£129.53
30 out of 90 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