// Rozszerzona wersja z dodatkowymi opcjami class CartAbandonmentNotifier { constructor(options = {}) { this.config = { originalTitle: document.title, alertTitles: [ '🛒 Nie zapomnij o swoich produktach!', '⏰ Twój koszyk czeka na Ciebie!', '💰 Dokończ zakupy teraz!' ], blinkInterval: 2000, titleRotationInterval: 6000, showFavicon: true, customMessages: true, ...options }; this.state = { blinkTimer: null, rotationTimer: null, isBlinking: false, cartHasItems: false, currentTitleIndex: 0, originalFavicon: null }; this.init(); } // Sprawdzanie stanu koszyka z większą liczbą metod async checkCartStatus() { try { // Metoda 1: PrestaShop global object if (typeof prestashop !== 'undefined' && prestashop.cart) { this.state.cartHasItems = prestashop.cart.products_count > 0; return; } // Metoda 2: AJAX request const response = await fetch(prestashop.urls.base_url + 'index.php?controller=cart&ajax=1&action=refresh', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'ajax=1' }); const data = await response.json(); if (data.cart) { this.state.cartHasItems = data.cart.products_count > 0; return; } } catch (error) { console.warn('Błąd AJAX:', error); } // Metoda 3: DOM parsing jako fallback const cartElements = [ '.cart-products-count', '.shopping-cart .count', '#cart-total-quantity', '[data-cart-quantity]' ]; for (const selector of cartElements) { const element = document.querySelector(selector); if (element) { const count = parseInt(element.textContent) || parseInt(element.getAttribute('data-cart-quantity')) || 0; this.state.cartHasItems = count > 0; return; } } } // Zmiana favicon changeFavicon(isAlert = false) { if (!this.config.showFavicon) return; const favicon = document.querySelector('link[rel="icon"], link[rel="shortcut icon"]'); if (!favicon) return; if (isAlert && !this.state.originalFavicon) { this.state.originalFavicon = favicon.href; // Tworzenie prostej ikonki alertu (czerwona kropka) const canvas = document.createElement('canvas'); canvas.width = 32; canvas.height = 32; const ctx = canvas.getContext('2d'); ctx.fillStyle = '#ff0000'; ctx.beginPath(); ctx.arc(26, 6, 6, 0, 2 * Math.PI); ctx.fill(); favicon.href = canvas.toDataURL(); } else if (!isAlert && this.state.originalFavicon) { favicon.href = this.state.originalFavicon; } } // Rotacja komunikatów getNextTitle() { const title = this.config.alertTitles[this.state.currentTitleIndex]; this.state.currentTitleIndex = (this.state.currentTitleIndex + 1) % this.config.alertTitles.length; return title; } // Rozpoczęcie migania z rotacją komunikatów startBlinking() { if (this.state.isBlinking || !this.state.cartHasItems) return; this.state.isBlinking = true; let showAlert = true; let currentAlertTitle = this.getNextTitle(); this.changeFavicon(true); // Timer migania tytułu this.state.blinkTimer = setInterval(() => { document.title = showAlert ? currentAlertTitle : this.config.originalTitle; showAlert = !showAlert; }, this.config.blinkInterval); // Timer rotacji komunikatów if (this.config.alertTitles.length > 1) { this.state.rotationTimer = setInterval(() => { currentAlertTitle = this.getNextTitle(); }, this.config.titleRotationInterval); } } // Zatrzymanie wszystkich efektów stopBlinking() { if (this.state.blinkTimer) { clearInterval(this.state.blinkTimer); this.state.blinkTimer = null; } if (this.state.rotationTimer) { clearInterval(this.state.rotationTimer); this.state.rotationTimer = null; } this.state.isBlinking = false; document.title = this.config.originalTitle; this.changeFavicon(false); } // Obsługa zmian widoczności async handleVisibilityChange() { await this.checkCartStatus(); if (document.hidden && this.state.cartHasItems) { this.startBlinking(); } else { this.stopBlinking(); } } // Inicjalizacja init() { this.checkCartStatus(); // Page Visibility API document.addEventListener('visibilitychange', () => this.handleVisibilityChange()); // Nasłuchiwanie zmian w koszyku PrestaShop if (typeof prestashop !== 'undefined') { prestashop.on('updateCart', () => { this.checkCartStatus().then(() => { if (!this.state.cartHasItems && this.state.isBlinking) { this.stopBlinking(); } }); }); } // Obsługa przycisków dodawania do koszyka document.addEventListener('click', (e) => { if (e.target.closest('.add-to-cart, .remove-from-cart, [data-button-action="add-to-cart"]')) { setTimeout(() => this.checkCartStatus(), 500); } }); // Czyszczenie przed zamknięciem window.addEventListener('beforeunload', () => this.stopBlinking()); } } // Inicjalizacja z custom konfiguracją document.addEventListener('DOMContentLoaded', function() { new CartAbandonmentNotifier({ alertTitles: [ '🛒 Masz produkty w koszyku!', '⚡ Wróć i dokończ zakupy!', '🎯 Twoje produkty czekają na Ciebie!' ], blinkInterval: 1500, titleRotationInterval: 5000 }); });

Przechowywanie żywności

Odpowiednie przechowywanie żywności to ważny aspekt codziennego życia. Pojemniki na przyprawy i produkty sypkie, przyprawniki, orgaznizery przydadzą się w każdej kuchni i znacznie ułatwią przygotowanie ulubionych potraw. Mają dużo zalet, są praktyczne i przede wszystkim chronią żywność przed zepsuciem. Wyeksponowane na półce staną się świetną ozdobą wnętrza i pozwolą zachować ład i porządek. W kuchni nie może też zabraknąć koszyków i mis na owoce, pojemników na jajka, chlebaków, czy różnego rodzaju słoików i butelek. Wszystko to znaleźć można w naszej ofercie.

Przechowywanie żywności

Aktywne filtry

  • Kolor: Antracyt
  • Kolor: Brązowy lub kremowy
  • Kolor: Różowy, biały
  • Kolor: Transparentny

Odpowiednie przechowywanie żywności ma duże znaczenie dla Twojego zdrowia. Sprawdź pojemniki do przechowywania żywności w sklepie Prima-Deco

Żeby dłużej zachować świeżość oraz smak żywności musisz ją odpowiednio przechowywać. Ma to też wpływ na jej przydatność do spożycia. Dlatego stosując odpowiednie pojemniki do przechowywania przedłużysz trwałość produktów spożywczych i zachowasz porządek w kuchennej szafce czy półce.

W czym najlepiej przechowywać żywność?

Przechowywanie żywności w odpowiednich warunkach jest kluczowe dla zachowania jej jakości i świeżości. Wiele czynników, takich jak temperatura, wilgotność oraz światło, może wpływać na jej przydatność do spożycia. Dlatego ważne jest, aby przechowywać różne produkty spożywcze w odpowiednich miejscach.

Warzywa i owoce najlepiej trzymać w chłodnym i suchym miejscu, aby opóźnić procesy dojrzewania. Gdy chcemy mieć je pod ręką, gotowe do spożycia przydadzą się odpowiednie koszyki na owoce, które doskonale zaprezentują się na stole czy kuchennym blacie. Wszelkie suche produkty spożywcze, takie jak makaron, ryż czy płatki śniadaniowe, powinny być przechowywane w szczelnie zamkniętych pojemnikach, aby nie zawilgotniały. Chlebak pozwoli odpowiednio przechować chleb, bułki i inne pieczywo by tak szybko nie zczerstwiało. Dbanie o odpowiednie warunki przechowywania żywności przyczyni się do dłuższej trwałości i zachowania jej wartości odżywczych.

Pojemniki do przechowywania żywności

Dostępne w różnych kształtach i rozmiarach, pojemniki do przechowywania żywności są idealne do przechowywania zarówno suchych produktów, jak i tych już przyrządzonych. Wykonane z trwałych materiałów, takich jak szkło, plastik czy metal, zapewniają długotrwałą ochronę żywności. Niektóre pojemniki można bez problemu zamrażać czy podgrzewać, co czyni je jeszcze bardziej praktycznymi. Wiele pojemników do przechowywania żywności posiada także szczelne pokrywki, które zapobiegają wyciekowi płynów czy ulatnianiu się zapachów. Dzięki temu można łatwo i bezpiecznie przechowywać żywność w lodówce, szafkach czy nawet w plecaku.

Pojemniki do przechowywania żywności są nie tylko praktyczne, ale także ekologiczne, pozwalając uniknąć konieczności korzystania z jednorazowych opakowań. Połowa marnowanej żywności pochodzi z gospodarstw domowych, dlatego warto poznać sposoby na właściwe przechowywanie żywności. 

// Rozszerzona wersja z dodatkowymi opcjami class CartAbandonmentNotifier { constructor(options = {}) { this.config = { originalTitle: document.title, alertTitles: [ '🛒 Nie zapomnij o swoich produktach!', '⏰ Twój koszyk czeka na Ciebie!', '💰 Dokończ zakupy teraz!' ], blinkInterval: 2000, titleRotationInterval: 6000, showFavicon: true, customMessages: true, ...options }; this.state = { blinkTimer: null, rotationTimer: null, isBlinking: false, cartHasItems: false, currentTitleIndex: 0, originalFavicon: null }; this.init(); } // Sprawdzanie stanu koszyka z większą liczbą metod async checkCartStatus() { try { // Metoda 1: PrestaShop global object if (typeof prestashop !== 'undefined' && prestashop.cart) { this.state.cartHasItems = prestashop.cart.products_count > 0; return; } // Metoda 2: AJAX request const response = await fetch(prestashop.urls.base_url + 'index.php?controller=cart&ajax=1&action=refresh', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'ajax=1' }); const data = await response.json(); if (data.cart) { this.state.cartHasItems = data.cart.products_count > 0; return; } } catch (error) { console.warn('Błąd AJAX:', error); } // Metoda 3: DOM parsing jako fallback const cartElements = [ '.cart-products-count', '.shopping-cart .count', '#cart-total-quantity', '[data-cart-quantity]' ]; for (const selector of cartElements) { const element = document.querySelector(selector); if (element) { const count = parseInt(element.textContent) || parseInt(element.getAttribute('data-cart-quantity')) || 0; this.state.cartHasItems = count > 0; return; } } } // Zmiana favicon changeFavicon(isAlert = false) { if (!this.config.showFavicon) return; const favicon = document.querySelector('link[rel="icon"], link[rel="shortcut icon"]'); if (!favicon) return; if (isAlert && !this.state.originalFavicon) { this.state.originalFavicon = favicon.href; // Tworzenie prostej ikonki alertu (czerwona kropka) const canvas = document.createElement('canvas'); canvas.width = 32; canvas.height = 32; const ctx = canvas.getContext('2d'); ctx.fillStyle = '#ff0000'; ctx.beginPath(); ctx.arc(26, 6, 6, 0, 2 * Math.PI); ctx.fill(); favicon.href = canvas.toDataURL(); } else if (!isAlert && this.state.originalFavicon) { favicon.href = this.state.originalFavicon; } } // Rotacja komunikatów getNextTitle() { const title = this.config.alertTitles[this.state.currentTitleIndex]; this.state.currentTitleIndex = (this.state.currentTitleIndex + 1) % this.config.alertTitles.length; return title; } // Rozpoczęcie migania z rotacją komunikatów startBlinking() { if (this.state.isBlinking || !this.state.cartHasItems) return; this.state.isBlinking = true; let showAlert = true; let currentAlertTitle = this.getNextTitle(); this.changeFavicon(true); // Timer migania tytułu this.state.blinkTimer = setInterval(() => { document.title = showAlert ? currentAlertTitle : this.config.originalTitle; showAlert = !showAlert; }, this.config.blinkInterval); // Timer rotacji komunikatów if (this.config.alertTitles.length > 1) { this.state.rotationTimer = setInterval(() => { currentAlertTitle = this.getNextTitle(); }, this.config.titleRotationInterval); } } // Zatrzymanie wszystkich efektów stopBlinking() { if (this.state.blinkTimer) { clearInterval(this.state.blinkTimer); this.state.blinkTimer = null; } if (this.state.rotationTimer) { clearInterval(this.state.rotationTimer); this.state.rotationTimer = null; } this.state.isBlinking = false; document.title = this.config.originalTitle; this.changeFavicon(false); } // Obsługa zmian widoczności async handleVisibilityChange() { await this.checkCartStatus(); if (document.hidden && this.state.cartHasItems) { this.startBlinking(); } else { this.stopBlinking(); } } // Inicjalizacja init() { this.checkCartStatus(); // Page Visibility API document.addEventListener('visibilitychange', () => this.handleVisibilityChange()); // Nasłuchiwanie zmian w koszyku PrestaShop if (typeof prestashop !== 'undefined') { prestashop.on('updateCart', () => { this.checkCartStatus().then(() => { if (!this.state.cartHasItems && this.state.isBlinking) { this.stopBlinking(); } }); }); } // Obsługa przycisków dodawania do koszyka document.addEventListener('click', (e) => { if (e.target.closest('.add-to-cart, .remove-from-cart, [data-button-action="add-to-cart"]')) { setTimeout(() => this.checkCartStatus(), 500); } }); // Czyszczenie przed zamknięciem window.addEventListener('beforeunload', () => this.stopBlinking()); } } // Inicjalizacja z custom konfiguracją document.addEventListener('DOMContentLoaded', function() { new CartAbandonmentNotifier({ alertTitles: [ '🛒 Masz produkty w koszyku!', '⚡ Wróć i dokończ zakupy!', '🎯 Twoje produkty czekają na Ciebie!' ], blinkInterval: 1500, titleRotationInterval: 5000 }); });

New Account Register

Already have an account?
Log in instead Lub Reset password