Moduł generuje pliki produktowe dla porównywarek i systemów reklamowych – Google Shopping, Meta, Ceneo i ChatGPT – i udostępnia je pod stałym adresem chronionym tokenem.
Co moduł robi
Feedy są definiowane w panelu (kontroler AdminPdFeeds) i przechowywane w tabeli
ps_pd_feeds_feed; każde uruchomienie generatora zapisuje wiersz do
ps_pd_feeds_log – datę, status, liczbę produktów, czas trwania i komunikat. Gotowy plik
udostępnia kontroler front office feed.
Wymagania
- PrestaShop 1.6, 1.7, 8 lub 9.
- Możliwość wywołania adresu URL z zewnątrz, jeśli generowanie ma iść z crona.
- Brak ionCube.
Instalacja
- Panel → Moduły → Menedżer modułów → Wgraj moduł.
- Instalator tworzy obie tabele i zakładkę Feedy produktowe w panelu.
- Dodaj pierwszy feed: nazwa, platforma, język, obsługa wariantów, ograniczenie do kategorii lub producenta.
Adres feedu
Każdy feed dostaje własny token i jest dostępny pod adresem:
/index.php?fc=module&module=pd_feeds&controller=feed&id_feed=1&token=XXXX
Token jest sprawdzany porównaniem odpornym na atak czasowy; adres bez tokenu albo z niepoprawnym zwraca 403. Ten adres wkleja się w Google Merchant Center, Meta Commerce Manager albo panel Ceneo.
Generowanie automatyczne
Wszystkie feedy naraz przelicza wywołanie:
/index.php?fc=module&module=pd_feeds&controller=feed®enerate=1&cron_token=XXXX
gdzie cron_token musi się zgadzać z wartością klucza PD_FEEDS_CRON_TOKEN
z konfiguracji modułu. Wywołanie warto podpiąć pod zadanie cron raz na dobę, w godzinach małego ruchu.
Pojedynczy feed można też przeliczyć ręcznie przyciskiem Generuj teraz na liście.
Dziennik
Przy każdym feedzie jest odnośnik Dziennik z historią generowania: data, status, liczba produktów, czas trwania i komunikat błędu. To pierwsze miejsce, do którego warto zajrzeć, gdy platforma zgłasza, że plik jest pusty albo nieaktualny.
Rozwiązywanie problemów
Platforma odrzuca produkty z powodu braku ceny lub dostępności
Porównywarki wymagają kompletu pól. Sprawdź, czy produkty mają ustaloną cenę, stan magazynowy i zdjęcie główne – produkty bez zdjęcia bywają odrzucane w całości.
Feed jest pusty
Najczęściej dlatego, że ograniczenie kategorii albo producenta nie obejmuje żadnego aktywnego produktu, albo wybrany język nie ma przetłumaczonych nazw. Dziennik pokaże wtedy zero produktów przy statusie powodzenia.
Generowanie przerywa się w połowie
Duże katalogi potrafią przekroczyć max_execution_time. Uruchamiaj generowanie z crona, a nie
z panelu – żądanie z panelu podlega limitowi czasu serwera WWW.
Ceny w feedzie różnią się od cen w sklepie
Feed liczy ceny w walucie i języku ustawionych dla feedu. Przy kilku walutach warto zrobić osobny feed dla każdej platformy i rynku, zamiast jednego wspólnego.