Acabamento:
Look inox PVD
Peso líquido (kg):
0.5
Desenhos técnicos (881.1 KB)
Desenhos técnicos (166 KB)
The following has evaluated to null or missing:
==> cache.getMarketsTree() [in template "20099#20135#384350736" at line 841, column 30]
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: marketTree = cache.getMarketsTree() [in template "20099#20135#384350736" at line 841, column 17]
---- 1<#assign cache = cacheUtils.getCacheManager(themeDisplay.getScopeGroupId())! /> 2 3<#if cache??> 4 5 <#macro initSupraMenus> 6 <#if shortcuts.shortcutsShortcut.getSiblings()?has_content> 7 <#assign 8 leftColumnShortcuts = [] 9 rightColumnLeftBlockShortcuts = [] 10 rightColumnRightBlockShortcuts = [] 11 /> 12 13 <#list shortcuts.shortcutsShortcut.getSiblings() as curShortcut> 14 <#assign pos = curShortcut.shortcutsShortcutPos.getData()/> 15 <#if pos == "C1"> 16 <#assign leftColumnShortcuts = leftColumnShortcuts + [curShortcut] /> 17 <#elseif pos == "C2"> 18 <#assign rightColumnLeftBlockShortcuts = rightColumnLeftBlockShortcuts + [curShortcut] /> 19 <#elseif pos == "C3"> 20 <#assign rightColumnRightBlockShortcuts = rightColumnRightBlockShortcuts + [curShortcut] /> 21 </#if> 22 </#list> 23 24 <@initSupramenuShortcuts leftColumnShortcuts true /> 25 <@initSupramenuShortcuts rightColumnLeftBlockShortcuts rightColumnRightBlockShortcuts?has_content /> 26 <@initSupramenuShortcuts rightColumnRightBlockShortcuts false /> 27 28 <#assign 29 html = "" 30 icon = shortcuts.shortcutsCta.shortcutsCtaIcon.getData() 31 iconWidth = shortcuts.shortcutsCta.shortcutsCtaWidth.getData() 32 iconHeight = shortcuts.shortcutsCta.shortcutsCtaHeight.getData() 33 text = shortcuts.shortcutsCta.shortcutsCtaText.getData() 34 link = (shortcuts.shortcutsCta.shortcutsCtaLink.getData()?has_content)?string(cache.parseLinkURL(request, shortcuts.shortcutsCta.shortcutsCtaLink.getData()), "") 35 target = (link?has_content)?string((shortcuts.shortcutsCta.shortcutsCtaTargetLink.getData()?has_content)?string(shortcuts.shortcutsCta.shortcutsCtaTargetLink.getData(), cache.getLinkTarget(link)), "") 36 /> 37 38 <#if link?has_content> 39 <#assign html += "<a class=\"supramenu__btn\" href=\"" + link + "\" target=\"" + target + "\">" /> 40 </#if> 41 <#if icon?has_content> 42 <#assign style = "" /> 43 <#if iconWidth?has_content && iconWidth != "0"> 44 <#assign style += "width: " + iconWidth + "px;" /> 45 </#if> 46 <#if iconHeight?has_content && iconHeight != "0"> 47 <#assign style += "height: " + iconHeight + "px;" /> 48 </#if> 49 50 <#if text?has_content> 51 <#assign html += "<img class=\"icon-right-space\" alt=\"" + shortcuts.shortcutsCta.shortcutsCtaIcon.getAttribute("alt") + "\" data-fileentryid=\"" + shortcuts.shortcutsCta.shortcutsCtaIcon.getAttribute("fileEntryId") + "\" src=\"" + icon + "\" title=\"" + text + "\" style=\"" + style + "\" />" /> 52 <#else> 53 <#assign html += "<img alt=\"" + shortcuts.shortcutsCta.shortcutsCtaIcon.getAttribute("alt") + "\" data-fileentryid=\"" + shortcuts.shortcutsCta.shortcutsCtaIcon.getAttribute("fileEntryId") + "\" src=\"" + icon + "\" title=\"" + shortcuts.shortcutsCta.shortcutsCtaIcon.getAttribute("alt") + "\" style=\"" + style + "\" />" /> 54 </#if> 55 </#if> 56 <#if text?has_content> 57 <#assign html += "<div><span>" + text + "</span></div>" /> 58 </#if> 59 <#if link?has_content> 60 <#assign html += "</a>" /> 61 </#if> 62 63 64 <#if html?has_content> 65 <#assign htmlCCta += html /> 66 </#if> 67 </#if> 68 </#macro> 69 70 <#macro initSupramenuShortcuts supramenuShortcuts includeSeparator> 71 <#list supramenuShortcuts as curShortcut> 72 <#assign 73 pos = curShortcut.shortcutsShortcutPos.getData() 74 icon = curShortcut.shortcutsShortcutIcon.getData() 75 iconWidth = curShortcut.shortcutsShortcutWidth.getData() 76 iconHeight = curShortcut.shortcutsShortcutHeight.getData() 77 text = curShortcut.shortcutsShortcutText.getData() 78 link = (curShortcut.shortcutsShortcutLink.getData()?has_content)?string(cache.parseLinkURL(request, curShortcut.shortcutsShortcutLink.getData()), "") 79 target = (link?has_content)?string((curShortcut.shortcutsShortcutTargetLink.getData()?has_content)?string(curShortcut.shortcutsShortcutTargetLink.getData(), cache.getLinkTarget(link)), "") 80 isComparator = curShortcut.shortcutsShortcutComparator?? && getterUtil.getBoolean(curShortcut.shortcutsShortcutComparator.getData()) 81 isFavorites = curShortcut.shortcutsShortcutFavorites?? && getterUtil.getBoolean(curShortcut.shortcutsShortcutFavorites.getData()) 82 /> 83 84 <#assign html = "" /> 85 <#assign cssLiClass = "supramenu__item supramenu__shortcut" /> 86 87 <#if isComparator> 88 <#assign 89 cssLiClass = cssLiClass + " comparator-icon" 90 /> 91 <#elseif isFavorites> 92 <#assign 93 cssLiClass = cssLiClass + " favorites-icon" 94 /> 95 </#if> 96 97 <#if includeSeparator && ((pos == "C1" && curShortcut?is_first) || (pos == "C2" && curShortcut?is_last))> 98 <#assign cssLiClass = cssLiClass + " supramenu__shortcut--separator" /> 99 <#elseif pos == "C3"> 100 <#assign cssLiClass = cssLiClass + " supramenu__shortcut--icon" /> 101 </#if> 102 103 <#assign html += "<li class=\"${cssLiClass}\">" /> 104 105 <#if link?has_content> 106 <#assign html += "<a class=\"supramenu__link\" href=\"" + link + "\" target=\"" + target + "\">" /> 107 </#if> 108 <#if isComparator> 109 <#assign html += "<i class=\"icon-cards\"></i>"/> 110 <#elseif isFavorites> 111 <#assign html += "<i class=\"icon-favourite\"></i>"/> 112 <#elseif icon?has_content> 113 <#assign style = "" /> 114 <#if iconWidth?has_content && iconWidth != "0"> 115 <#assign style += "width: " + iconWidth + "px;" /> 116 </#if> 117 <#if iconHeight?has_content && iconHeight != "0"> 118 <#assign style += "height: " + iconHeight + "px;" /> 119 </#if> 120 121 <#if text?has_content> 122 <#assign html += "<img class=\"icon-right-space\" alt=\"" + curShortcut.shortcutsShortcutIcon.getAttribute("alt") + "\" data-fileentryid=\"" + curShortcut.shortcutsShortcutIcon.getAttribute("fileEntryId") + "\" src=\"" + icon + "\" title=\"" + text + "\" style=\"" + style + "\" />" /> 123 <#else> 124 <#assign html += "<img alt=\"" + curShortcut.shortcutsShortcutIcon.getAttribute("alt") + "\" data-fileentryid=\"" + curShortcut.shortcutsShortcutIcon.getAttribute("fileEntryId") + "\" src=\"" + icon + "\" title=\"" + curShortcut.shortcutsShortcutIcon.getAttribute("alt") + "\" style=\"" + style + "\" />" /> 125 </#if> 126 </#if> 127 <#if text?has_content> 128 <#assign html += "<div><span>" + text + "</span></div>" /> 129 </#if> 130 <#if link?has_content> 131 <#assign html += "</a>" /> 132 </#if> 133 <#assign html += "</li>" /> 134 135 136 <#if html?has_content> 137 <#if pos == "C1"> 138 <#assign htmlC1 += html /> 139 <#elseif pos == "C2"> 140 <#assign htmlC2 += html /> 141 <#elseif pos == "C3"> 142 <#assign htmlC3 += html /> 143 </#if> 144 </#if> 145 </#list> 146 </#macro> 147 148 <#macro drawMainMenu> 149 <ul class="main-menu__list d-none d-lg-flex" id="laufen-main-menu-list"> 150 <#list mainMenu.mainMenuItems.getSiblings() as curMenuItem> 151 <li class="main-menu__item js-collapse-sm"> 152 <#assign 153 type = curMenuItem.mainMenuItemsType.getData() 154 text = curMenuItem.mainMenuItemsText.getData() 155 link = (curMenuItem.mainMenuLink.getData()?has_content)?string(cache.parseLinkURL(request, curMenuItem.mainMenuLink.getData()), "") 156 target = (link?has_content)?string((curMenuItem.mainMenuItemsTargetLink.getData()?has_content)?string(curMenuItem.mainMenuItemsTargetLink.getData(), cache.getLinkTarget(link)), "") 157 linkClass = (curMenuItem.mainMenuItemsButtonType.getData())!"" 158 linkClass = (linkClass?has_content)?then(linkClass, "main-menu__link text-uppercase") 159 160 sideMenuCategoryIndex = curMenuItem?index + 1 161 sideMenuCategory = type + "-" + sideMenuCategoryIndex 162 /> 163 164 <div class="link-wrapper"> 165 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsOpenSide.getData())> 166 <a class="js-open-side-menu ${linkClass}" href="javascript:void(0);" data-category="${sideMenuCategory}" title="${text}"> 167 <#elseif link?has_content> 168 <a class="${linkClass}" href="${link}" target="${target}" title="${text}"> 169 </#if> 170 171 ${text} 172 173 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsOpenSide.getData()) || link?has_content> 174 </a> 175 </#if> 176 </div> 177 178 <#assign categoriesWithChildren = [] /> 179 <#assign sectionsWithSubitems = [] /> 180 181 <div id="sideMenuCategory--${sideMenuCategory}" class="side-menu__category js-side-category-move" data-level="1"> 182 <#if (type == "PRODUCTS")> 183 <#assign categoriesWithOnlyFirstLevel = 184 (curMenuItem.mainMenuItemsFirstLevelCategories?? 185 && curMenuItem.mainMenuItemsFirstLevelCategories.getData()?has_content) 186 ?then( 187 curMenuItem.mainMenuItemsFirstLevelCategories.getData()?split(",")?map(x -> x?trim), 188 [] 189 ) 190 /> 191 192 <div class="side-menu__body"> 193 <span class="side-menu-back-btn js-side-menu-back-btn d-flex align-items-center d-lg-none"> 194 <i class="icon-arrow-left"></i> 195 ${cache.translate(locale, "Back")} 196 </span> 197 198 <div class="side-menu__see-all <#if text?length gt 15>long-title</#if>"> 199 <div class="side-menu__see-all-title-container"> 200 <span class="side-menu__see-all-title"> 201 ${text} 202 </span> 203 </div> 204 205 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsShowLink.getData())> 206 <div class="side-menu__see-all-link-container"> 207 <a class="side-menu__see-all-link" href="${link}"> 208 <div> 209 <span>${cache.translate(locale, "Show all")}</span> 210 </div> 211 212 <i class="icon-arrow-right"></i> 213 </a> 214 </div> 215 </#if> 216 </div> 217 218 <ul class="side-menu__body-links"> 219 <#list p_Map?sort_by("websort") as item> 220 <#assign currentItemChildren = "" /> 221 <li class="side-menu__body-item"> 222 <div class="link-wrapper"> 223 <#if !categoriesWithOnlyFirstLevel?seq_contains(item.code)> 224 <#assign currentItemChildren = cache.getSecondLevelCategories(request, item.code)?eval_json /> 225 </#if> 226 227 <#if currentItemChildren?? && getterUtil.getBoolean(currentItemChildren?has_content)> 228 <#-- Se incluye la categoria que tiene hijos en la lista de categorias con hijos--> 229 <#assign itemData = { 230 "original": item, 231 "parentSideCategoryMenu": sideMenuCategory, 232 "children": currentItemChildren 233 } /> 234 235 <#assign categoriesWithChildren = categoriesWithChildren + [itemData] /> 236 237 <a class="side-menu__body-link js-open-side-menu justify-content-between" href="javascript:void(0);" data-category="${item.code}"> 238 <#elseif item.url?has_content> 239 <a class="side-menu__body-link justify-content-between" href="${item.url}"> 240 <#else> 241 <a class="side-menu__body-link justify-content-between" href="javascript:void(0);"> 242 </#if> 243 244 <div class="d-flex align-items-center justify-content-start"> 245 <#if item.title?has_content> 246 <img src="${item.image!}" alt="${item.title}"> 247 <#else> 248 <img src="${item.image!}"> 249 </#if> 250 251 <#if item.title?has_content> 252 <span>${item.title}</span> 253 <#else> 254 <span></span> 255 </#if> 256 </div> 257 258 <#if getterUtil.getBoolean(currentItemChildren?has_content)> 259 <i class="icon-chevron-right"></i> 260 </#if> 261 262 </a> 263 </div> 264 </li> 265 </#list> 266 </ul> 267 268 <#if curMenuItem.mainMenuItemsBanners.getSiblings()?has_content> 269 <div class="side-menu__banner-section"> 270 <div id="${sideMenuCategory}-banner" class="side-menu__banner-content"> 271 <div class="side-menu__banner-container"> 272 <div class="side-menu__banner"> 273 <div class="side-menu__banner-slider" id="${sideMenuCategory}-side-menu__banner-slider"> 274 <div class="side-menu__banner-slider-container"> 275 <#if (curMenuItem.mainMenuItemsBanners.getSiblings()?filter(b -> b.mainMenuItemsBannersType?? && b.mainMenuItemsBannersType.getData() == "slider")?size > 0)> 276 <div class="side-menu__banner-slider-buttons"> 277 <button class="side-menu__banner-slider-button prev icon-chevron-left disabled" onclick="showMenuCarouselItem('${sideMenuCategory}-side-menu__banner-slider', -1);"></button> 278 <button class="side-menu__banner-slider-button next icon-chevron-right" onclick="showMenuCarouselItem('${sideMenuCategory}-side-menu__banner-slider', 1);"></button> 279 </div> 280 </#if> 281 282 <div class="side-menu__banner-slider-content" data-index="0"> 283 <#list curMenuItem.mainMenuItemsBanners.getSiblings()?filter(b -> b.mainMenuItemsBannersType?? && b.mainMenuItemsBannersType.getData() == "slider") as curBanner> 284 <#assign 285 bannerType = curBanner.mainMenuItemsBannersType.getData() 286 img = curBanner.mainMenuItemsBannersImage.getData() 287 text = curBanner.mainMenuItemsBannersText.getData() 288 link = (curBanner.mainMenuItemsBannersLink.getData()?has_content)?string(cache.parseLinkURL(request, curBanner.mainMenuItemsBannersLink.getData()), "") 289 target = (link?has_content)?string((curBanner.mainMenuItemsBannersTargetLink.getData()?has_content)?string(curBanner.mainMenuItemsBannersTargetLink.getData(), cache.getLinkTarget(link)), "") 290 /> 291 292 <#if img?has_content> 293 <div class="side-menu__banner-item ${bannerType}" style="background-image: url('${img}')"> 294 <#if link?has_content> 295 <a href="${link}" target="${target}"> 296 </#if> 297 298 <#if text?has_content> 299 <div class="banner-text-container"> 300 <span>${text}</span> 301 </div> 302 </#if> 303 304 <#if link?has_content> 305 </a> 306 </#if> 307 </div> 308 </#if> 309 </#list> 310 </div> 311 </div> 312 </div> 313 314 <#list curMenuItem.mainMenuItemsBanners.getSiblings()?filter(b -> b.mainMenuItemsBannersType?? && b.mainMenuItemsBannersType.getData() != "slider") as curBanner> 315 <#assign 316 bannerType = curBanner.mainMenuItemsBannersType.getData() 317 img = curBanner.mainMenuItemsBannersImage.getData() 318 text = curBanner.mainMenuItemsBannersText.getData() 319 link = (curBanner.mainMenuItemsBannersLink.getData()?has_content)?string(cache.parseLinkURL(request, curBanner.mainMenuItemsBannersLink.getData()), "") 320 target = (link?has_content)?string((curBanner.mainMenuItemsBannersTargetLink.getData()?has_content)?string(curBanner.mainMenuItemsBannersTargetLink.getData(), cache.getLinkTarget(link)), "") 321 /> 322 323 <#if img?has_content> 324 <div class="side-menu__banner-item ${bannerType}" style="background-image: url('${img}')"> 325 <#if link?has_content> 326 <a href="${link}" target="${target}"> 327 </#if> 328 329 <#if text?has_content> 330 <div class="banner-text-container"> 331 <span>${text}</span> 332 </div> 333 </#if> 334 335 <#if link?has_content> 336 </a> 337 </#if> 338 </div> 339 </#if> 340 </#list> 341 </div> 342 </div> 343 </div> 344 </div> 345 </#if> 346 </div> 347 <#elseif (type == "LINK")> 348 <#assign 349 type = curMenuItem.mainMenuItemsType.getData() 350 sideMenuCategoryIndex = curMenuItem?index + 1 351 sideMenuCategory = type + "-" + sideMenuCategoryIndex 352 /> 353 354 <#if curMenuItem.mainMenuItemsSections.getSiblings()?has_content> 355 <div class="side-menu__body"> 356 <span class="side-menu-back-btn js-side-menu-back-btn d-flex align-items-center d-lg-none"> 357 <i class="icon-arrow-left"></i> 358 ${cache.translate(locale, "Back")} 359 </span> 360 361 <div class="side-menu__see-all <#if text?length gt 15>long-title</#if>"> 362 <div class="side-menu__see-all-title-container"> 363 <span class="side-menu__see-all-title"> 364 ${text} 365 </span> 366 </div> 367 368 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsShowLink.getData())> 369 <div class="side-menu__see-all-link-container"> 370 <a class="side-menu__see-all-link" href="${link}"> 371 <div> 372 <span>${cache.translate(locale, "Show all")}</span> 373 </div> 374 375 <i class="icon-arrow-right"></i> 376 </a> 377 </div> 378 </#if> 379 </div> 380 381 <ul class="side-menu__body-links"> 382 <#list curMenuItem.mainMenuItemsSections.getSiblings() as curSection> 383 <#assign 384 text = curSection.mainMenuItemsSectionsText.getData() 385 link = (curSection.mainMenuItemsSectionsLink.getData()?has_content)?string(cache.parseLinkURL(request, curSection.mainMenuItemsSectionsLink.getData()), "") 386 target = (link?has_content)?string((curSection.mainMenuItemsSectionsTargetLink.getData()?has_content)?string(curSection.mainMenuItemsSectionsTargetLink.getData(), cache.getLinkTarget(link)), "") 387 sideMenuCategorySectionIndex = curSection?index + 1 388 sideMenuSectionCategory = type + "-" + sideMenuCategoryIndex + "-SECTION-" + sideMenuCategorySectionIndex 389 /> 390 391 <li class="side-menu__body-item side-menu__section"> 392 <div class="link-wrapper"> 393 <#assign 394 sectionSubitems = curSection.mainMenuItemsSectionsSubitems.getSiblings() 395 hasSubitems = sectionSubitems?has_content && 396 !(sectionSubitems?size == 1 && 397 (!sectionSubitems[0]?has_content 398 || (sectionSubitems[0].mainMenuItemsSectionsSubitemsText.getData() == "" || (sectionSubitems[0].mainMenuItemsSectionsSubitemsLink.getData()?has_content)?string(cache.parseLinkURL(request, sectionSubitems[0].mainMenuItemsSectionsSubitemsLink.getData()), "") == ""))) 399 /> 400 401 <#if hasSubitems> 402 <#assign sectionData = { 403 "original": curSection, 404 "sideMenuCategory": sideMenuCategory, 405 "sideMenuSectionCategory": sideMenuSectionCategory 406 } /> 407 408 <#assign sectionsWithSubitems = sectionsWithSubitems + [sectionData] /> 409 410 <a class="side-menu__body-link js-open-side-menu justify-content-between" href="javascript:void(0);" data-category="${sideMenuSectionCategory}"> 411 <#elseif link?has_content> 412 <a class="side-menu__body-link" href="${link}" target="${target}"> 413 <#else> 414 <a class="side-menu__body-link" href="javascript:void(0);"> 415 </#if> 416 417 <div class="d-flex align-items-center justify-content-start"> 418 <span> 419 ${text} 420 </span> 421 </div> 422 423 <#if hasSubitems> 424 <i class="icon-chevron-right"></i> 425 </#if> 426 427 </a> 428 </div> 429 </li> 430 </#list> 431 </ul> 432 433 <#if curMenuItem.mainMenuItemsBanners.getSiblings()?has_content> 434 <div class="side-menu__banner-section"> 435 <div id="${sideMenuCategory}-banner" class="side-menu__banner-content"> 436 <div class="side-menu__banner-container"> 437 <div class="side-menu__banner" data-index="0"> 438 <#list curMenuItem.mainMenuItemsBanners.getSiblings() as curBanner> 439 <#assign 440 bannerType = curBanner.mainMenuItemsBannersType.getData() 441 img = curBanner.mainMenuItemsBannersImage.getData() 442 text = curBanner.mainMenuItemsBannersText.getData() 443 link = (curBanner.mainMenuItemsBannersLink.getData()?has_content)?string(cache.parseLinkURL(request, curBanner.mainMenuItemsBannersLink.getData()), "") 444 target = (link?has_content)?string((curBanner.mainMenuItemsBannersTargetLink.getData()?has_content)?string(curBanner.mainMenuItemsBannersTargetLink.getData(), cache.getLinkTarget(link)), "") 445 /> 446 447 <#if img?has_content> 448 <div class="side-menu__banner-item ${bannerType}" style="background-image: url('${img}')"> 449 <#if link?has_content> 450 <a href="${link}" target="${target}"> 451 </#if> 452 453 <#if text?has_content> 454 <div class="banner-text-container"> 455 <span>${text}</span> 456 </div> 457 </#if> 458 459 <#if link?has_content> 460 </a> 461 </#if> 462 </div> 463 </#if> 464 </#list> 465 </div> 466 </div> 467 </div> 468 </div> 469 </#if> 470 </div> 471 </#if> 472 </#if> 473 </div> 474 475 <#-- PANELES DE SUBCATEGORIAS --> 476 <#if categoriesWithChildren?has_content> 477 <#list categoriesWithChildren as itemData> 478 <#assign 479 item = itemData.original 480 parentSideCategoryMenu = itemData.parentSideCategoryMenu 481 children = itemData.children 482 /> 483 484 <div id="sideMenuCategory--${item.code}" class="side-menu__category js-side-category-move" data-level="2" data-parent-panel="${parentSideCategoryMenu}"> 485 <div class="side-menu__body"> 486 <div class="side-menu__see-all <#if item.title?length gt 15>long-title</#if>"> 487 <div class="side-menu__see-all-title-container side-menu__subcategories-title-container"> 488 <span class="side-menu-back-btn js-side-menu-back-btn d-flex align-items-center d-lg-none"> 489 <i class="icon-arrow-left"></i> 490 ${cache.translate(locale, "Back")} 491 </span> 492 493 <#if item.url?has_content> 494 <a class="side-menu__see-all-title" href="${item.url}"> 495 <div> 496 <span>${item.title}</span> 497 </div> 498 499 <i class="icon-arrow-right"></i> 500 </a> 501 <#else> 502 <span class="side-menu__see-all-title"> 503 ${item.title} 504 </span> 505 </#if> 506 </div> 507 </div> 508 509 <ul class="side-menu__body-links"> 510 <#if children?? && children?has_content> 511 <#list children?sort_by("websort") as child> 512 <li class="side-menu__body-item" data-websort="${child.websort}"> 513 <div class="link-wrapper"> 514 <a class="side-menu__body-link" <#if child.url?has_content>href="${child.url}"</#if>> 515 <#if child.title?has_content> 516 <div class="d-flex align-items-center justify-content-start"> 517 <span>${child.title}</span> 518 </div> 519 <#else> 520 <span></span> 521 </#if> 522 </a> 523 </div> 524 </li> 525 </#list> 526 </#if> 527 </ul> 528 </div> 529 </div> 530 </#list> 531 </#if> 532 533 534 <#-- PANELES DE SUBITEMS DE SECCION --> 535 <#if sectionsWithSubitems?has_content> 536 <#list sectionsWithSubitems as sectionData> 537 <#assign 538 curSection = sectionData.original 539 sideMenuCategory = sectionData.sideMenuCategory 540 sideMenuSectionCategory = sectionData.sideMenuSectionCategory 541 text = curSection.mainMenuItemsSectionsText.getData() 542 link = (curSection.mainMenuItemsSectionsLink.getData()?has_content)?string(cache.parseLinkURL(request, curSection.mainMenuItemsSectionsLink.getData()), "") 543 target = (link?has_content)?string((curSection.mainMenuItemsSectionsTargetLink.getData()?has_content)?string(curSection.mainMenuItemsSectionsTargetLink.getData(), cache.getLinkTarget(link)), "") 544 /> 545 546 <div id="sideMenuCategory--${sideMenuSectionCategory}" class="side-menu__category js-side-category-move" data-level="2" data-parent-panel="${sideMenuCategory}"> 547 <div class="side-menu__body"> 548 <span class="side-menu-back-btn js-side-menu-back-btn d-flex align-items-center d-lg-none"> 549 <i class="icon-arrow-left"></i> 550 ${cache.translate(locale, "Back")} 551 </span> 552 553 <div class="side-menu__see-all <#if text?length gt 15>long-title</#if>"> 554 <div class="side-menu__see-all-title-container"> 555 <#if link?has_content> 556 <a class="side-menu__see-all-title" href="${link}" target="${target}"> 557 <div> 558 <span>${text}</span> 559 </div> 560 561 <i class="icon-arrow-right"></i> 562 </a> 563 <#else> 564 <span class="side-menu__see-all-title"> 565 ${text} 566 </span> 567 </#if> 568 </div> 569 </div> 570 571 <ul class="side-menu__body-links"> 572 <#if curSection.mainMenuItemsSectionsSubitems.getSiblings()?has_content> 573 <#list curSection.mainMenuItemsSectionsSubitems.getSiblings() as curSubitem> 574 <#assign 575 text = curSubitem.mainMenuItemsSectionsSubitemsText.getData() 576 link = (curSubitem.mainMenuItemsSectionsSubitemsLink.getData()?has_content)?string(cache.parseLinkURL(request, curSubitem.mainMenuItemsSectionsSubitemsLink.getData()), "") 577 target = (link?has_content)?string((curSubitem.mainMenuItemsSectionsSubitemsTargetLink.getData()?has_content)?string(curSubitem.mainMenuItemsSectionsSubitemsTargetLink.getData(), cache.getLinkTarget(link)), "") 578 /> 579 <li class="side-menu__body-item"> 580 <div class="link-wrapper"> 581 <a class="side-menu__body-link" <#if link?has_content>href="${link}"</#if> <#if target?has_content>target="${target}"</#if>> 582 <#if text?has_content> 583 <div class="d-flex align-items-center justify-content-start"> 584 <span>${text}</span> 585 </div> 586 </#if> 587 </a> 588 </div> 589 </li> 590 </#list> 591 </#if> 592 </ul> 593 </div> 594 </div> 595 </#list> 596 </#if> 597 </li> 598 </#list> 599 </ul> 600 </#macro> 601 602 <#macro drawSideMenu sideMenuType> 603 <#if sideMenuType == "MENU"> 604 <div id="sideMenu" class="side-menu"> 605 <div class="side-menu-container"> 606 <div class="side-menu__body"> 607 <div class="side-menu__close d-none d-lg-flex"> 608 <img alt="Laufen Swiss Bathroom" class="laufen-logo-mini" src="${themeDisplay.getPathThemeImages()}/brand/brand-logo-mini.svg"/> 609 <i class="icon-close icon-close side-menu-close-btn js-side-menu-close-btn"></i> 610 </div> 611 612 <ul class="side-menu__body-links" id="laufen-side-menu-links"> 613 <#list mainMenu.mainMenuItems.getSiblings() as curMenuItem> 614 <li class="side-menu__body-item"> 615 <#assign 616 type = curMenuItem.mainMenuItemsType.getData() 617 text = curMenuItem.mainMenuItemsText.getData() 618 link = (curMenuItem.mainMenuLink.getData()?has_content)?string(cache.parseLinkURL(request, curMenuItem.mainMenuLink.getData()), "") 619 target = (link?has_content)?string((curMenuItem.mainMenuItemsTargetLink.getData()?has_content)?string(curMenuItem.mainMenuItemsTargetLink.getData(), cache.getLinkTarget(link)), "") 620 sideMenuCategoryIndex = curMenuItem?index + 1 621 sideMenuCategory = type + "-" + sideMenuCategoryIndex 622 /> 623 624 <div class="link-wrapper"> 625 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsOpenSide.getData())> 626 <a class="side-menu__body-link js-open-side-menu text-uppercase" href="javascript:void(0);" data-category="${sideMenuCategory}" title="${text}"> 627 <#elseif link?has_content> 628 <a class="side-menu__body-link text-uppercase" href="${link}" target="${target}" title="${text}"> 629 </#if> 630 631 <span> 632 ${text} 633 </span> 634 635 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsOpenSide.getData())> 636 <i class="icon-chevron-right"></i> 637 </#if> 638 639 <#if getterUtil.getBoolean(curMenuItem.mainMenuItemsOpenSide.getData()) || link?has_content> 640 </a> 641 </#if> 642 </div> 643 </#list> 644 </ul> 645 </div> 646 647 <#if (getterUtil.getBoolean(sideMenu.sideMenuShowCountry.getData()) || getterUtil.getBoolean(sideMenu.sideMenuShowLanguage.getData())) || (sideMenu.sideMenuLinks.sideMenuLink.getSiblings()?has_content && sideMenu.sideMenuLinks.sideMenuLink.getSiblings()[0].sideMenuLinkURL.getData()?has_content)> 648 <div class="side-menu__footer"> 649 <ul class="side-menu__footer-links"> 650 <#list sideMenu.sideMenuLinks.sideMenuLink.getSiblings() as curLink> 651 <#assign 652 icon = curLink.sideMenuLinkIcon.getData() 653 iconWidth = curLink.sideMenuLinkWidth.getData() 654 iconHeight = curLink.sideMenuLinkHeight.getData() 655 text = curLink.sideMenuLinkText.getData() 656 link = (curLink.sideMenuLinkURL.getData()?has_content)?string(cache.parseLinkURL(request, curLink.sideMenuLinkURL.getData()), "") 657 target = (link?has_content)?string((curLink.sideMenuLinkTarget.getData()?has_content)?string(curLink.sideMenuLinkTarget.getData(), cache.getLinkTarget(link)), "") 658 /> 659 660 <li class="side-menu__footer-item"> 661 <a class="side-menu__footer-link" href="${link}" target="${target}"> 662 <#if icon?has_content> 663 <#assign style = "" /> 664 <#if iconWidth?has_content && iconWidth != "0"> 665 <#assign style += "width: " + iconWidth + "px;" /> 666 </#if> 667 <#if iconHeight?has_content && iconHeight != "0"> 668 <#assign style += "height: " + iconHeight + "px;" /> 669 </#if> 670 671 <#if text?has_content> 672 <img class="icon-right-space" alt="${curLink.sideMenuLinkIcon.getAttribute("alt")}" data-fileentryid="${curLink.sideMenuLinkIcon.getAttribute("fileEntryId")}" src="${icon}" title="${text}" style="${style}"/> 673 <#else> 674 <img alt="${curLink.sideMenuLinkIcon.getAttribute("alt")}" data-fileentryid="${curLink.sideMenuLinkIcon.getAttribute("fileEntryId")}" src="${icon}" style="${style}" /> 675 </#if> 676 </#if> 677 678 <div><span>${text}</span></div> 679 </a> 680 </li> 681 </#list> 682 683 684 <#if getterUtil.getBoolean(sideMenu.sideMenuShowCountry.getData()) || getterUtil.getBoolean(sideMenu.sideMenuShowLanguage.getData()) || getterUtil.getBoolean(sideMenu.sideMenuShowAdditionalLink.getData())> 685 <#assign linkLocation = "" /> 686 <#if sideMenu.sideMenuAdditionalLink?? && sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkLocation??> 687 <#assign linkLocation = sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkLocation.getData() /> 688 </#if> 689 690 <li class="side-menu__footer-item additional-info ${linkLocation}"> 691 <#if getterUtil.getBoolean(sideMenu.sideMenuShowCountry.getData()) || getterUtil.getBoolean(sideMenu.sideMenuShowLanguage.getData())> 692 <div class="side-menu__footer-item--country menu-country-trigger"> 693 <a class="side-menu__footer-link menu-country-link js-open-side-menu" href="javascript:void(0)" data-category="LANGUAGE" data-groupid="${themeDisplay.getSiteGroupId()}" data-languageid="${themeDisplay.getLanguageId()}"> 694 <#if getterUtil.getBoolean(sideMenu.sideMenuShowCountry.getData())> 695 <span class="menu-country-text-link"> 696 <i class="icon-language icon-right-space"></i> 697 <div><span>${currentCountry.getAssetCategory().getTitle(themeDisplay.getLocale())}</span></div> 698 </span> 699 </#if> 700 701 <#if getterUtil.getBoolean(sideMenu.sideMenuShowLanguage.getData()) && localeList?? && localeList?has_content && localeList?size gt 1> 702 <span class="menu-country-text-link"> 703 <div> 704 <span class="text-uppercase">${themeDisplay.getLocale().getLanguage()}</span> 705 </div> 706 <i class="icon-chevron-down"></i> 707 </span> 708 </#if> 709 </a> 710 </div> 711 </#if> 712 713 <#if getterUtil.getBoolean(sideMenu.sideMenuShowAdditionalLink.getData())> 714 <#assign 715 icon = sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkIcon.getData() 716 iconWidth = sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkWidth.getData() 717 iconHeight = sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkHeight.getData() 718 text = sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkText.getData() 719 link = (sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkURL.getData()?has_content)?string(cache.parseLinkURL(request, sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkURL.getData()), "") 720 target = (link?has_content)?string((sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkTarget.getData()?has_content)?string(sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkTarget.getData(), cache.getLinkTarget(link)), "") 721 /> 722 723 <a class="side-menu__footer-link" href="${link}" target="${target}"> 724 <#if icon?has_content> 725 <#assign style = "" /> 726 <#if iconWidth?has_content && iconWidth != "0"> 727 <#assign style += "width: " + iconWidth + "px;" /> 728 </#if> 729 <#if iconHeight?has_content && iconHeight != "0"> 730 <#assign style += "height: " + iconHeight + "px;" /> 731 </#if> 732 733 <#if text?has_content> 734 <img class="icon-right-space" alt="${sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkIcon.getAttribute("alt")}" data-fileentryid="$sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkIcon.getAttribute("fileEntryId")}" src="${icon}" title="${text}" style="${style}"/> 735 <#else> 736 <img alt="${sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkIcon.getAttribute("alt")}" data-fileentryid="${sideMenu.sideMenuAdditionalLink.sideMenuAdditionalLinkIcon.getAttribute("fileEntryId")}" src="${icon}" style="${style}" /> 737 </#if> 738 </#if> 739 740 <div><span>${text}</span></div> 741 </a> 742 </#if> 743 </li> 744 </#if> 745 </ul> 746 </div> 747 </#if> 748 </div> 749 </div> 750 751 <div class="side-menu-overlay js-side-menu-overlay"></div> 752 753 <#elseif sideMenuType == "LANGUAGE" 754 && ((getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowLanguage.getData())) 755 || (getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowCountry.getData()) && currentCountry?? && currentCountry?has_content))> 756 757 <div id="sideMenuCategory--LANGUAGE" class="side-menu__category side-menu__language" data-level="0"> 758 <div class="side-menu__body"> 759 <div class="side-menu__close d-flex"> 760 <span class="side-menu-back-btn js-side-menu-back-btn d-flex align-items-center d-lg-none"> 761 <i class="icon-arrow-left"></i> 762 ${cache.translate(locale, "Back")} 763 </span> 764 765 <img alt="Laufen Swiss Bathroom" class="laufen-logo-mini" src="${themeDisplay.getPathThemeImages()}/brand/brand-logo-mini.svg"/> 766 <i class="icon-close icon-close side-menu-close-btn js-side-menu-close-btn d-none d-lg-block"></i> 767 </div> 768 769 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowLanguage.getData()) && localeList?? && localeList?has_content && localeList?size gt 1> 770 <div class="language-container"> 771 <p class="language-selector-title text-uppercase">${cache.translate(locale, "Select language")}</p> 772 773 <ul class="language-list"> 774 <#list localeList as marketLocale> 775 <#if themeDisplay.getLocale() != marketLocale> 776 <#assign lpath = "/" /> 777 </#if> 778 779 <li class="language-list-item <#if themeDisplay.getLocale() == marketLocale>active</#if>"> 780 <a href="${cache.getSiteURL(request, marketLocale, lpath, true)}"> 781 ${marketLocale.getDisplayLanguage(themeDisplay.getLocale())} 782 </a> 783 </li> 784 </#list> 785 </ul> 786 </div> 787 </#if> 788 789 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowCountry.getData()) && currentCountry?? && currentCountry?has_content> 790 <div class="country-selector-container"> 791 <p class="language-selector-title text-uppercase">${cache.translate(locale, "Select your country")}</p> 792 </div> 793 794 <div id="continent-parent"></div> 795 </#if> 796 </div> 797 </div> 798 </#if> 799 </#macro> 800 801 <#macro drawSearchHeader> 802 <#assign searchLink = cache.parseLinkURL(request, cache.translate(locale, "/search" )) /> 803 804 <div id="search-header" class="search-header"> 805 <input id="header-search-input" class="search-input" data-url="${searchLink}" name="q" placeholder="${cache.translate(themeDisplay.getLocale(), 'Search')}" type="search" /> 806 807 <a id="header-search-icon" class="search-icon" href="javascript:void(0);" role="button" title="${cache.translate(themeDisplay.getLocale(), 'Search')}"> 808 <span class="icon-search"></span> 809 </a> 810 811 <i class="icon-close" id="header-search-close-icon"></i> 812 </div> 813 </#macro> 814 815 <#function getUserInitials> 816 <#local userInitials = "" /> 817 <#if themeDisplay.getUser().getFirstName()?? && themeDisplay.getUser().getFirstName()?has_content> 818 <#local firstName = themeDisplay.getUser().getFirstName() /> 819 <#local userInitials += firstName?substring(0, 1) /> 820 </#if> 821 <#if themeDisplay.getUser().getLastName()?? && themeDisplay.getUser().getLastName()?has_content> 822 <#local lastName = themeDisplay.getUser().getLastName() /> 823 <#local userInitials += lastName?substring(0, 1) /> 824 </#if> 825 826 <#return userInitials?upper_case /> 827 </#function> 828 829 830 831 <#assign 832 p_Map = productsMap?eval_json 833 u_Layouts = userLayouts?eval_json 834 835 profile_layouts = u_Layouts.profileLayouts 836 837 profile_url = u_Layouts.profileUrl 838 logout_url = u_Layouts.logoutUrl 839 login_url = u_Layouts.loginUrl 840 841 marketTree = cache.getMarketsTree() 842 hasCommerce = cache.checkCommerce(request) 843 currentMarket = cache.getCurrentMarket(request) 844 currentCountry = cache.getCurrentCountry(request) 845 846 htmlC1 = "" 847 htmlC2 = "" 848 htmlC3 = "" 849 htmlCCta = "" 850 /> 851 852 <header id="laufen-restyle-header" class="laufen-restyle-header js-header <#if config.configAuxElements.configAuxElementsAlwaysSticky?? && getterUtil.getBoolean(config.configAuxElements.configAuxElementsAlwaysSticky.getData())>always-sticky</#if>"> 853 <#if themeDisplay.isSignedIn()> 854 <input type="hidden" id="user-initials" value="${getUserInitials()}"> 855 </#if> 856 857 <#-- INIT PROMOTIONAL BANNER --> 858 859 <#if getterUtil.getBoolean(promoBanner.promoBannerShow.getData()) && promoBanner.promoBannerText.getData()??> 860 <div class="promoSubmenu"> 861 <section class="promomenu-section"> 862 <#if promoBanner.promoBannerPopup.getData()?? && promoBanner.promoBannerPopup.getData()?has_content> 863 <div class="promomenu-scroll-wrapper" id="promoScrollWrapper"> 864 <a class="promomenu-link" data-toggle="modal" data-target="#promoBannerDisp" href="#"> 865 ${promoBanner.promoBannerText.getData()} 866 </a> 867 </div> 868 <#else> 869 <div class="promomenu-scroll-wrapper" id="promoScrollWrapper"> 870 <p class="promomenu-text">${promoBanner.promoBannerText.getData()}</p> 871 </div> 872 </#if> 873 <button class="promomenu-scroll-btn" id="promoScrollBtn" aria-label="${cache.translate(locale, "Ver mas")}" aria-hidden="true"> 874 <i class="icon-chevron-right"></i> 875 </button> 876 </section> 877 </div> 878 879 <script> 880 document.addEventListener("DOMContentLoaded", function() { 881 const scrollWrapper = document.getElementById('promoScrollWrapper'); 882 const scrollBtn = document.getElementById('promoScrollBtn'); 883 884 if (!scrollWrapper || !scrollBtn) return; 885 886 function checkScrollable() { 887 if (scrollWrapper.scrollWidth > scrollWrapper.clientWidth) { 888 scrollBtn.classList.add('is-visible'); 889 scrollBtn.setAttribute('aria-hidden', 'false'); 890 checkScrollPosition(); 891 } else { 892 scrollBtn.classList.remove('is-visible'); 893 scrollBtn.setAttribute('aria-hidden', 'true'); 894 } 895 } 896 897 function checkScrollPosition() { 898 const isAtEnd = scrollWrapper.scrollLeft + scrollWrapper.clientWidth >= scrollWrapper.scrollWidth - 5; 899 900 if (isAtEnd) { 901 scrollBtn.classList.add('is-at-end'); 902 scrollBtn.setAttribute('aria-label', '${cache.translate(locale, "Volver al principio")}'); 903 } else { 904 scrollBtn.classList.remove('is-at-end'); 905 scrollBtn.setAttribute('aria-label', '${cache.translate(locale, "Ver mas")}'); 906 } 907 } 908 909 checkScrollable(); 910 window.addEventListener('resize', checkScrollable); 911 912 scrollWrapper.addEventListener('scroll', checkScrollPosition); 913 914 scrollBtn.addEventListener('click', function() { 915 if (scrollBtn.classList.contains('is-at-end')) { 916 scrollWrapper.scrollTo({ left: 0, behavior: 'smooth' }); 917 } else { 918 scrollWrapper.scrollBy({ left: 150, behavior: 'smooth' }); 919 } 920 }); 921 }); 922 </script> 923 </#if> 924 925 <#-- END PROMOTIONAL BANNER --> 926 927 <div class="main-header__wrapper" id="laufen-main-header-wrapper"> 928 <div class="main-navbar"> 929 <#-- INIT SUPRA MENU --> 930 <@initSupraMenus /> 931 932 <section class="supramenu"> 933 <div class="container"> 934 <div class="row"> 935 <div class="col-12 supramenu-cols"> 936 <div class="supramenu-left"> 937 <ul class="supramenu__list supramenu__list--left"> 938 <li class="supramenu__item supramenu__item--hamburger menu-hamburger-trigger"> 939 <a class="supramenu__link menu-hamburger-link side-menu-btn-trigger js-side-menu-btn-trigger"> 940 <span class="menu-hamburger-icon-link"> 941 <i class="icon-hamburger"></i> 942 </span> 943 </a> 944 </li> 945 946 <#-- INIT LANGUAGE & COUNTRY SELECTOR --> 947 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowCountry.getData()) || getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowLanguage.getData())> 948 <li class="supramenu__item supramenu__item--country menu-country-trigger d-none d-lg-block"> 949 <a class="supramenu__link menu-country-link js-open-side-menu" href="javascript:void(0)" data-category="LANGUAGE" data-groupid="${themeDisplay.getSiteGroupId()}" data-languageid="${themeDisplay.getLanguageId()}"> 950 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowCountry.getData())> 951 <span class="menu-country-text-link"> 952 <i class="icon-language icon-right-space"></i> 953 <div><span>${currentCountry.getAssetCategory().getTitle(themeDisplay.getLocale())}</span></div> 954 </span> 955 </#if> 956 957 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowLanguage.getData()) && localeList?? && localeList?has_content && localeList?size gt 1> 958 <span class="menu-country-text-link"> 959 <div> 960 <span class="text-uppercase">${themeDisplay.getLocale().getLanguage()}</span> 961 </div> 962 <i class="icon-chevron-down"></i> 963 </span> 964 </#if> 965 </a> 966 </li> 967 </#if> 968 <#-- END LANGUAGE & COUNTRY SELECTOR --> 969 970 <#-- INIT ADITIONAL SHORTCUTS --> 971 <#if htmlC1?has_content> 972 ${htmlC1} 973 </#if> 974 <#-- END ADDITIONAL SHORTCUTS --> 975 </ul> 976 </div> 977 978 <div class="supramenu-center"> 979 <#if config.configLogo.configLogoImage.getData()?has_content> 980 <#assign 981 logoImg = config.configLogo.configLogoImage.getData() 982 logoImgWidth = config.configLogo.configLogoWidth.getData() 983 logoImgHeight = config.configLogo.configLogoHeight.getData() 984 link = (config.configLogo.configLogoLink.getData()?has_content)?string(cache.parseLinkURL(request, config.configLogo.configLogoLink.getData()), "") 985 target = (link?has_content)?string((config.configLogo.configLogoTargetLink.getData()?has_content)?string(config.configLogo.configLogoTargetLink.getData(), cache.getLinkTarget(link)), "") 986 /> 987 988 <div class="logo-header"> 989 <#if link?has_content> 990 <a href="${link}" target="${target}"> 991 </#if> 992 993 <#assign style = "" /> 994 <#if logoImgWidth?has_content && logoImgWidth != "0"> 995 <#assign style += "width: " + logoImgWidth + "px;" /> 996 </#if> 997 <#if logoImgHeight?has_content && logoImgHeight != "0"> 998 <#assign style += "height: " + logoImgHeight + "px;" /> 999 </#if> 1000 1001 <img alt="${config.configLogo.configLogoImage.getAttribute("alt")}" data-fileentryid="${config.configLogo.configLogoImage.getAttribute("fileEntryId")}" src="${logoImg}" style="${style}" /> 1002 <#if link?has_content> 1003 </a> 1004 </#if> 1005 </div> 1006 </#if> 1007 </div> 1008 1009 <div class="supramenu-right"> 1010 <ul class="supramenu__list supramenu__list--right"> 1011 <#if htmlC2?has_content> 1012 ${htmlC2} 1013 </#if> 1014 1015 <#if htmlC3?has_content> 1016 ${htmlC3} 1017 </#if> 1018 1019 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowPrivate.getData())> 1020 <li id="userMenuLi" class="supramenu__item supramenu__item--login" 1021 data-group="${themeDisplay.getSiteGroupId()}" 1022 data-market="${currentMarket.getCode()}" 1023 data-language="${themeDisplay.getLanguageId()}" 1024 data-debug="${cache.debugMarginals()?c}" 1025 > 1026 <div class="loader-roca active"> 1027 <div class="lds-css"> 1028 </div> 1029 <div class="lds-load"> 1030 <div></div> 1031 <div></div> 1032 <div></div> 1033 </div> 1034 </li> 1035 </#if> 1036 1037 1038 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowCart.getData()) && hasCommerce> 1039 <li class="supramenu__item js-h-cart"> 1040 <a class="right-menu__link" id="cartIcon" href="${cache.getEcommerceURL(request, '/checkout/cart')}" title="${cache.translate(locale, 'Go to cart')}"> 1041 <span class="icon-cart"></span> 1042 <span class="items-cart">-</span> 1043 </a> 1044 </li> 1045 </#if> 1046 1047 <#if htmlCCta?has_content> 1048 <div class="supramenu__item--cta"> 1049 ${htmlCCta} 1050 </div> 1051 </#if> 1052 </ul> 1053 </div> 1054 </div> 1055 </div> 1056 </div> 1057 </section> 1058 <#-- END SUPRA MENU --> 1059 1060 <#-- INIT MAIN MENU --> 1061 <#assign hideMainHeader = config.configAuxElements.configAuxElementsHideMainHeader?? && getterUtil.getBoolean(config.configAuxElements.configAuxElementsHideMainHeader.getData()) /> 1062 1063 1064 <section class="main-nav js-main-nav <#if hideMainHeader>d-none</#if>"> 1065 <div class="main-nav-container container"> 1066 <div class="main-menu-container"> 1067 <@drawMainMenu /> 1068 1069 <div class="logo-search-header container" id="logo-search-header"> 1070 <#if getterUtil.getBoolean(config.configAuxElements.configAuxElementsShowSearch.getData())> 1071 <@drawSearchHeader /> 1072 </#if> 1073 </div> 1074 </div> 1075 </div> 1076 </section> 1077 <#-- END MAIN MENU --> 1078 </div> 1079 1080 <#-- INIT SEARCH MODAL --> 1081 1082 <div id="rs-search-modal" class="r-modal search-modal"></div> 1083 1084 <#-- END SEARCH MODAL --> 1085 1086 <#-- INIT MINI-CART MODAL --> 1087 1088 <div class="r-modal mini-cart-collapse"> 1089 <div class="close-menu"> 1090 <div class="wrapper"> 1091 <a href="javascript:void(0)" class="js-close icon-close"></a> 1092 </div> 1093 </div> 1094 1095 <div class="r-modal__wrapper"></div> 1096 </div> 1097 1098 <#-- END MINI-CART MODAL --> 1099 1100 <#-- INIT PROMOTIONAL BANNER MODAL --> 1101 1102 <#if promoBanner.promoBannerPopup.getData()?? && promoBanner.promoBannerPopup.getData()?has_content> 1103 <div class="lightbox-wrapper"> 1104 <div class="modal fade modal-lightbox" id="promoBannerDisp" tabindex="-1" role="dialog" aria-labelledby="" style="display: none;" aria-hidden="true"> 1105 <div class="modal-dialog modal-lg" role="document" style="top: 20%;"> 1106 <div class="container"> 1107 <div class="close-menu"> 1108 <div class="wrapper"> 1109 <a role="button" data-dismiss="modal" id="promoBannerDisp" class="js-close icon-close"></a> 1110 </div> 1111 </div> 1112 </div> 1113 <div class="r-modal__wrapper"> 1114 <div class="container"> 1115 <section style="background-color:white !important;" class="form-modal"> 1116 <div class="container"> 1117 <div class="row"> 1118 <div class="col-12 col-md-12 promomenu-modal"> 1119 ${promoBanner.promoBannerPopup.getData()} 1120 </div> 1121 </div> 1122 </div> 1123 </section> 1124 </div> 1125 </div> 1126 </div> 1127 </div> 1128 </div> 1129 </#if> 1130 1131 <#-- END PROMOTIONAL BANNER MODAL --> 1132 1133 </div> 1134 1135 <#-- INIT SIDE MENU --> 1136 1137 <@drawSideMenu "MENU" /> 1138 1139 <#-- END SIDE MENU --> 1140 1141 <#-- INIT LANGUAGE & COUNTRY MODAL --> 1142 1143 <@drawSideMenu "LANGUAGE" /> 1144 1145 <#-- END LANGUAGE & COUNTRY MODAL --> 1146 1147 </header> 1148</#if> Acabamento:
Look inox PVD
Peso líquido (kg):
0.5