Регистрация

Создайте аккаунт, чтобы сохранять избранное

или по email
Регистрируясь, вы соглашаетесь с условиями

/**

 * Footer for Electro theme (lombik.ru)

 * Овальное мобильное меню — версия с тотальной зачисткой конкурентов

 */

electro_get_footer();

$lk_url = function_exists(‘wc_get_page_permalink’) ? wc_get_page_permalink(‘myaccount’) : ”;

if (empty($lk_url) || $lk_url === ‘#’) $lk_url = home_url(‘/my-account/’);

$wishlist_count = 0;

if (function_exists(‘YITH_WCWL’)) {

    try {

        $wishlist = YITH_WCWL()->get_products();

        if (is_array($wishlist)) $wishlist_count = count($wishlist);

    } catch (\Throwable $e) {}

}

if ($wishlist_count === 0 && function_exists(‘tinv_wishlist_get_count_lists’)) {

    $wishlist_count = max(0, (int) tinv_wishlist_get_count_lists());

}

if ($wishlist_count === 0 && isset($_COOKIE[‘lombik_wishlist_count’])) {

    $wishlist_count = max(0, (int) $_COOKIE[‘lombik_wishlist_count’]);

}

?>

<!– ОВАЛЬНОЕ МОБИЛЬНОЕ МЕНЮ LOMBIK –>

<div class=”mobile-bottom-nav” id=”mobileBottomNav”>

  <div class=”mobile-nav-oval”>

    <a href=”<?php echo esc_url(home_url(‘/wishlist/’)); ?>” class=”nav-item” id=”navWishlist”>

      <span class=”nav-icon”>

        <svg viewBox=”0 0 24 24″ width=”24″ height=”24″ fill=”none”

             stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”>

          <path d=”M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z”/>

        </svg>

        <span class=”nav-badge” id=”navWishlistBadge”

              data-count=”<?php echo (int) $wishlist_count; ?>”>

          <?php echo (int) $wishlist_count; ?>

        </span>

      </span>

      <span class=”nav-text”>Избранное</span>

    </a>

    <div class=”nav-item nav-item-dropdown-wrapper”>

      <a href=”#” class=”nav-item-inner” id=”callDropdownTrigger”>

        <span class=”nav-icon”>

          <svg viewBox=”0 0 24 24″ width=”24″ height=”24″ fill=”none”

               stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”>

            <path d=”M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z”/>

          </svg>

        </span>

        <span class=”nav-text”>Звонок</span>

      </a>

      <div class=”branches-dropdown” id=”branchesDropdown”>

        <a href=”tel:+79012632844″ class=”dropdown-link”>22 Апреля 26А</a>

        <a href=”tel:+79045848313″ class=”dropdown-link”>Космический пр. 26А</a>

        <a href=”tel:+79502159799″ class=”dropdown-link”>21-я Амурская 43/2В</a>

        <a href=”tel:+79507975978″ class=”dropdown-link”>Химиков 36/2</a>

        <a href=”tel:+79502152296″ class=”dropdown-link”>Заозерная 24а/3 5</a>

        <a href=”tel:+79088042813″ class=”dropdown-link”>75 Гв. Бригады 2</a>

      </div>

    </div>

    <a href=”<?php echo esc_url(home_url(‘/lombik-map/’)); ?>” class=”nav-item”>

      <span class=”nav-icon”>

        <svg viewBox=”0 0 24 24″ width=”24″ height=”24″ fill=”none”

             stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”>

          <path d=”M21 10c0 7-9 13-9 13S3 17 3 10a9 9 0 0 1 18 0z”/>

          <circle cx=”12″ cy=”10″ r=”3″/>

        </svg>

      </span>

      <span class=”nav-text”>Где мы</span>

    </a>

    <div class=”nav-item nav-item-dropdown-wrapper”>

    <a href=”<?php echo esc_url( is_user_logged_in() ? home_url(‘/kabinet/’) : home_url(‘/vhod/’) ); ?>” class=”nav-item-inner” id=”lkDropdownTrigger”>

        <span class=”nav-icon”>

            <svg viewBox=”0 0 24 24″ width=”24″ height=”24″ fill=”none”

                 stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”>

                <path d=”M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2″/>

                <circle cx=”12″ cy=”7″ r=”4″/>

            </svg>

        </span>

        <span class=”nav-text”>Кабинет</span>

    </a>

    <div class=”branches-dropdown” id=”lkDropdown”>

        <?php if ( is_user_logged_in() ) :

    $current_user = wp_get_current_user(); ?>

    <div class=”dropdown-user-info” style=”padding: 10px 16px; font-size: 12px; color: #777; border-bottom: 1px solid var(–lnb-dd-divider);”>

        Привет, <strong><?php echo esc_html($current_user->display_name); ?></strong>

    </div>

    <a href=”<?php echo esc_url(home_url(‘/kabinet/’)); ?>” class=”dropdown-link”>

        <svg class=”dd-icon” viewBox=”0 0 24 24″ fill=”none” stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”><path d=”M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2″/><circle cx=”12″ cy=”7″ r=”4″/></svg>

        Мой профиль

    </a>

    <a href=”<?php echo esc_url(wp_logout_url(home_url())); ?>” class=”dropdown-link” style=”color: #e53935; font-weight: bold;”>

        <svg class=”dd-icon” viewBox=”0 0 24 24″ fill=”none” stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”><path d=”M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4″/><polyline points=”16 17 21 12 16 7″/><line x1=”21″ y1=”12″ x2=”9″ y2=”12″/></svg>

        Выйти

    </a>

<?php else : ?>

    <a href=”<?php echo esc_url(home_url(‘/vhod/’)); ?>” class=”dropdown-link” style=”font-weight: bold;”>

        <svg class=”dd-icon” viewBox=”0 0 24 24″ fill=”none” stroke=”currentColor” stroke-width=”2″ stroke-linecap=”round” stroke-linejoin=”round”><path d=”M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4″/><polyline points=”10 17 15 12 10 7″/><line x1=”15″ y1=”12″ x2=”3″ y2=”12″/></svg>

        Войти / Регистрация

    </a>

<?php endif; ?>

    </div>

</div>

  </div>

</div>

<style>

/* ============================================================

   ТОТАЛЬНАЯ ЗАЧИСТКА СТАРЫХ НИЖНИХ ПАНЕЛЕЙ

   ============================================================ */

.bookmark,

.electro-mobile-nav,

.electro-mobile-bottom-nav,

.electro-mobile-toolbar,

.mobile-toolbar,

.mobile-nav:not(#mobileBottomNav),

.mobile-menu:not(.elementor-nav-menu),

.mobile-bottom-menu,

.mobile-bottom-nav:not(#mobileBottomNav),

.e-navbar,

.footer-navbar,

.mobile-footer-nav,

.bottom-nav-wrap,

#footer-mobile-nav,

.handheld-navigation,

.woocommerce-handheld-footer-bar,

.mobile-app-bar,

.app-bar,

.floating-bar,

.mobile-buttons,

.mobile-cta,

.mobile-actions-bar {

  display: none !important;

  visibility: hidden !important;

  pointer-events: none !important;

}

/* ТЕМА */

:root {

  –lnb-bg:          rgba(255, 255, 255, 0.85);

  –lnb-bg-shrink:   rgba(255, 255, 255, 0.45);

  –lnb-border:      rgba(255, 255, 255, 0.6);

  –lnb-text:        #222;

  –lnb-shadow:      0 2px 8px rgba(0, 0, 0, 0.12);

  –lnb-inset:       inset 0 1px 0 rgba(255, 255, 255, 0.7);

  –lnb-dd-bg:       rgba(255, 255, 255, 0.98);

  –lnb-dd-border:   #e6e6e6;

  –lnb-dd-divider:  #f2f2f2;

  –lnb-dd-hover:    #f5f5f5;

  –lnb-badge-bg:    #e53935;

  –lnb-badge-text:  #fff;

}

@media (prefers-color-scheme: dark) {

  :root {

    –lnb-bg: rgba(28,28,32,0.78); –lnb-bg-shrink: rgba(28,28,32,0.42);

    –lnb-border: rgba(255,255,255,0.08); –lnb-text: #f2f2f2;

    –lnb-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);

    –lnb-inset: inset 0 1px 0 rgba(255,255,255,0.06);

    –lnb-dd-bg: rgba(32,32,36,0.98); –lnb-dd-border: #333;

    –lnb-dd-divider: #2a2a2e; –lnb-dd-hover: #2e2e33;

    –lnb-badge-bg: #ff5252;

  }

}

html.lombik-dark, body.lombik-dark {

  –lnb-bg: rgba(28,28,32,0.78); –lnb-bg-shrink: rgba(28,28,32,0.42);

  –lnb-border: rgba(255,255,255,0.08); –lnb-text: #f2f2f2;

  –lnb-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);

  –lnb-inset: inset 0 1px 0 rgba(255,255,255,0.06);

  –lnb-dd-bg: rgba(32,32,36,0.98); –lnb-dd-border: #333;

  –lnb-dd-divider: #2a2a2e; –lnb-dd-hover: #2e2e33;

  –lnb-badge-bg: #ff5252;

}

/* КОНТЕЙНЕР — z-index выше всех, гарантированный клик */

.mobile-bottom-nav#mobileBottomNav {

  display: flex !important;

  visibility: visible !important;

  position: fixed !important;

  bottom: 10px !important;

  left: 50% !important;

  right: auto !important;

  transform: translateX(-50%) !important;

  width: calc(100vw – 16px) !important;

  max-width: 720px !important;

  justify-content: center !important;

  pointer-events: none;

  z-index: 999999 !important;

  padding: 0 !important;

  box-sizing: border-box !important;

  background: transparent !important;

  border: none !important;

  box-shadow: none !important;

}

.mobile-nav-oval {

  pointer-events: auto !important;

  display: flex;

  justify-content: space-evenly;

  align-items: center;

  width: 100%;

  max-width: 720px;

  padding: 10px 14px;

  background: var(–lnb-bg);

  -webkit-backdrop-filter: blur(12px);

          backdrop-filter: blur(12px);

  border-radius: 40px;

  border: 1px solid var(–lnb-border);

  box-shadow: var(–lnb-shadow), var(–lnb-inset);

  transform-origin: center bottom;

  transition:

    transform 0.35s ease,

    opacity 0.35s ease,

    background 0.35s ease,

    backdrop-filter 0.35s ease,

    -webkit-backdrop-filter 0.35s ease;

  box-sizing: border-box;

}

.mobile-bottom-nav.shrink .mobile-nav-oval {

  transform: scale(0.8);

  opacity: 0.55;

  background: var(–lnb-bg-shrink);

  -webkit-backdrop-filter: blur(6px);

          backdrop-filter: blur(6px);

}

.nav-item {

  flex: 1 1 0;

  min-width: 0;

  display: flex;

  flex-direction: column;

  align-items: center;

  justify-content: center;

  text-decoration: none;

  color: var(–lnb-text);

  font-size: 12px;

  line-height: 1.1;

  padding: 4px 0;

  transition: transform 0.2s ease;

  position: relative;

  cursor: pointer;

}

.nav-item:hover, .nav-item:active { transform: translateY(-2px); }

.nav-icon {

  position: relative;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  width: 24px;

  height: 24px;

  margin-bottom: 4px;

  color: var(–lnb-text);

}

.nav-icon svg { width: 24px; height: 24px; display: block; }

.nav-text {

  font-size: 11px;

  font-weight: 500;

  white-space: nowrap;

  color: var(–lnb-text);

}

.nav-item-dropdown-wrapper { cursor: pointer; }

.nav-item-inner {

  display: flex;

  flex-direction: column;

  align-items: center;

  justify-content: center;

  text-decoration: none;

  color: inherit;

  width: 100%;

}

.nav-badge {

  position: absolute;

  top: -6px;

  right: -8px;

  min-width: 16px;

  height: 16px;

  padding: 0 4px;

  background: var(–lnb-badge-bg);

  color: var(–lnb-badge-text);

  border-radius: 8px;

  font-size: 10px;

  font-weight: 700;

  line-height: 16px;

  text-align: center;

  box-shadow: 0 0 0 2px var(–lnb-bg);

  transition: transform 0.2s ease, opacity 0.2s ease;

}

.nav-badge[data-count=”0″] { opacity: 0; transform: scale(0.6); pointer-events: none; }

.nav-badge.bump { animation: badgeBump 0.4s ease; }

@keyframes badgeBump {

  0% { transform: scale(1); } 50% { transform: scale(1.35); } 100% { transform: scale(1); }

}

.branches-dropdown {

  display: none;

  position: absolute;

  bottom: calc(100% + 12px);

  left: 50%;

  transform: translateX(-50%);

  background: var(–lnb-dd-bg);

  -webkit-backdrop-filter: blur(10px);

          backdrop-filter: blur(10px);

  min-width: 220px;

  box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.25);

  border-radius: 14px;

  border: 1px solid var(–lnb-dd-border);

  padding: 6px 0;

  z-index: 1000000;

  overflow: hidden;

}

.branches-dropdown.show { display: block; }

.dropdown-link {

  color: var(–lnb-text);

  padding: 12px 16px;

  text-decoration: none;

  display: flex;

align-items: center;

gap: 10px;

  font-size: 14px;

  border-bottom: 1px solid var(–lnb-dd-divider);

  text-align: left;

}

.dropdown-link:last-child { border-bottom: none; }

.dropdown-link:hover, .dropdown-link:active { background-color: var(–lnb-dd-hover); }

.dropdown-link {

  color: var(–lnb-text);

  padding: 12px 16px;

  text-decoration: none;

  display: flex;

  align-items: center;

  gap: 10px;

  font-size: 14px;

  border-bottom: 1px solid var(–lnb-dd-divider);

  text-align: left;

}

.dropdown-link:last-child { border-bottom: none; }

.dropdown-link:hover, .dropdown-link:active { background-color: var(–lnb-dd-hover); }

.dd-icon {

  width: 18px;

  height: 18px;

  flex-shrink: 0;

  opacity: 0.75;

}

body { padding-bottom: 90px; }

</style>

<script>

(function() {

const nav = document.getElementById(‘mobileBottomNav’);

const trigger = document.getElementById(‘callDropdownTrigger’);

const dropdown = document.getElementById(‘branchesDropdown’);

const badge = document.getElementById(‘navWishlistBadge’);

// НОВЫЕ ПЕРЕМЕННЫЕ ДЛЯ КАБИНЕТА

const lkTrigger = document.getElementById(‘lkDropdownTrigger’);

const lkDropdown = document.getElementById(‘lkDropdown’);

  if (!nav) return;

  /* ============================================================

     ЖЁСТКАЯ ЗАЧИСТКА DOM (несколько раз, т.к. блоки могут добавляться позже)

     ============================================================ */

  const killSelectors = [

    ‘.bookmark’,

    ‘.electro-mobile-nav’,

    ‘.electro-mobile-bottom-nav’,

    ‘.electro-mobile-toolbar’,

    ‘.mobile-toolbar’,

    ‘.mobile-bottom-menu’,

    ‘.e-navbar’,

    ‘.footer-navbar’,

    ‘.mobile-footer-nav’,

    ‘.bottom-nav-wrap’,

    ‘#footer-mobile-nav’,

    ‘.handheld-navigation’,

    ‘.woocommerce-handheld-footer-bar’,

    ‘.mobile-app-bar’,

    ‘.app-bar’,

    ‘.floating-bar’,

    ‘.mobile-buttons’,

    ‘.mobile-cta’,

    ‘.mobile-actions-bar’

  ];

  function killZombies() {

    // Убираем дубли .mobile-bottom-nav

    document.querySelectorAll(‘.mobile-bottom-nav’).forEach(el => {

      if (el.id !== ‘mobileBottomNav’) {

        el.remove();

      }

    });

    // Убираем всех известных конкурентов

    killSelectors.forEach(sel => {

      document.querySelectorAll(sel).forEach(el => el.remove());

    });

    // Ищем любые fixed-элементы, перекрывающие нижнюю часть экрана

    document.querySelectorAll(‘*’).forEach(el => {

      if (el === nav || nav.contains(el)) return;

      const s = getComputedStyle(el);

      if (s.position !== ‘fixed’) return;

      const rect = el.getBoundingClientRect();

      // Если элемент внизу и большой — подозрительный

      if (rect.bottom > window.innerHeight – 20 &&

          rect.top   > window.innerHeight – 200 &&

          rect.width > window.innerWidth * 0.5 &&

          rect.height < 200 &&

          parseInt(s.zIndex || ‘0’) < 999999) {

        // Пропускаем наши элементы и Elementor popup/overlay

        if (el.closest(‘#mobileBottomNav’)) return;

        if (el.matches(‘header, footer, nav, .site-header, .site-footer, [class*=”cookie”], [class*=”popup”], [class*=”modal”], [class*=”chat”], [class*=”widget”]’)) return;

        // Логируем и убираем

        console.log(‘LOMBIK: убираю подозрительный fixed-блок:’, el.tagName, el.className, el.id);

        el.style.display = ‘none’;

        el.style.pointerEvents = ‘none’;

      }

    });

  }

  // Зачищаем сразу и через задержки (на случай отложенной загрузки)

  killZombies();

  setTimeout(killZombies, 500);

  setTimeout(killZombies, 1500);

  setTimeout(killZombies, 3000);

/* Выпадающие списки (Звонок и Кабинет) */

if (trigger && dropdown) {

    trigger.addEventListener(‘click’, function(e) {

        e.preventDefault(); e.stopPropagation();

        if (lkDropdown) lkDropdown.classList.remove(‘show’); // Закрываем кабинет, если открыли звонок

        dropdown.classList.toggle(‘show’);

    });

}

if (lkTrigger && lkDropdown) {

    lkTrigger.addEventListener(‘click’, function(e) {

        e.preventDefault();

        e.stopPropagation();

        e.stopImmediatePropagation();

        // Определяем авторизацию ПО ФАКТУ содержимого dropdown

        // Если есть пункт “Мой профиль” → значит авторизован

        var hasProfile = !!lkDropdown.querySelector(‘.dropdown-user-info’);

        if (!hasProfile) {

            // Гость — идём на страницу входа

            window.location.href = ‘/vhod/’;

            return false;

        }

        // Авторизованный — открываем dropdown

        if (dropdown) dropdown.classList.remove(‘show’);

        lkDropdown.classList.toggle(‘show’);

        return false;

    }, true);

}

// Закрытие при клике в любое пустое место сайта

document.addEventListener(‘click’, function(e) {

    if (dropdown && !dropdown.contains(e.target) && !trigger.contains(e.target)) {

        dropdown.classList.remove(‘show’);

    }

    if (lkDropdown && !lkDropdown.contains(e.target) && !lkTrigger.contains(e.target)) {

        lkDropdown.classList.remove(‘show’);

    }

});

  /* Скролл */

  let lastY = window.pageYOffset, ticking = false;

  function onScroll() {

    const y = window.pageYOffset, d = y – lastY;

    if (Math.abs(d) > 4) {

      if (d > 0 && y > 80) nav.classList.add(‘shrink’);

      else nav.classList.remove(‘shrink’);

      lastY = y;

    }

    ticking = false;

  }

  window.addEventListener(‘scroll’, () => {

    if (!ticking) { requestAnimationFrame(onScroll); ticking = true; }

  }, { passive: true });

  /* Счётчик */

  function setBadge(n) {

    if (!badge) return;

    n = Math.max(0, parseInt(n, 10) || 0);

    const old = parseInt(badge.getAttribute(‘data-count’), 10) || 0;

    badge.textContent = n;

    badge.setAttribute(‘data-count’, n);

    if (n > old) { badge.classList.remove(‘bump’); void badge.offsetWidth; badge.classList.add(‘bump’); }

  }

  window.addEventListener(‘lombik:wishlist-changed’, e => {

    if (e.detail && typeof e.detail.count !== ‘undefined’) setBadge(e.detail.count);

  });

  document.addEventListener(‘added_to_wishlist’, () => {

    setBadge((parseInt(badge?.getAttribute(‘data-count’),10)||0) + 1);

  });

  document.addEventListener(‘removed_from_wishlist’, () => {

    setBadge((parseInt(badge?.getAttribute(‘data-count’),10)||0) – 1);

  });

  /* Тёмная тема */

  const THEME_KEY = ‘lombik_theme’;

  const saved = localStorage.getItem(THEME_KEY);

  if (saved === ‘dark’) document.documentElement.classList.add(‘lombik-dark’);

  if (saved === ‘light’) document.documentElement.classList.remove(‘lombik-dark’);

  window.addEventListener(‘lombik:toggle-theme’, () => {

    const isDark = document.documentElement.classList.toggle(‘lombik-dark’);

    localStorage.setItem(THEME_KEY, isDark ? ‘dark’ : ‘light’);

  });

})();

</script>

<!– Debug Mapbox –>

<script>

document.addEventListener(‘DOMContentLoaded’, function() {

    const el = document.getElementById(‘lombik-map’);

    if (!el) { console.log(‘LOMBIK DEBUG: контейнер не найден’); return; }

    console.log(‘LOMBIK DEBUG data-lat:’, el.dataset.lat);

    console.log(‘LOMBIK DEBUG data-lng:’, el.dataset.lng);

    console.log(‘LOMBIK DEBUG data-zoom:’, el.dataset.zoom);

    console.log(‘LOMBIK DEBUG data-branches:’, el.dataset.branches);

    console.log(‘LOMBIK DEBUG lombikMapData:’, typeof lombikMapData !== ‘undefined’ ? lombikMapData : ‘НЕ ОПРЕДЕЛЁН’);

});

</script>

SHOPPING CART

close
Яндекс.Метрика
0 Избранное Где мы