✓ Afsendelse 3–4 virkedager
✓ Norsk kundeservice
✓ +100 års erfaring
✓ Dansk design
✓30 dagers returrett
  • Produkter
    Gjerder og porter
    Tregjerde Kompositgjerde Stålgjerde Glassgjerde Pilegjerde Polyrattangjerde Alle hageporter Stolper Tilbehør
    Hage
    Pergola Daylife Cubic beslag Tørkestativ Rosenportal Outdoor Fitness treningsstativ Plante- og blomsterkasser Høybede Dørriste Søppelbod Varmepumpeskjul Terrasse trapper Trappevanger
    Møbler
    Møbelsett Bord/benkesett Bord/benkesett for barn Bänker Trallemøbler Plante- og grillbord
    Lek
    Leketårn Huskestativer Lekehuse Sandkasse/benk Bord/benkesett for barn Tilbehør
    Uterom
    Classic hagehus Multi hagehus Nordic hagehus Redskapsbod/Kombihus Sykkelskur Bålhytter Vedskjul Oppholdsrom/Overbygg Matpakkehus Drivhus/Redskapsbod Shelters Dører til uthus Tilbehør til uterommet
    Outlet
Produkter
  • Nyheter
  • Inspirasjon
  • Kataloger
  • FAQ
Nyheter Inspirasjon Kataloger FAQ
    • Log ind
    • 0
    • Norwegian, Nynorsk
    Log ind 0
    ✓ Afsendelse 3–4 virkedager
    ✓ +100 års erfaring
    Søk
      • Log ind
        • Log ind på plus
      • 0
      • Norwegian, Nynorsk
      Log ind 0
      Sorry. There is nothing to view here

      Produkter

      • Gjerder og porter
      • Hage
      • Møbler
      • Lek
      • Uterom
      • Outlet
      Gjerder og porter Hage Møbler Lek Uterom Outlet

      Service

      • Finn en forhandler
      • Levering av bestillinger
      • Ring oss
      • Kontakt oss
      Finn en forhandler Levering av bestillinger Ring oss Kontakt oss

      Inspirasjon

      • Ideer til uterom
      • Ideer til gjerdeprosjekter
      • Ideer til hagedekorasjon
      • Ideer til en barnevennlig hage
      • Ideer til nye hagemøbler
      • Guider og gjør-det-selv-tips
      • DIY
      Ideer til uterom Ideer til gjerdeprosjekter Ideer til hagedekorasjon Ideer til en barnevennlig hage Ideer til nye hagemøbler Guider og gjør-det-selv-tips DIY

      PLUS

      • Om oss
      • Nyheter fra PLUS
      • Bærekraft
      • Ansatte
      • Kjøpsvilkår
      • Returer og reklamasjoner
      • Cookie policy
      • Personvernerklæring
      Om oss Nyheter fra PLUS Bærekraft Ansatte Kjøpsvilkår Returer og reklamasjoner Cookie policy Personvernerklæring
      • Facebook
      • Instagram
      • LinkedIn
      • Pinterest
      • Youtube
      Facebook Instagram LinkedIn Pinterest Youtube
      PLUS A/S • Ådalen 13B • DK-6600 Vejen • CVR: 34564310 • ✆ +45 79963333 • ✉ plus@plus.dk
      Trustpilot

        Skriv en omtale på Google

      Error executing template "Designs/Swift/Paragraph/Swift_Accordion_JGN.cshtml"
      System.NullReferenceException: Object reference not set to an instance of an object.
         at CompiledRazorTemplates.Dynamic.RazorEngine_fe58088ccec345ad90aada51a577b600.Execute() in D:\dynamicweb.net\Solutions\ContextAnd\Plus_Prod\Files\Templates\Designs\Swift\Paragraph\Swift_Accordion_JGN.cshtml:line 223
         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 @using System.Text.RegularExpressions; 2 @using Dynamicweb.Core 3 @using Dynamicweb.Ecommerce.ProductCatalog 4 @using System 5 @using System.Collections.Generic 6 @using System.Linq 7 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> 8 9 10 @{ 11 string title = Model.Item.GetString("Title"); 12 var accordionItems = Model.Item?.GetItems("Accordion_Items") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList(); 13 string theme = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("Theme")) ? " theme " + Model.Item.GetRawValueString("Theme").Replace(" ", "").Trim().ToLower() : ""; 14 string contentPadding = Model.Item.GetRawValueString("ContentPadding", ""); 15 contentPadding = contentPadding == "none" ? "p-0" : contentPadding; 16 contentPadding = contentPadding == "small" ? "p-3 p-md-3" : contentPadding; 17 contentPadding = contentPadding == "large" ? "p-5 p-md-5" : contentPadding; 18 int countJsonObj = 0; 19 20 } 21 22 23 <div class="accordion@(theme) @(contentPadding) h-100 item_@Model.Item.SystemName.ToLower()" id="accordion-@Pageview.CurrentParagraph.ID"> 24 @RenderTitle() 25 @foreach (var item in accordionItems) 26 { 27 <div class="accordion-item"> 28 <h2 class="accordion-header" id="heading-@Pageview.CurrentParagraph.ID-@item.Id"> 29 <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapse-@Pageview.CurrentParagraph.ID-@item.Id" aria-expanded="false" aria-controls="collapse-@Pageview.CurrentParagraph.ID-@item.Id"> 30 @item.GetString("Title") 31 </button> 32 </h2> 33 <div id="collapse-@Pageview.CurrentParagraph.ID-@item.Id" class="accordion-collapse collapse" aria-labelledby="heading-@Pageview.CurrentParagraph.ID-@item.Id" data-bs-parent="#accordion-@Pageview.CurrentParagraph.ID"> 34 <div class="accordion-body mb-0-last-child opacity-75"> 35 @item.GetRawValueString("Content") 36 37 @{ 38 //start Slider settings 39 bool productViewModelFound = false; 40 ProductViewModel product = new ProductViewModel(); 41 42 ProductViewModelSettings productSetting = new ProductViewModelSettings 43 { 44 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID, 45 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code, 46 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2, 47 ShopId = Pageview.Area.EcomShopId 48 }; 49 50 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails")) 51 { 52 productViewModelFound = true; 53 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"]; 54 } 55 if (Pageview.IsVisualEditorMode && !productViewModelFound) 56 { 57 if (Pageview.Item["DummyProduct"] != null) 58 { 59 productViewModelFound = true; 60 string dummyProductId = ""; 61 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page); 62 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel(); 63 if (productList.Products != null) 64 { 65 foreach (var p in productList.Products) { dummyProductId = p.Id; } 66 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel(); 67 product = dummyProduct; 68 } 69 else 70 { 71 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 72 } 73 } 74 else if (Pageview.Item["DummyProduct"] == null) 75 { 76 productViewModelFound = true; 77 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault().Id); 78 } 79 } 80 81 string titleSlider = item.GetString("SliderTitle") != null ? item.GetString("SliderTitle") : Translate("Products"); 82 string customID = item.GetString("Id") != null ? item.GetString("SliderTitle") : Translate("Products"); 83 string customSys = item.GetString("SystemName") != null ? item.GetString("SystemName") : Translate("Products"); 84 85 string campaignValues = item.GetRawValueString("CampaignBadges", string.Empty); 86 87 //Styling 88 string titleFontSize = item.GetRawValueString("TitleFontSize", "h3"); 89 string subtitleFontSize = item.GetRawValueString("SubtitleFontSize", "fs-5"); 90 string buttonStyle = item.GetRawValueString("ButtonStyle", ""); 91 buttonStyle = buttonStyle == "primary" ? " btn-primary" : buttonStyle; 92 buttonStyle = buttonStyle == "secondary" ? " btn-secondary" : buttonStyle; 93 buttonStyle = buttonStyle == "link" ? " btn-link" : buttonStyle; 94 string maxWidth = item.GetRawValueString("TextReadability", ""); 95 maxWidth = maxWidth == "max-width-on" ? " mw-75ch" : maxWidth; 96 maxWidth = maxWidth == "max-width-off" ? "" : maxWidth; 97 //string productsCount = !string.IsNullOrWhiteSpace(Model.Item.GetRawValueString("ProductsCount").ToString()) ? Model.Item.GetRawValueString("ProductsCount").ToString() : ""; 98 99 string generalTheme = !string.IsNullOrWhiteSpace(item.GetString("GeneralTheme")) ? " theme " + item.GetRawValueString("GeneralTheme").Replace(" ", "").Trim().ToLower() : ""; 100 string themeSlider = !string.IsNullOrWhiteSpace(item.GetRawValueString("SliderTheme")) ? " theme " + item.GetRawValueString("SliderTheme").Replace(" ", "").Trim().ToLower() : ""; 101 string imageTheme = !string.IsNullOrWhiteSpace(item.GetRawValueString("ImageTheme")) ? " theme " + item.GetRawValueString("ImageTheme").Replace(" ", "").Trim().ToLower() : ""; 102 103 //Link generation 104 string pageId = item.GetLink("ProductSliderServicePage") != null ? item.GetLink("ProductSliderServicePage").PageId.ToString() : ""; 105 string servicePageByNavigationTag = GetPageIdByNavigationTag("ProductSliderService") != 0 ? GetPageIdByNavigationTag("ProductSliderService").ToString() : ""; 106 pageId = pageId == "" ? servicePageByNavigationTag : pageId; 107 108 string url = "/Default.aspx?ID=" + pageId; 109 if (!url.Contains("LayoutTemplate")) 110 { 111 url += url.Contains("?") ? "&LayoutTemplate=Designs/Swift/Swift_PageClean.cshtml" : "?LayoutTemplate=Designs/Swift/Swift_PageClean.cshtml"; 112 } 113 if (Pageview.IsVisualEditorMode) 114 { 115 url += "&VisualEdit=True"; 116 } 117 118 bool isLazyLoadingForProductInfoEnabled = Dynamicweb.Ecommerce.DynamicwebLiveIntegration.TemplatesHelper.IsLazyLoadingForProductInfoEnabled; 119 if (isLazyLoadingForProductInfoEnabled) 120 { 121 url += "&getproductinfo=true"; 122 } 123 124 //Source type 125 string sourceType = item.GetRawValueString("RelationType", "trending"); 126 IList<string> relateFromGroupIds = new List<string> { }; 127 IList<string> relateFromProductIds = new List<string> { }; 128 129 //--- VARIANTS --- 130 ProductListViewModel productsToRelateToVariants = item.GetValue<ProductListViewModel>("ProductsToRelateToVariants"); 131 if (productsToRelateToVariants != null && sourceType == "variants") 132 { 133 foreach (var productSelection in productsToRelateToVariants.Products) 134 { 135 relateFromProductIds.Add(productSelection.Id); 136 } 137 } 138 139 //--- MOST SOLD --- 140 IList<ProductGroupViewModel> groupsToRelateToMostSold = item.GetValue<IList<ProductGroupViewModel>>("GroupsToRelateToMostSold"); 141 if (groupsToRelateToMostSold != null && sourceType == "most-sold") 142 { 143 foreach (var fromGroup in groupsToRelateToMostSold) 144 { 145 relateFromGroupIds.Add(fromGroup.Id); 146 } 147 } 148 149 //--- TRENDING --- 150 IList<ProductGroupViewModel> groupsToRelateToTrending = item.GetValue<IList<ProductGroupViewModel>>("GroupsToRelateToTrending"); 151 if (groupsToRelateToTrending != null && sourceType == "trending") 152 { 153 foreach (var fromGroup in groupsToRelateToTrending) 154 { 155 relateFromGroupIds.Add(fromGroup.Id); 156 } 157 } 158 159 //--- LATEST --- 160 IList<ProductGroupViewModel> groupsToRelateToLatest = item.GetValue<IList<ProductGroupViewModel>>("GroupsToRelateToLatest"); 161 if (groupsToRelateToLatest != null && sourceType == "latest") 162 { 163 foreach (var fromGroup in groupsToRelateToLatest) 164 { 165 relateFromGroupIds.Add(fromGroup.Id); 166 } 167 } 168 169 //--- FREQUENTLY BOUGHT --- 170 ProductListViewModel productsToRelateTo = item.GetValue<ProductListViewModel>("ProductsToRelateTo"); 171 if (productsToRelateTo != null && sourceType == "frequently") 172 { 173 foreach (var fromProduct in productsToRelateTo.Products) 174 { 175 relateFromProductIds.Add(fromProduct.Id); 176 } 177 } 178 179 //--- SELECTED PRODUCTS --- 180 ProductListViewModel products = item.GetValue<ProductListViewModel>("Products"); 181 if (products != null && sourceType == "selected") 182 { 183 foreach (var productSelection in products.Products) 184 { 185 relateFromProductIds.Add(productSelection.Id); 186 } 187 } 188 189 //--- RELATED PRODUCTS --- 190 if (sourceType == "related-products") 191 { 192 ProductListViewModel selectedRelationProduct = item.GetValue<ProductListViewModel>("ProductsToRelateTo2"); 193 194 if (selectedRelationProduct?.Products != null) 195 { 196 if (selectedRelationProduct.Products.Count > 0) 197 { 198 int productCount = 0; 199 foreach (var selectedProduct in selectedRelationProduct.Products) 200 { 201 if (productCount == 0) 202 { 203 product = selectedProduct; 204 productCount++; 205 } 206 } 207 } 208 } 209 210 if (product?.RelatedGroups != null) 211 { 212 foreach (var group in product.RelatedGroups) 213 { 214 foreach (var relatedProduct in group.Products) 215 { 216 relateFromProductIds.Add(relatedProduct.ProductId); 217 } 218 } 219 } 220 } 221 222 //Create group id collection and products id collection strings 223 string groupIds = productViewModelFound ? product.PrimaryOrDefaultGroup.Id : string.Join(",", relateFromGroupIds); 224 string productIds = productViewModelFound && relateFromProductIds.Count == 0 ? product.Id : string.Join(",", relateFromProductIds); 225 226 //Set the parameters to the url 227 string linkParameters = ""; 228 linkParameters += sourceType != "related-products" ? "&GroupId=" + groupIds : ""; 229 linkParameters += !string.IsNullOrEmpty(productIds) ? "&MainProductId=" + productIds : ""; 230 var productListPageId = GetPageIdByNavigationTag("Shop"); 231 string link = "/Default.aspx?ID=" + productListPageId + linkParameters; 232 233 // Slider settings (documentation: swiffyslider.com/configuration) 234 string navigationStyle = $"{item.GetRawValueString("NavigationStyle", "slider-nav-round")}"; 235 string navigationPlacement = $"{item.GetRawValueString("NavigationPlacement", "slider-nav-on-slides")}"; 236 string indicatorStyle = $"{item.GetRawValueString("IndicatorStyle", "slider-indicators-hidden")}"; 237 string revealSlides = item.GetRawValueString("RevealSlides", "no-reveal") == "reveal" ? "slider-item-reveal" : string.Empty; 238 string navigationAlwaysVisible = (item.GetBoolean("NavigationAlwaysVisible")) ? "slider-nav-visible" : string.Empty; 239 string navigationVisibleOnTouch = (item.GetBoolean("NavigationVisibleOnTouch")) ? "slider-nav-touch" : string.Empty; 240 string navigationShowScrollbar = (item.GetBoolean("NavigationShowScrollbar")) ? "slider-nav-scrollbar" : string.Empty; 241 string navigationSmall = (item.GetBoolean("NavigationSmall")) ? "slider-nav-sm" : string.Empty; 242 string navigationInvertColors = (item.GetBoolean("NavigationInvertColors")) ? "slider-nav-dark" : string.Empty; 243 string navigationSlideEntirePage = (item.GetBoolean("NavigationSlideEntirePage")) ? "slider-nav-page" : string.Empty; 244 string navigationNoLoop = (item.GetBoolean("NavigationNoLoop")) ? "slider-nav-noloop" : string.Empty; 245 string indicatorsOutsideSlider = (item.GetBoolean("IndicatorsOutsideSlider") && indicatorStyle != string.Empty) ? "slider-indicators-outside" : string.Empty; 246 string indicatorsHighlightActive = (item.GetBoolean("IndicatorsHighlightActive")) ? "slider-indicators-highlight" : string.Empty; 247 string indicatorsInvertColors = (item.GetBoolean("IndicatorsInvertedColors")) ? "slider-indicators-dark" : string.Empty; 248 string indicatorsVisibleOnSmallDevices = (item.GetBoolean("IndicatorsVisibleOnSmallDevices")) ? "slider-indicators-sm" : string.Empty; 249 bool showFavoritesSelectorMasterProduct = item.GetBoolean("ShowFavoritesSelectorMasterProduct"); 250 bool hideAddToCartButtons = item.GetBoolean("HideAddToCartButtons"); 251 var bagdeItems = item?.GetItems("Badges") ?? Enumerable.Empty<Dynamicweb.Frontend.ItemViewModel>().ToList(); 252 253 bool productsFound = true; 254 if (string.IsNullOrEmpty(groupIds) && string.IsNullOrEmpty(productIds)) 255 { 256 if (Pageview.IsVisualEditorMode) 257 { 258 productIds = product.Id; 259 sourceType = "selected"; 260 } 261 else 262 { 263 productsFound = false; 264 } 265 } 266 //end Slider settings 267 } 268 269 @*Container element for the request*@ 270 @if (productsFound) 271 { 272 <form method="post" action="@url" id="RelatedProductsForm_@Model.Item.ParagraphID" data-response-target-element="RelatedProducts_@Model.ID" data-preloader="inline" data-update-url="false" class="@Model.ID item_@Model.Item.SystemName.ToLower()"> 273 <input type="hidden" name="ModelID" value="@Model.ID"> 274 275 @*--- SLIDER SETTINGS ---*@ 276 <input type="hidden" name="NavigationStyle" value="@navigationStyle"> 277 <input type="hidden" name="NavigationPlacement" value="@navigationPlacement"> 278 <input type="hidden" name="IndicatorStyle" value="@indicatorStyle"> 279 <input type="hidden" name="RevealSlides" value="@revealSlides"> 280 <input type="hidden" name="NavigationAlwaysVisible" value="@(navigationAlwaysVisible)"> 281 <input type="hidden" name="NavigationVisibleOnTouch" value="@(navigationVisibleOnTouch)"> 282 <input type="hidden" name="NavigationShowScrollbar" value="@(navigationShowScrollbar)"> 283 <input type="hidden" name="NavigationSmall" value="@(navigationSmall)"> 284 <input type="hidden" name="NavigationInvertColors" value="@(navigationInvertColors)"> 285 <input type="hidden" name="NavigationNoLoop" value="@(navigationNoLoop)"> 286 <input type="hidden" name="NavigationSlideEntirePage" value="@(navigationSlideEntirePage)"> 287 <input type="hidden" name="IndicatorsOutsideSlider" value="@(indicatorsOutsideSlider)"> 288 <input type="hidden" name="IndicatorsHighlightActive" value="@(indicatorsHighlightActive)"> 289 <input type="hidden" name="IndicatorsInvertColors" value="@(indicatorsInvertColors)"> 290 <input type="hidden" name="IndicatorsVisibleOnSmallDevices" value="@(indicatorsVisibleOnSmallDevices)"> 291 <input type="hidden" name="ShowFavoritesSelectorMasterProduct" value="@(showFavoritesSelectorMasterProduct.ToString())"> 292 <input type="hidden" name="HideAddToCartButtons" value="@(hideAddToCartButtons.ToString())"> 293 294 @*--- VARIANTS ---*@ 295 @if (sourceType == "variants") 296 { 297 <input type="hidden" name="isVariant" value="true"> 298 <input type="hidden" name="MainProductID" id="MainProductID_@Model.ID" value="@productIds"> 299 } 300 301 @*--- MOST SOLD ---*@ 302 @if (sourceType == "most-sold") 303 { 304 <input type="hidden" name="SortBy" value="OrderCount"> 305 if (groupIds != "") 306 { 307 <input type="hidden" name="GroupId" value="@groupIds"> 308 } 309 } 310 311 @*--- TRENDING ---*@ 312 @if (sourceType == "trending") 313 { 314 <input type="hidden" name="SortBy" value="OrderCountGrowth"> 315 if (groupIds != "") 316 { 317 <input type="hidden" name="GroupId" value="@groupIds"> 318 } 319 } 320 321 @*--- FREQUENTLY BOUGHT ---*@ 322 @if (sourceType == "frequently" && !string.IsNullOrEmpty(productIds)) 323 { 324 <input type="hidden" name="BoughtWithProductIds" value="[@productIds]"> 325 } 326 327 @*--- LATEST ---*@ 328 @if (sourceType == "latest") 329 { 330 <input type="hidden" name="SortBy" value="Created"> 331 <input type="hidden" name="GroupId" value="@groupIds"> 332 } 333 334 @*--- SELECTED PRODUCTS ---*@ 335 @if (sourceType == "selected") 336 { 337 <input type="hidden" name="MainProductID" id="MainProductID_@Model.ID" value="@productIds"> 338 } 339 340 @*--- RELATED PRODUCTS ---*@ 341 @if (sourceType == "related-products") 342 { 343 <input type="hidden" name="MainProductID" id="MainProductID_@Model.ID" value="@productIds"> 344 } 345 346 @* General parameters *@ 347 <input type="hidden" name="Link" value="@link"> 348 <input type="hidden" name="HideTitle" value="@Model.Item.GetString("HideTitle")"> 349 <input type="hidden" name="SliderCollectionID" id="SliderCollectionID_@Model.ID" value="@customID"> 350 <input type="hidden" name="SortOrder" value="DESC"> 351 352 @if (Model.Item.GetInt32("ProductsCount") != 0) 353 { 354 <input type="hidden" name="PageSize" value="@Model.Item.GetInt32("ProductsCount")"> 355 } 356 <input type="hidden" name="HeadingTitle" id="RelatedProductsTitle_@Model.ID" value="@titleSlider"> 357 @if (!string.IsNullOrEmpty(Model.Item.GetString("Subtitle"))) 358 { 359 <input type="hidden" name="Subtitle" value="@Model.Item.GetString("Subtitle")"> 360 } 361 @if (!string.IsNullOrEmpty(Model.Item.GetString("LinkText"))) 362 { 363 <input type="hidden" name="LinkText" value="@Model.Item.GetString("LinkText")"> 364 } 365 @if (!string.IsNullOrEmpty(Model.Item.GetString("ImageAspectRatio"))) 366 { 367 string ratio = Model.Item.GetRawValueString("ImageAspectRatio", ""); 368 ratio = ratio != "0" ? ratio : ""; 369 <input type="hidden" name="ImageAspectRatio" value="@ratio"> 370 } 371 @if (!string.IsNullOrEmpty(item.GetString("Layout"))) 372 { 373 <input type="hidden" name="Layout" value="@item.GetRawValueString("Layout")"> 374 } 375 @if (titleFontSize != "") 376 { 377 <input type="hidden" name="TitleFontSize" value="@titleFontSize"> 378 } 379 @if (subtitleFontSize != "") 380 { 381 <input type="hidden" name="SubtitleFontSize" value="@subtitleFontSize"> 382 } 383 @if (buttonStyle != "") 384 { 385 <input type="hidden" name="ButtonStyle" value="@buttonStyle"> 386 } 387 @if (generalTheme != "") 388 { 389 <input type="hidden" name="GeneralTheme" value="@generalTheme"> 390 } 391 @if (themeSlider != "") 392 { 393 <input type="hidden" name="Theme" value="@themeSlider"> 394 } 395 @if (imageTheme != "") 396 { 397 <input type="hidden" name="ImageTheme" value="@imageTheme"> 398 } 399 @if (!string.IsNullOrEmpty(Model.Item.GetString("ContentPadding"))) 400 { 401 string contentPaddingSlider = Model.Item.GetRawValueString("ContentPadding"); 402 <input type="hidden" name="ContentPadding" value="@contentPaddingSlider"> 403 } 404 <input type="hidden" name="TextReadability" value="@maxWidth"> 405 <input type="hidden" name="ParentColumnSize" id="ParentColumnSize_@Model.ID" value="12"> 406 407 @*--- PLUS BADGES ---*@ 408 @{ 409 var count = 0; 410 foreach (var badge in bagdeItems) 411 { 412 count++; 413 <input type="hidden" name="Plusbadge-title_@count" value="@badge.GetString("Title")"> 414 <input type="hidden" name="Plusbadge-image_@count" value="@badge.GetString("Image")"> 415 } 416 } 417 <input type="hidden" name="Plusbadge-totalCount" value="@count"> 418 419 <input type="hidden" name="SaleBadgeType" value="@item.GetRawValue("SaleBadgeType")"> 420 <input type="hidden" name="SaleBadgeCssClassName" value="@item.GetRawValue("SaleBadgeDesign")"> 421 <input type="hidden" name="NewBadgeCssClassName" value="@item.GetRawValue("NewBadgeDesign")"> 422 <input type="hidden" name="NewPublicationDays" value="@item.GetInt32("NewPublicationDays")"> 423 424 @if (campaignValues != "") 425 { 426 <input type="hidden" name="CampaignBadgesValues" value="@campaignValues"> 427 } 428 </form> 429 430 <script type="module" src="~/Files/Templates/Designs/Swift/Assets/js/swiffy-slider.js"></script> 431 <script type="module"> 432 swift.AssetLoader.Load('/Files/Templates/Designs/Swift/Assets/css/swiffy-slider.min.css', 'css'); 433 </script> 434 435 if (Pageview.IsVisualEditorMode) 436 { 437 <div class="alert alert-info" role="alert"> 438 <span>@Translate("Product slider: Edit this column to configure")</span> 439 </div> 440 } 441 442 if (sourceType != "related-products") 443 { 444 <div class="w-100 h-100"> 445 <div id="RelatedProducts_@Model.ID" class="h-100 swift_product_slider_container"></div> 446 </div> 447 } 448 449 else if (product?.RelatedGroups != null) 450 { 451 @* Create multiple slider containers, if type is Product relation *@ 452 @* Sorting product related groups so Addon *@ 453 product.RelatedGroups.Sort((u1, u2) => u1.Id.CompareTo(u2.Id)); 454 455 <div class="grid w-100 h-100@(generalTheme)" style="grid-row-gap: 4rem"> 456 @foreach (var group in product.RelatedGroups) 457 { 458 <div id="RelatedProducts_@(Model.ID)_@group.Id" class="g-col-12 h-100 swift_product_slider_container"></div> 459 } 460 </div> 461 } 462 463 @* Initialize *@ 464 if (sourceType != "related-products") 465 { 466 <script type="module"> 467 if (document.querySelector("#RelatedProducts_@Model.ID").closest("[data-col-size]")) { 468 document.querySelector("#ParentColumnSize_@Model.ID").value = document.querySelector("#RelatedProducts_@Model.ID").closest("[data-col-size]").getAttribute("data-col-size"); 469 } 470 swift.PageUpdater.Update(document.querySelector("#RelatedProductsForm_@Model.ID")).then(function () { 471 setTimeout(function() { 472 const isVisualEditor = @(Converter.ToString(Pageview.IsVisualEditorMode).ToLowerInvariant()); 473 const productSliderContainer = document.querySelector(".swift_product_slider_container"); 474 475 if (productSliderContainer && productSliderContainer.innerHTML !== "") { 476 productSliderContainer.classList.remove("d-none"); 477 } 478 else if (!isVisualEditor) { 479 productSliderContainer.closest("[class*=column]").classList.add("d-none"); 480 } 481 }, 150); 482 }); 483 </script> 484 } 485 else if (product?.RelatedGroups != null) 486 { 487 @* Create multiple sliders, if type is Product relation *@ 488 foreach (var group in product.RelatedGroups) 489 { 490 IList<string> fromProductIds = new List<string> { }; 491 492 foreach (var relatedProduct in group.Products) 493 { 494 fromProductIds.Add(relatedProduct.ProductId); 495 } 496 <script type="module"> 497 document.querySelector("#ParentColumnSize_@Model.ID").value = document.querySelector("#RelatedProducts_@(Model.ID)_@group.Id").closest("[data-col-size]").getAttribute("data-col-size"); 498 document.querySelector("#MainProductID_@Model.ID").value = "@string.Join(",", fromProductIds)"; 499 document.querySelector("#RelatedProductsTitle_@Model.ID").value = "@group.Name"; 500 document.querySelector("#SliderCollectionID_@Model.ID").value = "@group.Id"; 501 document.querySelector("#RelatedProductsForm_@Model.ID").setAttribute("data-response-target-element", "RelatedProducts_@(Model.ID)_@group.Id"); 502 503 swift.PageUpdater.Update(document.querySelector("#RelatedProductsForm_@Model.ID")); 504 </script> 505 } 506 } 507 } 508 </div> 509 </div> 510 </div> 511 } 512 513 </div> 514 515 @helper RenderTitle() 516 { 517 if (!string.IsNullOrEmpty(Model.Item.GetString("Title")) && !Model.Item.GetBoolean("HideTitle")) 518 { 519 string titleFontSize = Model.Item.GetRawValueString("TitleFontSize", "h2"); 520 string headingLevel = Model.Item.GetString("HeadingLevel", "h2"); 521 string headingLevelStart = $"<{headingLevel} class=\"{titleFontSize} mb-4\">"; 522 string headingLevelStop = $"</{headingLevel}>"; 523 524 @headingLevelStart 525 @Model.Item.GetString("Title") 526 @headingLevelStop 527 } 528 } 529
      • Forsiden
      Forsiden
      PLUS A/S • Ådalen 13B • DK-6600 Vejen • CVR: 34564310 • ✆ +45 79963333 • ✉ plus@plus.dk
      Trustpilot

        Skriv en omtale på Google

      Gjerder og porter Gjerder og porter
      Tregjerde
      Noor
      Tangent
      Harmoni
      Tokyo
      Sendai
      Osaka
      Nagano
      Kyoto
      Plus Klink Profilgjerde
      Plus Plank Profilgjerde
      Silence
      Rondo
      Rustik
      Nostalgi
      Decora
      Bergen
      Newline
      Country
      Linea
      Ligno
      Rom
      Vinesse
      Slot
      Retro
      Skagen Lux
      Saga
      Liste gjerde
      Kompositgjerde
      Artura
      Futura
      Stålgjerde
      Stålespalier
      Basic stålgjerde
      Basic rekkverksystem
      Glassgjerde
      Glassgjerde røykgråsvart
      Glassgjerde med mahogni håndlister
      Glashegn – mahogni håndlister og varmgalv. stålstolper
      Glasgjerde – sorte håndlister og stålstolper
      Glassgjerde med runde stolper
      Hærdet glashegn – til runde stolper
      Lamineret glashegn – til runde stolper
      Glasgjerde med sorte glasbeslag
      Glasgjerde med varmgalv. glasbeslag
      Pilegjerde
      Pil med ramme
      Pil Lux
      Polyrattangjerde
      Alle hageporter
      Stolper
      Limtrestolper og bjelker
      Trestolper svart
      Trestolper hvit
      Trestolpe umbra-grå
      Trestolper trykkimpregnert
      Profilstolper
      Multistolper
      Stålstolper
      Stålstolper til nedstøbning
      Stålstolper med fot
      Stålstolper med fot (for håndløper)
      Tilbehør
      Beslag og skruer
      Portbeslag
      Stolpefødder
      Stolpehætter
      Cubic beslag
      Håndlist
      Etterbehandling
      Dørbeslag
      Gjerder
      Hage Hage
      Pergola
      Daylife
      Cubic beslag
      Tørkestativ
      Rosenportal
      Outdoor Fitness treningsstativ
      Plante- og blomsterkasser
      Circle plantekasser
      Cubic Living plantekasse
      Cubic blomsterkasser m/fødder – svarte stålhjørner
      Cubic blomsterkasser – sorte stålhjørner
      Cubic blomsterkasser – varmgalvaniserte stålhjørner
      Classic plantekasser
      Basic plantekasser
      Høybede
      Pipe høybede
      Pipe løse deler
      Dørriste
      Søppelbod
      Søppelbod - tre
      Søppelbod - minimal vedlikehold
      Varmepumpeskjul
      Terrasse trapper
      Terrassetrapper 34,2° - trykkimpregnert trevirke
      Terrassetrapper 19° - trykkimpregnert treverk
      Terrassetrapp 34,2° - varmforsinket stål
      Trappevanger
      Møbler Møbler
      Møbelsett
      Trend Living
      Siesta Living
      Siesta Møbler
      Country Plankesett
      Nostalgi Møbelsett
      Plankesett
      Café plankesett
      Bord/benkesett
      Classic bord/benkesett
      Zigma bord/benkesett
      Twist bord/benksett
      Picnic bord/benksett
      Basic bord/benkesett
      Bord/benkesett
      Wega bord/benkesett
      Alpha bord/benkesett
      Bord/benkesett for barn
      Alpha Junior
      Basic Junior
      Tiny
      Bänker
      Benker
      Benker m/ryggstøtte
      Lounge benker
      Trallemøbler
      Plante- og grillbord
      Lek Lek
      Leketårn
      Huskestativer
      Lekehuse
      Sandkasse/benk
      Bord/benkesett for barn
      Alpha Junior
      Basic Junior
      Tiny
      Tilbehør
      Uterom Uterom
      Classic hagehus
      Multi hagehus
      Nordic hagehus
      Redskapsbod/Kombihus
      Sykkelskur
      Bålhytter
      Vedskjul
      Oppholdsrom/Overbygg
      Matpakkehus
      Drivhus/Redskapsbod
      Shelters
      Shelter til hagen
      Siesta Sommerly
      Shelter på hjul
      Dører til uthus
      Dører til uthus - enkle, uten beslag
      Uterumsdør - doble uten beslag
      Dører til uthus - enkelte med beslag
      Uteromsdører - doble med beslag
      Tilbehør til uterommet
      Outlet Outlet
      Nyheter
      Inspirasjon
      Ideer til uterom
      Gjør plass til det du drømmer om
      Se fine kundeprosjekter med våre hagehus
      Trine bygger shelter og hagestue under samme tak
      Bygg ditt eget sykkelskur med Diydanmark
      Se hvordan Poul monterer familiens nye Siesta Sommerly.
      Veksthus og markedsbod i Tivoli Friheden
      Bygg et shelter på hjul - Se flotte kundeprosjekter
      Rikkes magiske sommerhushelter og byggedag
      Guide til shelter - Bygg et shelter i hagen din.
      Doble shelter i et feriehus på Djursland
      Ideer til gjerdeprosjekter
      Guide til valg av tregjerder
      Sendai-gjerde kompletterer hageplanen hos Lena Smedegaard
      Før og etter - Dan og Line utøver magi med Tokyo gjerdet
      Før og etter - Nagano gjerder i hagegrenser gir hagen din et løft
      Før/etter - Kyoto-gjerde skaper plass på terrassen
      Før og etter - Artura hagegjerde i komposittmateriale
      Før/etter - Futura innkjørselsgjerde i komposittmateriale
      Komposittgjerder - minimalt vedlikehold
      Glassgjerder - Den komplette guiden til valg av glassgjerde
      Glassgjerder - Lær mer om glasstyper og montering
      Hvordan monterer du Artura komposittgjerde
      Ideer til hagedekorasjon
      Skap hagens nye samlingspunkt
      Trinn for trinn: Bygg og design din egen tilpassede pergola
      Guide: Sådan bygger du nemt en trappe til terrassen med trappevanger
      Mød en designer: Henrik Boe - designeren bag Cubic-beslaget
      Susannes Cubik pergola og en enorm hagefornyelse
      Bygge et brenneskur sammen med Martin og Lucas
      Opphøyde bed og blomsterkasser i hagedesign
      Guide - vinterdekorasjon i blomsterkassen
      Bygge et renovasjonsskjul i oppkjørselen og forhagen din
      Nannas drømmehage med opphøyde bed og hønsehus
      Opplev utekjøkkenet og terrassemiljøet hos Tina Dalbøge
      Bygg en tradisjonell pergola med Cubic
      Veiledning i å lage og dyrke opphøyde bed
      Bygg med Cubic-beslag - bildegalleri
      Friluftsliv i hagen - få en idé til ditt neste prosjekt
      Veiledning - få 5 plantetips til din Cubic blomsterkasse
      Ideer til en barnevennlig hage
      PLUS for livet
      Få tips til PLUS prosjektet ditt, gode ideer til uterommet ditt - få fysioterapeutens råd.
      Anne-Louises eventyrlige hage
      Ideer til nye hagemøbler
      Hva er RePlast møbelplanker?
      Hva er ReTex møbelplanker?
      Bord-/benkesett som skaper et fellesskapsrom
      Guider og gjør-det-selv-tips
      Montering av trestolper på et tredekke eller et betongfundament
      DIY
      DIY prosjekter med emballasje
      Kataloger
      FAQ
      Fakta om materialer og vedlikehold
      Om grunnede produkter
      Om trykkimpregnerte produkter
      Om lerk og ubehandlet tre
      Om Sipo mahogni
      Om varmgalvaniserede produkter
      Om pulverlakkerte produkter
      Om kompositt
      Om RePlast og ReTex
      Om glass
      Om pil
      Om polyrattan
      Om lasurfarge og etterbehandling
      ThermoWood®
      Værd å vite om produkter og montering
      Vælg den rigtige stolpe til dit projekt
      Sådan forankrer du stolper
      Ting du bør vite før du begynner å montere ditt nye gjerde og porter
      Dører til uthuset
      Om lekehuse
      Monteringsanvisninger
      CE-merket
      Love og regler
      Certifikater
      Om overskudsmaterialer i forbindelse med levering
      Favorittlisten er oppdatert