Dziś przyjrzymy się bardzo enigmatycznemu błędowi odkrytemu w PrestaShop 1.6.1.23 (czyli w stosunkowo nowej wersji dla gałęzi 1.6).
Zawartość artykułu
Opis błędu
Po imporcie produktów przez plik CSV mimo, że zdjęcia są prawidłowo (na pierwszy rzut oka, ale o tym dalej) podłączone do produków:

Nie wyświetlają się:
- na liście produktów w adminie
- na listach w kategoriach
- na listach produków powiązanych
- w innych kluczowych sekcjach

Tak naprawdę tylko pojawiają się na karcie produktu:

Dramat trwa dalej… każde wywołanie miniatury produktu to brak obrazka:

Ponadto, wszędzie tam, gdzie nie można wczytać miniaturki – mają one ten sam adres:
img/p/pl-default-home_default.jpg
lub dla innej wersji językowej:
img/p/en-default-home_default.jpg
Czyli sugeruje to brak zdjęcia, ktore …przecież jest!
Co ważne zauważenia – nie pomaga:
- przebudowanie miniatur (wygenerowanie ich od nowa w dziale „Zdjęcia„)
- zmiana uprawnień na 777 w folderze /img i w jego podfolderach
- zmiana wersji PHP na serwerze lub inne zabiegi konfiguracyjne
Rozwiązanie problemu – mozolne wyklikanie
Okazuje się, że importer produktów CSV źle oznacza okładki produktów. Widać to juz na pierwszym screenie powyżej. Któreś ze zdjęć powinno mieć zaznaczoną kratkę (checkbox) że jest okładką. Nigdzie nie ma zaznaczenia. I tu tkwi problem.
Rozwiąznie jest proste – wystarczy wyklikać w każdym produkcie te okładki i zapisać.
Jednak co w sytuacji, gdy produtków w sklepie jest 500? 1000 ? 3000 ?
Wtedy wystarczy zrealizować odp. zapytanie SQL do bazy danych.
O tym piszemy dalej.
Rozwiązanie problemu – zapytanie w bazie danych
- Po „pierwsze primo” zrób kopię bezpieczeństwa bazy sklepu – jak zrobić kopię bezpieczeństa PrestaShop
- Po „drugie primo” – ustal link do phpmyadmin na Twoim serwerze – więcej informacji
- I po „trzecie primo” – ustal dostępy do bazy danych oraz jak się baza danych nazywa:
- dla PrestaShop 1.6 znajdziesz to w pliku
config/setting.inc.php
- dla PrestaShop 1.7 (jeśli też w tej wersji masz problem) znajdziesz to w pliku
app/config/parameters.php
- dla PrestaShop 1.6 znajdziesz to w pliku
Zaznacz następnie bazę danych w PhpMyAdmin i włącz zakladkę SQL aby zrezlizować zapytanie
Uwaga, użyliśmy tutaj standardowego prefixu dla tabel: ps_ w swoich zapytaniach odp. go zmodyfikuj jak masz inny
1) Zerowanie okładek:
UPDATE `ps_image` SET `cover` = NULL
2) Ustawianie okładek dla wszystkich zdjęć na pozycji nr.1:
UPDATE `ps_image` SET `cover` = 1 WHERE `position` = 1;
3) Analogiczne zapytanie dla tabeli multistore bazujące na poprzednich zapytaniach:
UPDATE `ps_image_shop` SET `cover` = 1 WHERE `id_image` IN (SELECT `id_image` FROM `ps_image` WHERE `cover` = 1);
FIXED!
Tym oto sposobem rozwiązaliśmy problem i wszędzie już działają miniaturki:

grafika: pexels.com
Witam, starałem się użyć kodu by pokazało miniatury na zapleczu w liście produktów, z tego co widzę nie chce ustawić mi okładki gdy mam tylko jedno zdjęcie, czy inne odniesienie mają te produkty?