Professionelle Ausrüstung für höchste Ansprüche in der grünen Branche

Entdecken Sie unsere große Auswahl an Werkzeugen und Materialien – zuverlässig, maßgeschneidert und von bester Qualität. Wir bieten persönliche Beratung und schnelle Lieferung für Profis in der Weihnachtsbaumproduktion, Forstwirtschaft, Baumschulen, Gärtnereien, Landschaftsbau sowie Obst- und Beerenanbau.

Für Sie ausgewählt

Byström Optrækker, Rodinator

630009

Byström Optrækker, Rodinator

EUR 0,00

(EUR 0,00 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Junglekniv, m/læderhåndtag

670115

Schweizer Gertel

EUR 35,70

(EUR 30,00 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Hegnspæl, galvaniseret vandrør, 2 m, 1,2

710076

Hohlrohr zum Zaunbau - 200 cm

EUR 5,89

(EUR 4,95 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Hegnspæl, galvaniseret vandrør, 2,3 m, 1,2

710077

Hohlrohr zum Zaunbau - 233 cm

EUR 7,08

(EUR 5,95 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Signumat, hammer, 3K

651810

Signumat-Hammer 3K

EUR 214,20

(EUR 180,00 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Kompressor komplet MC 550 Campagnola

6956002

Campagnola MC 550 Kompressor

EUR 2.374,05

(EUR 1.995,00 Eks. moms)

Wenige Waren auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Lyngle blad 45 cm

670101

Heidesensenblatt

EUR 53,55

(EUR 45,00 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Afsætningspæle, bøgetræ, m/rød top, 23 x 23 mm, 25 stk./bund

726296

Absteckpfosten mit rotem Kopf

EUR 0,00

(EUR 0,00 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

MAX, hæfteklammer, 604E-L, pakn. à 4800 stk.

721105

MAX Heftklammern

EUR 3,33

(EUR 2,80 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Hegnspæl, stålprofil, 2,2 m, m/22 trådfangere

710080

Zaunpfosten aus Stahl

EUR 9,70

(EUR 8,15 Eks. moms)

Auf Lager (Tage Lieferzeit: 2-3)

Max stock level is reached

Error executing template "/Designs/Swift/Grid/Page/RowTemplates/Shop_Campaigns.cshtml"
System.ArgumentException: An item with the same key has already been added.
   at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
   at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
   at Dalgas.Custom.Services.ContentRelationService.GetRelatedPagesByUrlAndParameters(String url, List`1 parameters, Int32 pageSize) in D:\a\1\s\Custom\Services\ContentRelationService.cs:line 81
   at Dalgas.Custom.Services.ContentRelationService.GetPagesByIndustries(String pageItemType, Int32 pageSize) in D:\a\1\s\Custom\Services\ContentRelationService.cs:line 455
   at CompiledRazorTemplates.Dynamic.RazorEngine_62df665838594aee873bb942368f4dfa.Execute() in E:\Solutions\dalgas\Files\Templates\Designs\Swift\Grid\Page\RowTemplates\Shop_Campaigns.cshtml:line 143
   at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader)
   at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag)
   at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer)
   at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter)
   at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template)
   at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template)
   at Dynamicweb.Rendering.Template.RenderRazorTemplate()

1 @inherits Dynamicweb.Rendering.ViewModelTemplate<GridRowViewModel> 2 @using System 3 @using System.Collections.Generic 4 @using System.Linq 5 @using System.Web 6 @using Dalgas.Custom.Models.Content 7 @using Dalgas.Custom.Services 8 @using Dalgas.Custom.ViewModels.UI 9 @using Dynamicweb.Content 10 @using Dynamicweb.Frontend 11 @using Dynamicweb.Ecommerce.ProductCatalog 12 @using Page = Dynamicweb.Content.Page 13 14 @using System 15 @using System.Collections.Generic 16 @using System.Linq 17 @using Dalgas.Custom.ViewModels.UI 18 @using Dynamicweb.Content 19 @using Dynamicweb.Ecommerce.ProductCatalog 20 @using Dynamicweb.Frontend 21 @using ParagraphService = Dalgas.Custom.Services.ParagraphService 22 23 @*TODO: Move these functions onto the model *@ 24 25 @functions 26 { 27 28 public string GetSectionClassList(GridRowViewModel model, string overwriteTheme = "") 29 { 30 var returnValues = new List<string> 31 { 32 $"item_{model.Item.SystemName.ToLower()}" 33 }; 34 35 if (Services.Grids.GetGridRowById(model.Id).Sort == 1) 36 { 37 returnValues.Add("dalgas-section-first-on-page"); 38 } 39 40 var sectionBackgroundTheme = model.Item.GetItem("ColorScheme")?.GetString("ColorScheme") ?? string.Empty; 41 42 if (!string.IsNullOrEmpty(overwriteTheme)) 43 { 44 sectionBackgroundTheme = overwriteTheme; 45 } 46 47 // Add theme class if it exists 48 if (!string.IsNullOrWhiteSpace(sectionBackgroundTheme)) 49 { 50 if (sectionBackgroundTheme.Contains("default")) 51 { 52 returnValues.Add("theme theme-light"); 53 } 54 else 55 { 56 returnValues.Add($"theme {sectionBackgroundTheme.Replace(" ", "").Trim().ToLower()}"); 57 } 58 } 59 60 // Determine if top padding should be removed 61 62 string removeTopPadding = model.Item.GetItem("ColorScheme")?.GetString("RemoveTopPadding"); 63 64 returnValues.Add("pb-6"); 65 if (removeTopPadding != "enable") 66 { 67 returnValues.Add("pt-6"); 68 } 69 70 return string.Join(" ", returnValues); 71 } 72 73 } 74 75 76 @{ 77 IEnumerable<HeadingViewModel> headings = ParagraphService.Instance.GetHeadingsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Headings")); 78 string text = Model.Item.GetItem("Paragraph_Text")?.GetString("Text"); 79 string lead = Model.Item.GetItem("Paragraph_Text")?.GetString("Lead"); 80 IEnumerable<ButtonViewModel> buttons = ParagraphService.Instance.GetButtonsByItems(Model.Item?.GetItem("Paragraph_Text")?.GetItems("Buttons")); 81 82 bool hasImage = Model.Item.GetItem("Paragraph_Image")?.GetFile("Image") != null; 83 bool hasText = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Text")); 84 bool hasLead = !string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Text")?.GetString("Lead")); 85 bool hasHeading = headings.Any(); 86 bool hasButton = buttons.Any(); 87 88 var theme = Model.Item.GetItem("ColorScheme")?.GetString("ColorScheme"); 89 var fifthElementTheme = "fifth-element-color-" + Model.Item?.GetItem("ColorScheme")?.GetString("FifthElementColor"); 90 91 var sectionClassList = GetSectionClassList(Model); 92 93 var image = string.Empty; 94 var imageParameters = new Dictionary<string, object>(); 95 96 string layout = string.Empty; 97 Boolean enableFifthElement = false; 98 if (Model?.Item != null) 99 { 100 var paragraphLayout = Model.Item.GetItem("Paragraph_Layout"); 101 102 if (paragraphLayout != null) 103 { 104 layout = paragraphLayout.GetString("Layout"); 105 106 enableFifthElement = !string.IsNullOrEmpty(paragraphLayout.GetString("Layout_FifthElement")); 107 } 108 } 109 110 if (!string.IsNullOrEmpty(Model.Item?.GetItem("Paragraph_Image")?.GetFile("Image")?.Path)) 111 { 112 image = Model.Item.GetItem("Paragraph_Image").GetFile("Image").Path; 113 imageParameters.Add("alt", Model.Item.GetItem("Paragraph_Image")?.GetString("ImageAltText")); 114 int xPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromLeft ?? 50; 115 int yPos = Model.Item.GetItem("Paragraph_Image").GetFile("Image")?.FocalPositionFromTop ?? 50; 116 string cssPosition = $"{xPos}% {yPos}%"; 117 imageParameters.Add("style", "object-position:" + cssPosition); 118 } 119 120 LinkViewModel imageLink = new LinkViewModel(); 121 if (Model.Item?.GetItem("Paragraph_Image")?.GetItem("Link") != null && !string.IsNullOrEmpty(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link").GetString("ButtonLink"))) 122 { 123 imageLink = ParagraphService.Instance.GetLinkByItem(Model?.Item?.GetItem("Paragraph_Image")?.GetItem("Link")); 124 } 125 126 string fifthElementIconPath = "/Files/Templates/Designs/Swift/Assets/Images/DalgasFifthElements/"; 127 } 128 129 130 @{ 131 string strTitle = string.Empty; 132 string strSummary = string.Empty; 133 string strImage = string.Empty; 134 string strImage2 = string.Empty; 135 string strLink = string.Empty; 136 137 ClassList colClasslist = new ClassList("js-content-container content-container justify-content-between d-flex col-12"); 138 ClassList cardTextClasslist = new ClassList(string.Empty); 139 ClassList cardTextColContainerClasslist = new ClassList("d-flex gap-4 h-100 justify-content-between"); 140 ClassList cardTextColClasslist = new ClassList("col"); 141 ClassList headerSize = new ClassList(string.Empty); 142 143 var queryResult = ContentRelationService.Instance.GetCampaignsByIndustries(); 144 145 IList<ItemViewModel> manuallyPickedItems = Model.Item?.GetItems("ManuallyPicked") ?? Enumerable.Empty<ItemViewModel>().ToList(); 146 bool hasManuallyPickedItems = manuallyPickedItems.Any(); 147 List<string> pageIds = new List<string>(); 148 149 150 if (hasManuallyPickedItems) 151 { 152 pageIds.AddRange( 153 manuallyPickedItems 154 .Select(mpi => mpi.Fields.FirstOrDefault(f => f.Name == "Page")?.GetLink()) 155 .Where(link => link != null && link.PageId > 0) 156 .Select(link => link.PageId.ToString()) 157 ); 158 } 159 else if (queryResult.Results.Any()) 160 { 161 pageIds.AddRange(queryResult.Results.Select(qrr => qrr["PageId"].ToString())); 162 } 163 164 var contentType = Model.Item.GetItem("Content")?.GetString("Content"); 165 ClassList imageAspectRatio = new ClassList("ratio"); 166 167 FileViewModel featuredListImage = new FileViewModel(); 168 FileViewModel featuredListImage2 = new FileViewModel(); 169 170 int itemsToRender = int.TryParse(Model.Item.GetItem("Content")?.GetString("NumbersOfItemsToShow"), out int numberToShow) ? numberToShow : 1; 171 172 string campaignLayout = Model.Item.GetItem("Content").GetString("Layout"); 173 174 if (itemsToRender == 1) 175 { 176 headerSize.Add("h2"); 177 imageAspectRatio.Add("ratio-16x9"); 178 colClasslist.Add("flex-column col-lg mb-4"); 179 cardTextColContainerClasslist.Add("flex-column pt-4 col-8"); 180 } 181 else 182 { 183 headerSize.Add("h4"); 184 imageAspectRatio.Add("ratio-16x9"); 185 // Call the function with the updated sectionClassList 186 sectionClassList = GetSectionClassList(Model, "theme-light"); 187 if (campaignLayout == "horizontal") 188 { 189 cardTextClasslist.Add("theme p-4 pt-5 col-lg-6 " + theme); 190 colClasslist.Add("flex-column flex-lg-row col-12 mb-4"); 191 cardTextColClasslist.Add("d-flex flex-column justify-content-end"); 192 cardTextColContainerClasslist.Add("flex-column col-lg-8"); 193 } 194 else if (campaignLayout == "vertical") 195 { 196 cardTextClasslist.Add("theme p-4 pt-5 h-100 " + theme); 197 colClasslist.Add("flex-column col-lg mb-4"); 198 cardTextColContainerClasslist.Add("flex-column flex-lg-row"); 199 if (itemsToRender == 3) 200 { 201 cardTextColContainerClasslist.Remove("gap-4"); 202 cardTextColContainerClasslist.Remove("flex-lg-row"); 203 } 204 } 205 } 206 } 207 208 @if (queryResult.Results.Any() || manuallyPickedItems.Any()) 209 { 210 const string offsetKey = "GridRowItemOffset"; 211 212 List<string> availablePages; 213 214 if (!hasManuallyPickedItems && queryResult.Results.Any()) 215 { 216 if (HttpContext.Current.Items[offsetKey] == null) 217 { 218 HttpContext.Current.Items[offsetKey] = 0; 219 } 220 221 int globalOffset = (int)HttpContext.Current.Items[offsetKey]; 222 223 availablePages = pageIds.Skip(globalOffset).Take(itemsToRender).ToList(); 224 HttpContext.Current.Items[offsetKey] = globalOffset + itemsToRender; 225 } 226 else 227 { 228 availablePages = pageIds.Take(itemsToRender).ToList(); 229 } 230 231 if (availablePages.Any()) 232 { 233 <section id="section-@Model.Id" class="@sectionClassList" data-swift-gridrow> 234 <div class="container-xl"> 235 <div class="row justify-content-center"> 236 <div class="col-12 @(itemsToRender == 1 ? "col-lg-10" : string.Empty)"> 237 <div class="row"> 238 <span> 239 @string.Join("", headings.Select(h => h.ToString())) 240 </span> 241 242 @if (!string.IsNullOrEmpty(lead)) 243 { 244 <p class="lead">@lead</p> 245 } 246 247 @text 248 249 250 @if (buttons.Any()) 251 { 252 <div class="d-flex flex-wrap gap-3"> 253 @foreach (ButtonViewModel button in buttons) 254 { 255 @button 256 } 257 </div> 258 } 259 260 @{ 261 ButtonViewModel btnViewResult = new ButtonViewModel 262 { 263 Text = Translate("View more"), 264 Type = ButtonType.Link, 265 DisplayType = ButtonDisplayType.Primary 266 }; 267 if (itemsToRender == 3) 268 { 269 btnViewResult.DisplayType = ButtonDisplayType.Link; 270 } 271 } 272 273 @foreach (string pageId in availablePages) 274 { 275 if (int.TryParse(pageId, out int intPageId) && intPageId == PageView.Current().Page.ID) 276 { 277 continue; 278 } 279 280 Page page = Services.Pages.GetPage(intPageId); 281 282 if (page == null) 283 { 284 continue; 285 } 286 287 strTitle = page.Item["Title"]?.ToString(); 288 strSummary = page.Item["Summary"]?.ToString(); 289 strImage = page.Item["CoverImage"] == null ? string.Empty : page.Item["CoverImage"]?.ToString(); 290 strImage2 = page.Item["CoverImage2nd"] == null ? string.Empty : page.Item["CoverImage2nd"]?.ToString(); 291 btnViewResult.Id = "pageId_" + page.ID; 292 btnViewResult.Url = "/Default.aspx?ID=" + page.ID; 293 294 int ecommercePageId = ContextService.GetEcommercePageId(); 295 296 string linkToGroudId = string.Empty; 297 if (page.Item != null && page.Item["LinkToEcomGroup"] != null) 298 { 299 linkToGroudId = page.Item["LinkToEcomGroup"].ToString(); 300 } 301 linkToGroudId = linkToGroudId.Replace("g_", string.Empty); 302 303 if (!string.IsNullOrEmpty(linkToGroudId)) 304 { 305 btnViewResult.Url = "/Default.aspx?ID=" + ecommercePageId + "&GroupID=" + linkToGroudId; 306 } 307 308 int jpgIndex = strImage?.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase) ?? -1; 309 if (jpgIndex != -1) 310 { 311 strImage = strImage.Substring(0, jpgIndex + 4); 312 } 313 314 int jpgIndex2 = strImage2?.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase) ?? -1; 315 if (jpgIndex2 != -1) 316 { 317 strImage2 = strImage2.Substring(0, jpgIndex2 + 4); 318 } 319 320 featuredListImage = ViewModelFactory.CreateFieldFileValueView(strImage); 321 featuredListImage2 = ViewModelFactory.CreateFieldFileValueView(strImage2); 322 323 var currentColClasslist = new ClassList(colClasslist.ToString()); 324 if (campaignLayout == "horizontal" && availablePages.IndexOf(pageId) % 2 == 1) 325 { 326 currentColClasslist.Add("flex-lg-row-reverse"); 327 } 328 329 330 <div class="@currentColClasslist"> 331 <figure class="ratio @imageAspectRatio m-0"> 332 <a href="@btnViewResult.Url"> 333 @RenderPartial("Components/Image.cshtml", featuredListImage ?? new FileViewModel()) 334 </a> 335 </figure> 336 <div class="@cardTextClasslist"> 337 <div class="@cardTextColContainerClasslist"> 338 <div class="@cardTextColClasslist"> 339 <h3 class="@headerSize"> 340 <a href="@btnViewResult.Url" class="text-decoration-none"> 341 @strTitle 342 </a> 343 </h3> 344 @if (strSummary != null) 345 { 346 <span class="small">@strSummary</span> 347 } 348 </div> 349 <div class="align-items-end d-flex"> 350 @RenderModel(btnViewResult) 351 </div> 352 </div> 353 </div> 354 </div> 355 356 if (itemsToRender == 1) 357 { 358 <div class="col-6 d-none d-lg-flex"> 359 <figure class="ratio m-0"> 360 <a href="@btnViewResult.Url"> 361 @RenderPartial("Components/Image.cshtml", featuredListImage2 ?? new FileViewModel()) 362 </a> 363 <div class="fifth-element bottom-0 size-2 right-0 @fifthElementTheme"> 364 @ReadFile(fifthElementIconPath + "sun.svg") 365 </div> 366 </figure> 367 </div> 368 } 369 } 370 371 372 </div> 373 </div> 374 </div> 375 </div> 376 </section> 377 } 378 else 379 { 380 if (Pageview.IsVisualEditorMode) 381 { 382 <div class="container-xl alert alert-danger" role="alert"> 383 This <strong>@Model.Item.SystemName</strong> is empty 384 </div> 385 } 386 } 387 } 388 else 389 { 390 if (Pageview.IsVisualEditorMode) 391 { 392 <div class="container-xl alert alert-danger" role="alert"> 393 This <strong>@Model.Item.SystemName</strong> is empty 394 </div> 395 } 396 } 397

Große Auswahl an Nistkästen und Insektenhotels

Mit Nistkästen und Insektenhotels aus Holzbeton bieten Sie Vögeln und Insekten optimale Bedingungen zum Brüten und Überwintern.

Alles zum Anpflanzen

Große Auswahl an Pflanzröhren, Pflanzkörben, Spaten und Schaufeln, Bewässerungssäcken und Bindematerial.

Hier finden Sie alles, zu Zaunpfählen und Hohlrohren

Ob Sie nun neu angepflanzte Wälder oder Weihnachtsbäume einzäunen, Ihre Tiere im Garten halten oder einen Totholzzaun bauen möchten – hier finden Sie die passenden Beiträge.

Über Dalgas Shop

Seit 1976 liefern wir Ausrüstung und Werkzeuge für die Arbeit in und mit der Natur. Darum wissen wir, worauf es ankommt – und was Sie wirklich brauchen. Bei Dalgas erhalten Sie fachkundige Beratung und praxisbewährte Ausrüstung, die Ihren Arbeitsalltag leichter macht. Und weil wir wissen, dass Zeit oft knapp ist, liefern wir schnell und zuverlässig.

Guides und Fachwissen

Branche auswählen

Landschaftsgärtner

Wenn Sie als Landschaftsgärtner tätig sind, haben wir hier eine Auswahl an Produkten, Neuigkeiten, Anleitungen und vielem mehr für Sie zusammengestellt.

Obst- und Beerenproduzenten

Wenn Sie Obst und Beeren anbauen, finden Sie hier unser Produktsortiment sowie Neuigkeiten und Ratgeber speziell für Sie.

Baumschulen und Gärtnereien

Arbeiten Sie in einer Baumschule oder Gärtnerei? Dann sehen Sie sich unsere große Auswahl an Werkzeugen und Arbeitskleidung für Ihre Branche an.

Waldbesitzer

Sind Sie Waldbesitzer oder arbeiten Sie im Wald? Hier finden Sie Ratgeber, ausgewählte Produkte und Inspirationen für Ihren Wald.

Weihnachtsbaumproduzenten

Auf der Branchenseite für Weihnachtsbaumproduzenten finden Sie ausgewählte Produkte, Ratgeber und relevante Neuigkeiten.

Dalgas - mehr als ein Webshop

Bei Dalgas trifft Fachwissen auf Leidenschaft: Wir sind ein Team von Spezialistinnen und Spezialisten, das Ihre Branche und die Anforderungen Ihres Arbeitsalltags genau kennt.
Für Sie bedeutet das persönliche Betreuung und kompetente Beratung – egal, ob Sie fachlichen Rat benötigen oder Unterstützung bei der Wahl der passenden Ausrüstung und Werkzeuge wünschen.

Wir legen Wert auf langfristige, vertrauensvolle Kundenbeziehungen. Bei Großbestellungen, Lagerkapazität oder regelmäßigen Lieferungen sind wir gerne persönlich für Sie da. Sie können Angebote direkt über den Webshop anfordern – oder uns anrufen, um individuelle Wünsche zu besprechen.

No products in cart