Hawksdale Carbon UL
Ultraleichte Carbon-Trekkingstöcke mit geschmiedeten Aluminiumverschlüssen, ergonomischen Schaumgriffen und austauschbaren Spitzen für optimale Leistung auf jedem Terrain.
- Gefertigt aus 66% Kohlefaserrohren für hohe Festigkeit und geringes Gewicht.
- Federleichte Konstruktion – Wiegt nur 167 g pro Pole für müheloses Trekking
- Das geschmiedete Aluminium-Verriegelungssystem ermöglicht zuverlässige Höhenanpassungen von 115 bis 135 cm.
Auf Lager
UVP
129,95
109,95 €
- Die Hawksdale Carbon UL Trekkingstöcke sind für außergewöhnliche Leistung und Zuverlässigkeit in vielfältigem Gelände konzipiert. Gefertigt aus 66% Carbonfaser-Schaftmaterial, bieten diese Stöcke hohe Festigkeit bei minimalem Gewicht. Das geschmiedete Aluminium-Sicherungssystem ermöglicht einfache Höhenanpassungen von 115 bis 135 cm und bietet optimalen Halt für verschiedene Benutzer und Bedingungen. Mit einem federleichten Aufbau von nur 167 g pro Stock maximiert der Hawksdale den Komfort während längerer Nutzung. Der leichte Schaumgriff sorgt für einen sicheren Halt, ergänzt durch einen atmungsaktiven, feuchtigkeitsableitenden Riemen. Eine optimierte Gelenkstruktur erhöht die Haltbarkeit, während austauschbare Technikkappen und die mitgelieferten Schraubschneeaufsätze Vielseitigkeit für schneereiche oder weiche Böden bieten.
- Material
- Carbon & Aluminium
- Größe
- Bis zu 135 cm
- Farbe
- Black
- Packmaß
- 42 cm
- Inhalt
- 2-teiliges Set
- Gewicht
- 334 g/set
- EAN
- 5709388159687
- Number
- 690386
- Gefertigt aus 66% Kohlefaserrohren für hohe Festigkeit und geringes Gewicht.
- Federleichte Konstruktion – Wiegt nur 167 g pro Pole für müheloses Trekking
- Das geschmiedete Aluminium-Verriegelungssystem ermöglicht zuverlässige Höhenanpassungen von 115 bis 135 cm.
- Leichtgewichtiger Schaumstoffgriff mit großem Halt und einem atmungsaktiven, feuchtigkeitsableitenden Riemen.
- Optimierte Verbindungsstruktur für verbesserte Festigkeit und langanhaltende Zuverlässigkeit
- Inklusive aufschraubbarer Schneeteller für den Einsatz in schneereichem oder weichem Gelände
- Wechselbares Techniktip-System, kompatibel mit sowohl Hartmetall- als auch Gummispitzen (beide enthalten)
Error executing template "Designs/Swift/Paragraph/Custom_Swift_ProductComponentSlider.cshtml" Microsoft.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server) ---> System.ComponentModel.Win32Exception (53): The network path was not found. at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides) at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternal(Boolean errorsExpected) at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator.InitializeReader(Enumerator enumerator) at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.Enumerator.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at Oase.Backend.Services.DinoService.GetOtherLookedAt(String Itemnumber, String Site, Int32 limit) at CompiledRazorTemplates.Dynamic.RazorEngine_e1efccd524964becbf0fa658e86cb14f.ExecuteAsync() at RazorEngine.Templating.TemplateBase.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineCore.RunTemplate(ICompiledTemplate template, TextWriter writer, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.DynamicWrapperService.Run(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass23_0.<Run>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at RazorEngine.Templating.RazorEngineServiceExtensions.Run(IRazorEngineService service, String name, Type modelType, Object model, DynamicViewBag viewBag) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate() ClientConnectionId:00000000-0000-0000-0000-000000000000 Error Number:53,State:0,Class:20
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 2 @using Dynamicweb.Core 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 5 @{ 6 ProductViewModel product = null; 7 IList<ProductViewModel> products = new List<ProductViewModel> { }; 8 IList<ProductGroupViewModel> groups = new List<ProductGroupViewModel> { }; 9 10 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 11 { 12 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 13 } 14 else if (Pageview.Page.Item["DummyProduct"] != null && Pageview.IsVisualEditorMode) 15 { 16 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 17 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 18 19 if (productList?.Products is object) 20 { 21 product = productList.Products[0]; 22 } 23 } 24 25 string ProductSliderService = GetPageIdByNavigationTag("ProductSliderService") != 0 ? GetPageIdByNavigationTag("ProductSliderService").ToString() : ""; 26 string GroupSliderService = GetPageIdByNavigationTag("GroupSliderService") != 0 ? GetPageIdByNavigationTag("GroupSliderService").ToString() : ""; 27 28 string layout = Model.Item.GetRawValueString("Layout") == "slider" ? "ProductSliderComponent" : "ProductGridComponent"; 29 string lazyHeight = Model.Item.GetBoolean("SetMinHeightForLazyLoading") ? "min-height: 360px" : ""; 30 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 31 32 //Source type 33 string sourceType = Model.Item.GetRawValueString("RelationType", "selected"); 34 int itemSourcePageId = Convert.ToInt32(Model.Item.GetRawValueString("ListComponentSource", "0")); 35 36 var pageService = new Dynamicweb.Content.PageService(); 37 itemSourcePageId = itemSourcePageId > 0 && pageService.GetPageOrLanguage(itemSourcePageId, Pageview.AreaID) != null ? pageService.GetPageOrLanguage(itemSourcePageId, Pageview.AreaID).ID : itemSourcePageId; 38 39 var itemListArray = Model.Item.GetList("ProductGroupList")?.SelectedValues.ToArray(); 40 41 //--- PRODUCTS --- 42 if (sourceType == "selected") 43 { 44 ProductListViewModel SelectedProducts = Model.Item.GetValue<ProductListViewModel>("SelectedProducts"); 45 if (SelectedProducts != null) 46 { 47 foreach (var SelectedProduct in SelectedProducts.Products) 48 { 49 products.Add(SelectedProduct); 50 } 51 } 52 } 53 54 //--- GROUPS --- 55 if (sourceType == "selected-groups") 56 { 57 IList<ProductGroupViewModel> SelectedGroups = Model.Item.GetValue<IList<ProductGroupViewModel>>("SelectedGroups"); 58 if (SelectedGroups != null) 59 { 60 foreach (var group in SelectedGroups) 61 { 62 groups.Add(group); 63 } 64 } 65 } 66 67 //--- PRODUCTS IN A GROUP --- 68 if (sourceType == "group-products") 69 { 70 var productService = new Dynamicweb.Ecommerce.Products.ProductService(); 71 if (itemListArray != null && itemListArray.Any()) 72 { 73 var productsInGroup = productService.GetProductsByGroupId(itemListArray.First(), true, Pageview.Area.EcomLanguageId, false); 74 itemListArray = productsInGroup.Where(a => a.DefaultPrice > 0).Select(a => a.Number).ToArray(); 75 } 76 } 77 78 //Create group id collection and products id collection strings 79 string productIds = products.Count > 0 ? string.Join(",", products.Select(a => a.Id)) : ""; 80 string groupIds = groups.Count > 0 ? string.Join(",", groups.Select(a => a.Id)) : ""; 81 82 var ParagraphTitle = Model.Item.GetString("Title"); 83 var ProductsCount = Model.Item.GetDecimal("ProductsCount"); 84 var ProductsCountMobile = Model.Item.GetDecimal("ProductsCountMobile"); 85 var ItemLimit = Model.Item.GetInt32("ItemLimit"); 86 ItemLimit = ItemLimit == 0 ? 10 : ItemLimit; 87 var TitlePosition = Model.Item.GetString("TitlePosition", "center"); 88 var TitleArrow = Model.Item.GetString("ShowTitleArrow"); 89 } 90 @if (Pageview.IsVisualEditorMode == true) 91 { 92 <div class="alert alert-dark" role="alert"> 93 <span>Content slider for: @ParagraphTitle</span> 94 </div> 95 96 } else 97 { 98 var showLocalSource = "local"; 99 100 // Url to slider service page 101 string url = "/Default.aspx?ID=" + ProductSliderService; 102 103 // Product optional extra 104 if (sourceType == "optional-extra") 105 { 106 var MainProductId = Dynamicweb.Context.Current.Request.QueryString.Get("MainProductId"); 107 string? ProductOptionalExtra; 108 if (!string.IsNullOrWhiteSpace(MainProductId)) 109 { 110 ProductOptionalExtra = MainProductId; 111 } else 112 { 113 ProductOptionalExtra = product?.ProductFields.GetValueOrDefault("OptionalExtra")?.Value.ToString(); 114 115 } 116 itemListArray = ($"{ProductOptionalExtra}").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).ToArray(); 117 } 118 119 // Also bought from "Dino" 120 if (sourceType == "AlsoBoughtDino") 121 { 122 if(product != null) 123 { 124 itemListArray = new Oase.Backend.Services.DinoService().GetOtherLookedAt(product.Number, Pageview.Area.Name, ItemLimit); 125 } 126 } 127 128 // Bestsellers from "Dino" 129 if (sourceType == "BestsellersDino") 130 { 131 itemListArray = new Oase.Backend.Services.DinoService().GetBestsellers(Pageview.Area.Name, ItemLimit); 132 } 133 134 // Cookie - Favorites and recent products 135 if (sourceType == "favorites" || sourceType == "recently-viewed") 136 { 137 itemListArray = [""]; 138 showLocalSource = sourceType; 139 } 140 141 @if (itemListArray?.Length > 0) 142 { 143 <form method="post" action="@url" id="ContentSliderForm_@Model.ID" data-localsource="@showLocalSource" 144 data-response-target-element="ContentSlider_@Model.ID" 145 data-preloader="inline" data-update-url="false" 146 class="item_@Model.Item.SystemName.ToLower()"> 147 148 <input type="hidden" name="ParagraphId" value="@Model.ID" /> 149 <input type="hidden" name="SortOrder" value="ASC"> 150 <input type="hidden" name="SourceType" value="@sourceType"> 151 <input type="hidden" name="TitlePosition" value="@TitlePosition"> 152 <input type="hidden" name="TitleArrow" value="@TitleArrow"> 153 <input type="hidden" name="itemSourcePageId" value="@itemSourcePageId"> 154 <input type="hidden" name="ParagraphTitle" value="@ParagraphTitle"> 155 <input type="hidden" name="ListOfIds" value="@string.Join(",", itemListArray)"> 156 <input type="hidden" name="MainProductId" value="@string.Join(",", itemListArray)"> 157 @if (ProductsCount != 0) 158 { 159 <input type="hidden" name="ProductsCount" value="@ProductsCount.ToString().Replace(",", ".")"> 160 } 161 @if (ProductsCountMobile != 0) 162 { 163 <input type="hidden" name="ProductsCountMobile" value="@ProductsCountMobile.ToString().Replace(",", ".")"> 164 } 165 </form> 166 167 <div class="w-100 h-100@(theme)"> 168 <div id="@Model.ID" class="user-select-none" style="scroll-margin-top:var(--header-height,150px)"></div> 169 <div id="ContentSlider_@(Model.ID)" class="h-100" style="@lazyHeight"> 170 <p class="grid placeholder-glow" style="height:400px;"> 171 <span class="placeholder g-col-3 rounded"></span> 172 <span class="placeholder g-col-3 rounded"></span> 173 <span class="placeholder g-col-3 rounded"></span> 174 <span class="placeholder g-col-3 rounded"></span> 175 </p> 176 </div> 177 </div> 178 179 <link rel="stylesheet" href="/Files/Templates/Designs/Swift/Assets/css/swiper-bundle.min.css" /> 180 <script src="/Files/Templates/Designs/Swift/Assets/js/swiper-bundle.min.js"></script> 181 <script type="module"> 182 const productSliderContainer = document.querySelector("#ContentSlider_@Model.ID"); 183 const productSliderForm = document.querySelector("#ContentSliderForm_@Model.ID"); 184 185 if (productSliderForm.dataset.localsource == 'favorites') { 186 let localItems = JSON.parse(localStorage.getItem('favorites-' + @(Pageview.Area.EcomShopId.Replace("SHOP",""))) || '[]'); 187 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 188 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 189 } 190 if (productSliderForm.dataset.localsource == 'recently-viewed') { 191 let localItems = JSON.parse(localStorage.getItem('recently-viewed') || '[]'); 192 productSliderForm.querySelector('[name="ListOfIds"]').value = localItems.toString(); 193 productSliderForm.querySelector('[name="MainProductId"]').value = localItems.toString(); 194 } 195 196 swift.PageUpdater.Update(productSliderForm); 197 productSliderForm.addEventListener("updated.swift.pageupdater", function (e) { 198 if (e.detail.html === "") { 199 productSliderContainer.classList.add("d-none"); 200 } 201 }); 202 </script> 203 } 204 }


