// pizza-carousel.js - исправленная версия (function() { console.log('🔵 Глобальный скрипт Park&Pizza запущен'); const galleries = { bol: [ "https://delaitut.ru/pizza/gallery/bol/1.jpg", "https://delaitut.ru/pizza/gallery/bol/2.jpg", "https://delaitut.ru/pizza/gallery/bol/3.jpg" ], nem: [ "https://delaitut.ru/pizza/gallery/nem/1.jpg", "https://delaitut.ru/pizza/gallery/nem/2.jpg", "https://delaitut.ru/pizza/gallery/nem/3.jpg" ], onega: [ "https://delaitut.ru/pizza/gallery/onega/1.jpg", "https://delaitut.ru/pizza/gallery/onega/2.jpg", "https://delaitut.ru/pizza/gallery/onega/3.jpg" ] }; function initSingleCarousel(container, images) { if (!images || !images.length) return false; const track = container.querySelector('.slider-track'); const prevBtn = container.querySelector('.btn-prev'); const nextBtn = container.querySelector('.btn-next'); const dotsContainer = container.parentElement.querySelector('.slider-dots'); if (!track || !dotsContainer) return false; track.innerHTML = ''; images.forEach(src => { const slide = document.createElement('div'); slide.className = 'slide'; const img = document.createElement('img'); img.src = src; img.alt = 'Фото ресторана'; img.loading = 'lazy'; slide.appendChild(img); track.appendChild(slide); }); const total = images.length; let currentIndex = 0; dotsContainer.innerHTML = ''; for (let i = 0; i < total; i++) { const dot = document.createElement('div'); dot.className = 'dot'; if (i === 0) dot.classList.add('active'); dot.addEventListener('click', () => goToSlide(i)); dotsContainer.appendChild(dot); } function updateDots() { dotsContainer.querySelectorAll('.dot').forEach((dot, i) => { dot.classList.toggle('active', i === currentIndex); }); } function goToSlide(index) { if (index < 0) index = total - 1; if (index >= total) index = 0; currentIndex = index; track.style.transform = `translateX(-${currentIndex * 100}%)`; updateDots(); } prevBtn.onclick = () => goToSlide(currentIndex - 1); nextBtn.onclick = () => goToSlide(currentIndex + 1); goToSlide(0); return true; } // Главная функция переинициализации ВСЕГО window.fullInit = function() { console.log('🟡 fullInit: переинициализация табов и каруселей'); // 1. Инициализация табов const tabBtns = document.querySelectorAll('.tab-btn'); const tabContents = document.querySelectorAll('.tab-content'); if (tabBtns.length > 0) { // Удаляем старые обработчики (через клонирование) tabBtns.forEach(btn => { const newBtn = btn.cloneNode(true); btn.parentNode.replaceChild(newBtn, btn); }); // Навешиваем новые обработчики const freshBtns = document.querySelectorAll('.tab-btn'); freshBtns.forEach(btn => { btn.addEventListener('click', function(e) { e.preventDefault(); const tabId = this.getAttribute('data-tab'); freshBtns.forEach(b => b.classList.remove('active')); this.classList.add('active'); tabContents.forEach(content => { content.classList.remove('active'); if (content.id === tabId) { content.classList.add('active'); } }); }); }); } // 2. Инициализация каруселей (сначала сбрасываем флаги) document.querySelectorAll('.slider-container').forEach(container => { const key = container.getAttribute('data-gallery'); if (galleries[key]) { initSingleCarousel(container, galleries[key]); console.log(`✅ Карусель ${key} пересоздана`); } }); }; // Запускаем при загрузке if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', window.fullInit); } else { window.fullInit(); } // Принудительная проверка каждые 2 секунды (костыль, но работает) setInterval(window.fullInit, 2000); // Следим за изменениями в DOM const observer = new MutationObserver(function() { window.fullInit(); }); observer.observe(document.body, { childList: true, subtree: true }); console.log('🔵 Скрипт готов: будет пересоздавать табы и карусели каждые 2 секунды'); })();
logo

Технический партнерsellkit.cc

Внешний вид готовых блюд может немного отличаться от представленных в меню изображений*

park&pizza