W przypadku gdy posiadasz w sklepie setki tysięcy produktów i mają one znaczną ilość zdjęć możesz dojść do momentu, w którym ID zdjęcia przekroczy 7 znaków, czyli będzie wyższe niż 9999999.
PrestaShop w tym przypadku będzie miała problem z prawidłowym wygenerowaniem dostępu do takiego zdjęcia.

Czyli jeśli nasze zdjęcie ma ID np. 10439075 będzie ono widoczne cały czas z panelu administracyjnego sklepu.
Jednak od frontu będzie niewidoczne a dokładniej będzie kierowało na nieprawidłowy adres z błędem 404.

Problem ten możemy rozwiązać na 3 sposoby:

  • stworzenie prostego modułu korzystającego z hooka actionHtaccessCreate
  • przygotowanie overrida klasy Tools
  • edycji bezpośrednio pliku .htaccess

W tym wpisie zapreznetujemy dwie z podanych metod, sugerujemy skorzystanie z pierwszego sposobu.

Sposób 1 - override funkcji generowania Htaccess

Logujemy się na FTP i przechodzimy do folderu z zawartością sklepu, następnie do folderu override/classes/ i tworzymy plik Tools.php, dodajemy w nim:


https://x13.pl/pobierz/Tools-id7.txt

Następnie musimy wyczyścić wydajność
Wchodzimy w panelu administracyjnym PrestaShop do zakładki Parametry zaawansowane -> Wydajność
Klikamy po prawej Wyczyść pamięć podręczną.

Następnie przechodzimy do zakładki Preferencje > Ruch, generujemy nowy plik htaccess poprzez kliknięcie przycisku Zapisz
Odświeżamy front sklepu i sprawdzamy, czy zdjęcie wyświetlane jest prawidłowo.



Sposób nr 2 - edycja pliku .htaccess

Logujemy się na FTP, przechodzimy do domeny sklepu i edytujemy plik .htaccess podmieniając domena.pl na swoją domenę :

RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^domena.pl$


dodajemy pod nim:
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$8/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteCond %{HTTP_HOST} ^domena.pl$


W przypadku wdrożenia zmiany w taki sposób musi pamiętać o konieczności dodania wpisu za każdym razem gdy wygenerujemy nowy plik htaccess.
Odświeżamy front sklepu i sprawdzamy, czy zdjęcie wyświetlane jest prawidłowo.