3 września, 2026
Hawkly - Sklep SEO

PrestaShop 1.7 – automatyczne ukrywanie produktów ze stanem magazynowym 0

W sklepie internetowym nie zawsze chcemy wyświetlać produkty, których aktualnie nie ma na magazynie. Ręczne sprawdzanie stanów i ukrywanie niedostępnych produktów byłoby jednak czasochłonne, szczególnie w przypadku większego asortymentu.

W PrestaShop 1.7 można zautomatyzować ten proces. Jednym ze sposobów jest utworzenie cyklicznego zdarzenia bezpośrednio w bazie danych MySQL/MariaDB, które będzie regularnie sprawdzać stany magazynowe i zmieniać widoczność produktów z zerową ilością.

Dzięki temu nie musimy ręcznie ukrywać każdego produktu ani instalować dodatkowego modułu.

Jak automatycznie ukrywać produkty ze stanem 0 w PrestaShop 1.7?

W pierwszej kolejności logujemy się do narzędzia służącego do zarządzania bazą danych, np. phpMyAdmin.

Wybieramy bazę danych naszego sklepu, a następnie przechodzimy do sekcji umożliwiającej zarządzanie zdarzeniami (Events).

Tworzymy nowe zdarzenie i ustawiamy jego cykliczne wykonywanie, np. co 12 godzin, godzinę lub 30 minut – w zależności od tego, jak często zmieniają się stany magazynowe w naszym sklepie.

Następnie jako wykonywane zapytanie SQL możemy zastosować:

UPDATE ps_product_shop
SET visibility = 'none'
WHERE id_product IN (
    SELECT id_product
    FROM ps_stock_available
    WHERE quantity = 0
      AND id_product_attribute = 0
);

Zapytanie wyszukuje produkty, których ilość w tabeli stanów magazynowych wynosi 0, a następnie ustawia ich widoczność na none w tabeli ps_product_shop.

W rezultacie produkty spełniające określony warunek przestają być widoczne w sklepie.

Uwaga na prefiks tabel PrestaShop

W przykładzie zastosowany został standardowy prefiks:

ps_

Nie każda instalacja PrestaShop korzysta jednak z takiego prefiksu.

Jeżeli tabele w bazie danych mają przykładowo nazwy:

abc_product_shop
abc_stock_available

zapytanie należy odpowiednio zmodyfikować:

UPDATE abc_product_shop
SET visibility = 'none'
WHERE id_product IN (
    SELECT id_product
    FROM abc_stock_available
    WHERE quantity = 0
      AND id_product_attribute = 0
);

Przed wykonaniem zapytania należy więc sprawdzić rzeczywiste nazwy tabel znajdujących się w bazie danych sklepu.

Jak często wykonywać sprawdzanie stanów magazynowych?

Częstotliwość zależy przede wszystkim od wielkości sklepu i sposobu aktualizacji magazynu.

Jeżeli stany zmieniają się sporadycznie, wykonanie operacji co 12 godzin może być wystarczające. W sklepie z dużą liczbą zamówień lub często aktualizowanym magazynem można zastosować krótszy interwał, np. godzinę lub 30 minut.

Nie ma jednak sensu wykonywać zapytania bardzo często, jeżeli stany magazynowe aktualizowane są tylko kilka razy dziennie.

Co z produktami, które ponownie pojawią się na magazynie?

Tutaj pojawia się istotna kwestia. Powyższe zapytanie wyłącznie ukrywa produkty ze stanem 0.

Jeżeli produkt ponownie pojawi się na magazynie, przedstawiona reguła nie przywróci automatycznie jego wcześniejszej widoczności.

Można oczywiście przygotować drugie zapytanie, np.:

UPDATE ps_product_shop
SET visibility = 'both'
WHERE id_product IN (
    SELECT id_product
    FROM ps_stock_available
    WHERE quantity > 0
      AND id_product_attribute = 0
);

Takie rozwiązanie trzeba jednak stosować ostrożnie.

visibility = 'both' oznacza przywrócenie widoczności produktu zarówno w katalogu, jak i wynikach wyszukiwania. Jeżeli część produktów została wcześniej celowo ukryta z innych powodów, automatyczne zapytanie może niepotrzebnie ponownie je wyświetlić.

Dlatego w bardziej rozbudowanym sklepie lepiej zastosować dodatkowy mechanizm pozwalający rozróżnić produkty ukryte automatycznie z powodu braku towaru od produktów ukrytych ręcznie przez administratora.

Ważne: produkty z kombinacjami

Przedstawione zapytanie wykorzystuje warunek:

id_product_attribute = 0

Oznacza to, że należy zwrócić szczególną uwagę na produkty posiadające kombinacje, np. różne rozmiary, kolory lub warianty.

Produkt może mieć zerowy stan na poziomie jednego wpisu, podczas gdy jedna z jego kombinacji nadal pozostaje dostępna.

W sklepie wykorzystującym kombinacje produktów logika powinna więc uwzględniać sposób przechowywania i zarządzania stanami magazynowymi w konkretnej instalacji PrestaShop.

Czy warto ukrywać wszystkie produkty ze stanem 0?

Niekoniecznie.

Z punktu widzenia sprzedaży i SEO całkowite ukrywanie niedostępnych produktów nie zawsze jest najlepszym rozwiązaniem. Jeżeli produkt jest chwilowo niedostępny, ale wkrótce wróci do sprzedaży, pozostawienie jego strony może być korzystniejsze.

Użytkownik może wtedy zobaczyć informację o braku produktu, sprawdzić jego opis, znaleźć podobne towary lub – jeżeli sklep posiada taką funkcję – poprosić o powiadomienie o ponownej dostępności.

Szczególnie ostrożnie warto podchodzić do produktów, których strony posiadają ruch organiczny, linki zewnętrzne lub dobre pozycje w Google.

Automatyczne ukrywanie produktów warto więc stosować przede wszystkim wtedy, gdy odpowiada to przyjętej strategii zarządzania katalogiem.

Zanim zmodyfikujesz bazę danych PrestaShop

Bezpośrednia modyfikacja bazy danych zawsze wiąże się z pewnym ryzykiem.

Przed utworzeniem automatycznego zdarzenia warto wykonać pełną kopię zapasową bazy danych i najpierw przetestować zapytanie na środowisku testowym.

Należy również pamiętać, że nie każdy hosting pozwala użytkownikowi tworzyć zdarzenia MySQL/MariaDB. Mechanizm Event Scheduler może być wyłączony lub niedostępny na danym koncie hostingowym.

W takiej sytuacji alternatywą może być zadanie CRON uruchamiające odpowiedni skrypt lub dedykowany moduł PrestaShop.

Automatyczne ukrywanie produktów bez dodatkowego modułu

Automatyzacja ukrywania produktów ze stanem magazynowym równym 0 może zaoszczędzić sporo czasu, szczególnie w sklepach posiadających setki lub tysiące produktów.

Nie trzeba jednak od razu instalować płatnego modułu. W odpowiednim środowisku wystarczy wykorzystać cykliczne zadanie i właściwie przygotowane zapytanie SQL.

Najważniejsze jest wcześniejsze sprawdzenie prefiksu tabel, obsługi kombinacji, konfiguracji wielu sklepów oraz sposobu zarządzania stanami magazynowymi.

Samo zapytanie SQL jest proste. Znacznie ważniejsze jest upewnienie się, że jego logika odpowiada sposobowi działania konkretnego sklepu i nie spowoduje przypadkowego ukrycia produktów, które powinny pozostać dostępne dla klientów.

OCEŃ TEN ARTYKUŁ

Średnia ocena 0 / 5. Ilość głosów 0

1
1
Twój koszyk
LINKI EDUGOV
Linki EDU/GOV
1 X 150,00 zł = 150,00 zł
logo hawkly czarne przezroczyste duze
Przegląd prywatności

Ta strona korzysta z ciasteczek, aby zapewnić Ci najlepszą możliwą obsługę. Informacje o ciasteczkach są przechowywane w przeglądarce i wykonują funkcje takie jak rozpoznawanie Cię po powrocie na naszą stronę internetową i pomaganie naszemu zespołowi w zrozumieniu, które sekcje witryny są dla Ciebie najbardziej interesujące i przydatne.