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
Product 1
3658 Many in stock.
3658 Many in stock.
Product 1 red S (Red - S)
106 Many in stock.
106 Many in stock.
Product 1 red M (Red - M)
222 Many in stock.
222 Many in stock.
Product 1 red L (Red - L)
333 Many in stock.
333 Many in stock.
Product 1 red S (Orange - S)
998 Many in stock.
998 Many in stock.
Product 1 orange M (Orange - M)
997 Many in stock.
997 Many in stock.
Product 1 orange L (Orange - L)
997 Many in stock.
997 Many in stock.
Product 2
494 Many in stock.
494 Many in stock.
Product 3
989 Many in stock.
989 Many in stock.
Product 4
345 Many in stock.
345 Many in stock.
Product 4 red (Red)
962 Many in stock.
962 Many in stock.
Product 4 black (Black)
435 Many in stock.
435 Many in stock.
Product 5
3967 Many in stock.
3967 Many in stock.
Product 5 black (Black)
955 Many in stock.
955 Many in stock.
Product 5 blue (Blue)
942 Many in stock.
942 Many in stock.
Product 5 green (Green)
952 Many in stock.
952 Many in stock.
Product 5 grey (Grey)
345 Many in stock.
345 Many in stock.
Copy of Product 1
3658 Many in stock.
3658 Many in stock.
Copy of Product 1 (Red - S)
111 Many in stock.
111 Many in stock.
Copy of Product 1 (Red - M)
222 Many in stock.
222 Many in stock.
Copy of Product 1 (Red - L)
333 Many in stock.
333 Many in stock.
Copy of Product 1 (Orange - S)
998 Many in stock.
998 Many in stock.
Copy of Product 1 (Orange - M)
997 Many in stock.
997 Many in stock.
Copy of Product 1 (Orange - L)
997 Many in stock.
997 Many in stock.
Copy of Product 2
500 Many in stock.
500 Many in stock.
Copy of Product 3
990 Many in stock.
990 Many in stock.
Copy of Product 4
345 Many in stock.
345 Many in stock.
Copy of Product 4 (Red)
962 Many in stock.
962 Many in stock.
Copy of Product 4 (Black)
Out of stock.
Out of stock.
Copy of Product 5
3967 Many in stock.
3967 Many in stock.
Copy of Product 5 (Black)
949 Many in stock.
949 Many in stock.
Copy of Product 5 (Blue)
948 Many in stock.
948 Many in stock.
Copy of Product 5 (Green)
952 Many in stock.
952 Many in stock.
Copy of Product 5 (Grey)
345 Many in stock.
345 Many in stock.
Product 6
1000 In stock
1000 In stock
Product 7
100 In stock
100 In stock
Product 8
100 In stock
100 In stock
Product 9
100 In stock
100 In stock
Product 10
100 In stock
100 In stock
Product 11
100 In stock
100 In stock
Product 12
100 In stock
100 In stock
Product 13
100 In stock
100 In stock
Product 14
100 In stock
100 In stock
Copy of Product 10
100 In stock
100 In stock
Copy of Product 11
100 In stock
100 In stock
Copy of Product 12
100 In stock
100 In stock
Copy of Product 13
100 In stock
100 In stock
Copy of Product 14
100 In stock
100 In stock
Copy of Product 6
1000 In stock
1000 In stock
Copy of Product 7
100 In stock
100 In stock
Copy of Product 8
100 In stock
100 In stock
Copy of Product 9
100 In stock
100 In stock
Product 15
100 In stock
100 In stock
Product 16
100 In stock
100 In stock
Product 17
99 In stock
99 In stock
Product 18
98 In stock
98 In stock
Product 19
99 In stock
99 In stock
Product 20
99 In stock
99 In stock
Copy of Product 15
100 In stock
100 In stock
Copy of Product 16
100 In stock
100 In stock
Copy of Product 17
100 In stock
100 In stock
Copy of Product 18
100 In stock
100 In stock
Copy of Product 19
100 In stock
100 In stock
Copy of Product 20
100 In stock
100 In stock
Product with + in image name
Out of stock.
Out of stock.
Frequent test
309 Many in stock.
309 Many in stock.
Product with quantity prices
24 Many in stock.
24 Many in stock.
Product with many images and files UK
2861 Many in stock.
2861 Many in stock.
Product with many images and files UK black (Black)
955 Many in stock.
955 Many in stock.
Product with many images and files (Blue)
954 Many in stock.
954 Many in stock.
Product with many images and files (Green)
952 Many in stock.
952 Many in stock.
Product with many images and files (Grey)
Out of stock.
Out of stock.
Specialized Parts List road bike fixed (discontinued)
976 Many in stock.
976 Many in stock.
Discontinued product 0 (no action)
Out of stock.
Out of stock.
Discontinued product 3 (Redirect to replacement product 3 - IN STOCK)
Out of stock.
Out of stock.
Discontinued product 1 (redirect to group)
Out of stock.
Out of stock.
Product with many images and files (no variants) UK
3943 Many in stock.
3943 Many in stock.
Replacement product 2 (In stock)
200 Many in stock.
200 Many in stock.
Replacement product 6 (Not in stock)
Out of stock.
Out of stock.
Replacement product 5 (Discontinued)
34 Many in stock.
34 Many in stock.
Replacement product 3 (In stock)
297 Many in stock.
297 Many in stock.
Discontinued product 2 (Redirect to replacement product 2 - IN STOCK)
Out of stock.
Out of stock.
Discontinued product 4 (Redirect to replacement product 4 - INACTIVE)
Out of stock.
Out of stock.
Discontinued product 6 (Redirect to replacement product 6 - NOT IN STOCK)
Out of stock.
Out of stock.
Discontinued product 5 (Redirect to replacement product 5 - DISCONTINUED)
Out of stock.
Out of stock.
Test ? character
4454 Many in stock.
4454 Many in stock.
Test ' character
4454 Many in stock.
4454 Many in stock.
Test ´ character
4454 Many in stock.
4454 Many in stock.
6" 32T Hacksaw Blades 5/Card
4454 Many in stock.
4454 Many in stock.
Test % character
4454 Many in stock.
4454 Many in stock.
Test # character
4454 Many in stock.
4454 Many in stock.
Test & character
4454 Many in stock.
4454 Many in stock.
Test ` character
4454 Many in stock.
4454 Many in stock.
Test + character
4454 Many in stock.
4454 Many in stock.
Empty custom fields
Out of stock.
Out of stock.
Filled custom fields
Out of stock.
Out of stock.
Related products #1 (1 gr with 2 related)
Out of stock.
Out of stock.
Related products #2 (2 gr with 2 related)
Out of stock.
Out of stock.
Related products #3 (1 gr with 6 related)
Out of stock.
Out of stock.
Related products #4 (2 gr with 6 related)
Out of stock.
Out of stock.
Product with many variants
9600 Many in stock.
9600 Many in stock.
Product with many variants (Black - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (White - L)
100 Many in stock.
100 Many in stock.
Product with many variants (White - M)
100 Many in stock.
100 Many in stock.
Product with many variants (White - S)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XXL)
100 Many in stock.
100 Many in stock.
Bike test (BOM product)
Out of stock.
Out of stock.
Townie Go! 5i Step-Thru Bike x
3967 Many in stock.
3967 Many in stock.
Townie Go! 5i Step-Thru black (Black)
961 Many in stock.
961 Many in stock.
Townie Go! 5i Step-Thru blue (Blue)
954 Many in stock.
954 Many in stock.
Townie Go! 5i Step-Thru green (Green)
952 Many in stock.
952 Many in stock.
Townie Go! 5i Step-Thru grey (Grey)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Disc Tubular Road Wheel 700
1000 Many in stock.
1000 Many in stock.
Product NOT in stock
Out of stock.
Out of stock.
Product NOT in stock - expected
Out of stock.
Out of stock.
Product in stock
991 Many in stock.
991 Many in stock.
Product NOT in stock - Wrong expected
Out of stock.
Out of stock.
Bontrager Anara LTD Women's Cycling Jersey
3658 Many in stock.
3658 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - S)
111 Many in stock.
111 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - M)
221 Many in stock.
221 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - L)
332 Many in stock.
332 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - S)
998 Many in stock.
998 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - M)
997 Many in stock.
997 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - L)
997 Many in stock.
997 Many in stock.
Habit Neo 2 Bike x
1973 Many in stock.
1973 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.
Bontrager Paradigm CX RSL Road Wheel (family prod)
1000 Many in stock.
1000 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2001)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2002)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2003)
2342 Many in stock.
2342 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2004)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2005)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2006)
787 Many in stock.
787 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2007)
865 Many in stock.
865 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2008)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2009)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2010)
865 Many in stock.
865 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2011)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2012)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2013)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2014)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2015)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2016)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2017)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2018)
977 Many in stock.
977 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2019)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2020)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2021)
999 Many in stock.
999 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_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
Examples
Examples
Examples
Product 1
3658 Many in stock.
3658 Many in stock.
Product 1 red S (Red - S)
106 Many in stock.
106 Many in stock.
Product 1 red M (Red - M)
222 Many in stock.
222 Many in stock.
Product 1 red L (Red - L)
333 Many in stock.
333 Many in stock.
Product 1 red S (Orange - S)
998 Many in stock.
998 Many in stock.
Product 1 orange M (Orange - M)
997 Many in stock.
997 Many in stock.
Product 1 orange L (Orange - L)
997 Many in stock.
997 Many in stock.
Product 2
494 Many in stock.
494 Many in stock.
Product 3
989 Many in stock.
989 Many in stock.
Product 4
345 Many in stock.
345 Many in stock.
Product 4 red (Red)
962 Many in stock.
962 Many in stock.
Product 4 black (Black)
435 Many in stock.
435 Many in stock.
Product 5
3967 Many in stock.
3967 Many in stock.
Product 5 black (Black)
955 Many in stock.
955 Many in stock.
Product 5 blue (Blue)
942 Many in stock.
942 Many in stock.
Product 5 green (Green)
952 Many in stock.
952 Many in stock.
Product 5 grey (Grey)
345 Many in stock.
345 Many in stock.
Copy of Product 1
3658 Many in stock.
3658 Many in stock.
Copy of Product 1 (Red - S)
111 Many in stock.
111 Many in stock.
Copy of Product 1 (Red - M)
222 Many in stock.
222 Many in stock.
Copy of Product 1 (Red - L)
333 Many in stock.
333 Many in stock.
Copy of Product 1 (Orange - S)
998 Many in stock.
998 Many in stock.
Copy of Product 1 (Orange - M)
997 Many in stock.
997 Many in stock.
Copy of Product 1 (Orange - L)
997 Many in stock.
997 Many in stock.
Copy of Product 2
500 Many in stock.
500 Many in stock.
Copy of Product 3
990 Many in stock.
990 Many in stock.
Copy of Product 4
345 Many in stock.
345 Many in stock.
Copy of Product 4 (Red)
962 Many in stock.
962 Many in stock.
Copy of Product 4 (Black)
Out of stock.
Out of stock.
Copy of Product 5
3967 Many in stock.
3967 Many in stock.
Copy of Product 5 (Black)
949 Many in stock.
949 Many in stock.
Copy of Product 5 (Blue)
948 Many in stock.
948 Many in stock.
Copy of Product 5 (Green)
952 Many in stock.
952 Many in stock.
Copy of Product 5 (Grey)
345 Many in stock.
345 Many in stock.
Product 6
1000 In stock
1000 In stock
Product 7
100 In stock
100 In stock
Product 8
100 In stock
100 In stock
Product 9
100 In stock
100 In stock
Product 10
100 In stock
100 In stock
Product 11
100 In stock
100 In stock
Product 12
100 In stock
100 In stock
Product 13
100 In stock
100 In stock
Product 14
100 In stock
100 In stock
Copy of Product 10
100 In stock
100 In stock
Copy of Product 11
100 In stock
100 In stock
Copy of Product 12
100 In stock
100 In stock
Copy of Product 13
100 In stock
100 In stock
Copy of Product 14
100 In stock
100 In stock
Copy of Product 6
1000 In stock
1000 In stock
Copy of Product 7
100 In stock
100 In stock
Copy of Product 8
100 In stock
100 In stock
Copy of Product 9
100 In stock
100 In stock
Product 15
100 In stock
100 In stock
Product 16
100 In stock
100 In stock
Product 17
99 In stock
99 In stock
Product 18
98 In stock
98 In stock
Product 19
99 In stock
99 In stock
Product 20
99 In stock
99 In stock
Copy of Product 15
100 In stock
100 In stock
Copy of Product 16
100 In stock
100 In stock
Copy of Product 17
100 In stock
100 In stock
Copy of Product 18
100 In stock
100 In stock
Copy of Product 19
100 In stock
100 In stock
Copy of Product 20
100 In stock
100 In stock
Product with + in image name
Out of stock.
Out of stock.
Frequent test
309 Many in stock.
309 Many in stock.
Product with quantity prices
24 Many in stock.
24 Many in stock.
Product with many images and files UK
2861 Many in stock.
2861 Many in stock.
Product with many images and files UK black (Black)
955 Many in stock.
955 Many in stock.
Product with many images and files (Blue)
954 Many in stock.
954 Many in stock.
Product with many images and files (Green)
952 Many in stock.
952 Many in stock.
Product with many images and files (Grey)
Out of stock.
Out of stock.
Specialized Parts List road bike fixed (discontinued)
976 Many in stock.
976 Many in stock.
Discontinued product 0 (no action)
Out of stock.
Out of stock.
Discontinued product 3 (Redirect to replacement product 3 - IN STOCK)
Out of stock.
Out of stock.
Discontinued product 1 (redirect to group)
Out of stock.
Out of stock.
Product with many images and files (no variants) UK
3943 Many in stock.
3943 Many in stock.
Replacement product 2 (In stock)
200 Many in stock.
200 Many in stock.
Replacement product 6 (Not in stock)
Out of stock.
Out of stock.
Replacement product 5 (Discontinued)
34 Many in stock.
34 Many in stock.
Replacement product 3 (In stock)
297 Many in stock.
297 Many in stock.
Discontinued product 2 (Redirect to replacement product 2 - IN STOCK)
Out of stock.
Out of stock.
Discontinued product 4 (Redirect to replacement product 4 - INACTIVE)
Out of stock.
Out of stock.
Discontinued product 6 (Redirect to replacement product 6 - NOT IN STOCK)
Out of stock.
Out of stock.
Discontinued product 5 (Redirect to replacement product 5 - DISCONTINUED)
Out of stock.
Out of stock.
Test ? character
4454 Many in stock.
4454 Many in stock.
Test ' character
4454 Many in stock.
4454 Many in stock.
Test ´ character
4454 Many in stock.
4454 Many in stock.
6" 32T Hacksaw Blades 5/Card
4454 Many in stock.
4454 Many in stock.
Test % character
4454 Many in stock.
4454 Many in stock.
Test # character
4454 Many in stock.
4454 Many in stock.
Test & character
4454 Many in stock.
4454 Many in stock.
Test ` character
4454 Many in stock.
4454 Many in stock.
Test + character
4454 Many in stock.
4454 Many in stock.
Empty custom fields
Out of stock.
Out of stock.
Filled custom fields
Out of stock.
Out of stock.
Related products #1 (1 gr with 2 related)
Out of stock.
Out of stock.
Related products #2 (2 gr with 2 related)
Out of stock.
Out of stock.
Related products #3 (1 gr with 6 related)
Out of stock.
Out of stock.
Related products #4 (2 gr with 6 related)
Out of stock.
Out of stock.
Product with many variants
9600 Many in stock.
9600 Many in stock.
Product with many variants (Black - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Black - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Blue - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Dark brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Green - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Grey - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Light brown - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Multi - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Orange - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Pink - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Purple - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Red - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Red dotted - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Violet - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (White - L)
100 Many in stock.
100 Many in stock.
Product with many variants (White - M)
100 Many in stock.
100 Many in stock.
Product with many variants (White - S)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (White - XXL)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - L)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - M)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - S)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XL)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XS)
100 Many in stock.
100 Many in stock.
Product with many variants (Yellow - XXL)
100 Many in stock.
100 Many in stock.
Bike test (BOM product)
Out of stock.
Out of stock.
Townie Go! 5i Step-Thru Bike x
3967 Many in stock.
3967 Many in stock.
Townie Go! 5i Step-Thru black (Black)
961 Many in stock.
961 Many in stock.
Townie Go! 5i Step-Thru blue (Blue)
954 Many in stock.
954 Many in stock.
Townie Go! 5i Step-Thru green (Green)
952 Many in stock.
952 Many in stock.
Townie Go! 5i Step-Thru grey (Grey)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Disc Tubular Road Wheel 700
1000 Many in stock.
1000 Many in stock.
Product NOT in stock
Out of stock.
Out of stock.
Product NOT in stock - expected
Out of stock.
Out of stock.
Product in stock
991 Many in stock.
991 Many in stock.
Product NOT in stock - Wrong expected
Out of stock.
Out of stock.
Bontrager Anara LTD Women's Cycling Jersey
3658 Many in stock.
3658 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - S)
111 Many in stock.
111 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - M)
221 Many in stock.
221 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Red - L)
332 Many in stock.
332 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - S)
998 Many in stock.
998 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - M)
997 Many in stock.
997 Many in stock.
Bontrager Anara LTD Women's Cycling Jersey (Orange - L)
997 Many in stock.
997 Many in stock.
Habit Neo 2 Bike x
1973 Many in stock.
1973 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.
Bontrager Paradigm CX RSL Road Wheel (family prod)
1000 Many in stock.
1000 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2001)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2002)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2003)
2342 Many in stock.
2342 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2004)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2005)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2006)
787 Many in stock.
787 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2007)
865 Many in stock.
865 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2008)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2009)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2010)
865 Many in stock.
865 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2011)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2012)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2013)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2014)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2015)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2016)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2017)
999 Many in stock.
999 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2018)
977 Many in stock.
977 Many in stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2019)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2020)
Out of stock.
Out of stock.
Bontrager Paradigm CX RSL Road Wheel (family prod) (trek2021)
999 Many in stock.
999 Many in stock.