Dokumentacja - historia cen - dyrektywa omnibus dla PrestaShop

Instrukcja instalacji i obsługi modułu historia cen na stronie produktu dla PrestaShop od X13.pl
8.X  1.7.X  1.6.X 
1.4.1 / 2023-11-14
zobacz changelog

Przed instalacją i konfiguracją modułu zapraszamy do zapoznania się z instrukcją.

Wymagania instalacyjne

Moduł wymaga kilku podstawowych usług na serwerze, które w większości przypadków są aktywne.
Gdyby któraś z wymienionych opcji nie była dostępna - należy ją włączyć w panelu serwera lub napisać do administratora.

  1. PHP: 5.6 - 8.1
  2. ionCube: tak

Instalacja

Moduł możesz znaleźć na liście jako

  1. Nazwa: Historia ceny na karcie produktu - dyrektywa Omnibus
  2. Autor: x13.pl
  3. Kategoria: Funkcjonalność sklepu
  4. Filtruj po: Zainstalowane i niezainstalowane / Aktywne i nieaktywne

Po zainstalowaniu modułu musisz zadecydować czy korzystasz z produktów z atrybutami, które zmieniają cenę czy nie

Przykład:

  • jeśli sprzedajesz koszulki w różnych rozmiarach, wszystkie mają taką samą cenę i nie tworzysz promocji na wybraną kombinację, wybierz Indeksuj główną cenę produktu
  • jeśli nie sprzedajesz produktów z kombinacjami wybierz Indeksuj główną cenę produktu
  • w przypadku gdy sprzedajesz materace, w różnych rozmiarach i każdy rozmiar to inna kombinacja z inną ceną, lub sprzedajesz koszulki, w których robisz przecenę na największy rozmiar, kliknij Indeksuj wszystkie ceny produktu

Moduł domyślnie wykorzystuje hook after_price, który powinien być domyślnie dostępny w szablonie Twojego sklepu.

{hook h='displayProductPriceBlock' product=$product type="after_price"}
Jeśli w swoim szablonie nie posiadasz takiego hooka lub chcesz umieścić moduł w innym miejscu, musisz dodać nasz autorski hook w szablonie

Zmiana w plikach szablonu - w przypadku customowego hooka

Łączymy się przez FTP z naszym sklepem, i wchodzimy w odpowiednie folderu, oraz edytujemy pliki:

Dla PrestaShop 8.X i 1.7

Wybieramy folder themes/nazwa/templates/catalog/_partials/product-prices.tpl - edytujemy plik

i dodajemy w wybranym przez nas miejscu
{hook h="displayProductPriceHistory" product=$product}

Dla PrestaShop 1.6

Wybieramy folder themes/nazwa-tematu/product.tpl - edytujemy plik

i dodajemy w wybranym przez nas miejscu
{hook h="displayProductPriceHistory" product=$product}

Sprawdzenie kompilacji

Sprawdzamy czy mamy ustawione wymuszanie zmian w szablonie lub czyścimy cache.
Wchodzimy w Parametry zaawansowane -> Wydajność
Klikamy po prawej Wyczyść pamięć podręczną

Konfiguracja

Ustawienia CRON - automatyczne indeksowanie cen

W module zalecamy dodanie zadania CRON, które będzie sprawdzało ceny produktów i poprawnie indeksowało je w bazie danych.

/usr/bin/wget -q -F -O - "https://domena.pl/pl/module/x13pricehistory/cron?token=001a111a11aaa1a1a11a1aa11a1a1111&action=index" 

Zamiast 001a111a11aaa1a1a11a1aa11a1a1111 wpisujemy poprawny indywidualny token, cały poprawny link znajdziemy w na samej górze w konfiguracji modułu, każdy link posiada swój indywidualny token w celu zablokowania niepoprawnego uruchomienia indeksacji przez osoby trzecie


Jak dodać zadanie CRON na serwerze ?
Powyższe przykłady dodania zadań CRON są dla serwerów z systemem DirectAdmin, szczegółową instrukcję, jak i przykłady dla innych serwerów znajdą Państwo tutaj

Z jaką częstotliwością ustawić zadanie CRON?

Tutaj nie mamy jednoznacznej odpowiedzi, częstotliwość należy dostosować do wielkości katalogu, ilości kombinacji, grup klientów/walut i krajów - jeśli te opcje zostały włączone podczas indeksacji.

Dla większości sklepów do 10 000 produktów odpowiednim ustawieniem będzie uruchamianie zadania co 3 godziny.
Zalecamy, aby pierwszą indeksację wykonać ręcznie, poprzez skopiowanie linku do przeglądarki - na tej podstawie sprawdzenie ile razy należy uruchomić link aby zostały pobrane ceny dla 100% produktów.

Moduł przystosowany jest do indeksowania produktów w partiach, więc jeśli podczas jednego zapytania nie uda mu się zapisać wszystkich danych, kolejne informacje będą zbierane od ostatniego poprawnie zapisanego produktu.

Zadanie CRON również usunie historyczne dane, które nie będą już wykorzystywane przez moduł - ceny starsze niż 30 dni (o ile nie są zapisane jako najniższe ceny przed promocją).

W jaki sposób moduł zbiera informacje o cenie

W naszym rozwiązaniu wdrożyli 2 opcje zbierania cen, jedna wymagana przez dyrektywę omnibus - wyświetlenie najniższej ceny sprzed 30 dni przed wdrożeniem promocji. Druga opcja to wyświetlanie historii cen w formie wykresu, tabeli lub tekstu.

Pobieranie ceny 30 dni przed aktualną promocją

Informujący o najniższej cenie produktu w okresie 30 dni przed aktualną promocją, jest najważniejszą funkcjonalnością modułu - która umożliwia spełnienie wymagań dyrektywny Omnibus.
Dlatego postanowiliśmy lepiej opisać jak działa ta opcja oraz jakie warunki muszą być spełnione, żeby została wyświetlona.

Jakie warunki muszą być spełnione, aby moduł wyświetla informację o najniższej cenie przed promocją:

  • produkt musi być aktualnie w promocji (a sama promocja musiała być dodana lub edytowana po instalacji modułu)
  • produkt musi posiadać przynajmniej jeden wpis historyczny w naszym module, z ceną różną od obecnej
  • musisz mieć domyślny hook after_price lub nasz autorski hook dodany w swoim szablonie

Historia cen produktu

Warunki, przy jakich moduł zapisuje poprawnie cenę historyczną

  • produkt musi być aktywny
  • produkt musi posiadać cenę większą niż 0zł
  • cena musi być zaindeksowana za pomocą hooka lub polecenia CRON (zalecamy zawsze dodanie zadanie CRON)
W celu poprawnego

Historia cen produktu - wyświetlanie na sklepie

Warunki, przy jakich zostanie wyświetlona historyczna cena na stronie produktu

  • w module w polu Wyświetl cenę historyczną dla musi być włączona opcja tylko dla produktów z aktualną promocją lub wszystkich produktów
  • produkt musi posiadać przynajmniej jeden wpis w historii cen
  • musisz mieć domyślny hook after_price lub nasz autorski hook dodany w swoim szablonie

Dodatkowo przy historii cen możesz wyświetlić tekst Tekst dla produktów z obecnie najniższą cen - który wyświetli się w przypadku jeśli produkt posiada najniższą cenę w ciągu ostatnich 30 dni - nie licząc ceny przed dodaniem promocji, jeśli jest to cena starsza niż 30 dni.

Przykłady wyświetlania cen

1. Produkt:

  • był dodany przed instalacją modułu
  • produkt nie posiadał promocji
  • moduł został zainstalowany 2 stycznia
DataCena w PrestaShopCena przed promocją (moduł)Historia cen (moduł)Produkt z najniższą ceną (moduł)
1/1/2023200 zł---
2/1/2023instalacja modułu + indeksacja
2/1/2023200 zł-TAK200 zł
4/1/2023Dodanie promocji - 50zł
4/1/2023200 zł 150złNajniższa cena w ciągu 30 dni przed aktualną promocją:200 złTAKNajniższa cena w ciągu ostatnich 30 dni: 150 zł
14/2/2023200 zł 150złNajniższa cena w ciągu 30 dni przed aktualną promocją:200 złTAKNajniższa cena w ciągu ostatnich 30 dni: 150 zł
2. kolejny przykład
DataCena w PrestaShopCena przed promocją (moduł)Historia cen (moduł)Produkt z najniższą ceną (moduł)
1/1/2023200 zł---
2/1/2023instalacja modułu + indeksacja
2/1/2023200 zł-TAK200 zł
4/1/2023Dodanie promocji - 50 zł brutto
4/1/2023200 zł 150 złNajniższa cena w ciągu 30 dni przed aktualną promocją: 200 złTAKNajniższa cena w ciągu ostatnich 30 dni: 150 zł
14/2/2023Zmiana promocji - 100 zł
14/2/2023200 zł 100 złNajniższa cena w ciągu 30 dni przed aktualną promocją: 150 złTAKNajniższa cena w ciągu ostatnich 30 dni: 100 zł
2. kolejny przykład
DataCena w PrestaShopCena przed promocją (moduł)Historia cen (moduł)Produkt z najniższą ceną (moduł)
1/1/20231500 zł 1000 zł---
2/1/2023instalacja modułu + indeksacja
2/1/20231500 zł 1000 zł-TAKNajniższa cena w ciągu ostatnich 30 dni: 1000 zł
4/1/20231500 zł 1000 zł-TAKNajniższa cena w ciągu ostatnich 30 dni: 1000 zł
14/2/2023Zmiana ceny podstawowej na 1200 zł
14/2/20231200 zł 700 złNajniższa cena w ciągu 30 dni przed aktualną promocją: 1000 złTAKNajniższa cena w ciągu ostatnich 30 dni: 700 zł
20/2/2023Zmiana promocji na - 800 zł
28/2/20231200 zł 400 złNajniższa cena w ciągu 30 dni przed aktualną promocją: 700 złTAKNajniższa cena w ciągu ostatnich 30 dni: 400 zł
28/2/2023Usunięcie promocji
3/3/20231200 zł-TAKNajniższa cena w ciągu ostatnich 30 dni: 400 zł
29/3/20231200 zł-TAKNajniższa cena w ciągu ostatnich 30 dni: 1200 zł

Wydajność

Moduł został tak przygotowany aby w jak najmniejszym stopniu wpływa na prędkość działania sklepu, jednak musisz mieć na uwadzę aby zebrać poprawnie wszystkie informacje o cenach musimy zapisać dużo informacji do bazy danych dla każdego produktu. Pomimo mocnej optymalizacji modułu, rozmiar bazy i prędkość indeksacji zależna jest od włączonych opcji konfiguracyjnych.

Dlatego bardzo ważne jest, abyś ustawił opcję, które realnie potrzebujesz zapisywać w swoim sklepie.
Opcja, która mocno zwiększa ilość wpisów w bazie danych a w większości sklepów nie jest wykorzystywana to ceny dla poszczególnych krajów - jeśli nie stosujesz różnych cen oraz rabatów według wybranego kraju nie włączaj tej opcji.

Jeśli wiesz, że wszyscy klienci posiadają takiej same ceny produktów oraz mają takie same rabaty, nie włączaj opcji Indeksuj cenę dla niestandardowych grup klientów.

Pamiętaj, że w momencie, w którym zmienisz ustawienia w swoim sklepie (np. zaczniesz sprzedawać produkty z kombinacjami w różnych cenach) musisz zmienić ustawienia w module.

Problemy

W jaki sposób wymusić historię cen przed promocją?

Niestety nie ma możliwości wymuszenia cen przed promocją.
Moduł zbiera ceny od jego instalacji i poprawnej konfiguracji wraz z ustawieniem zadania CRON.
Oznacza to, że jeśli wcześniej miałeś w swoim sklepie promocję na produkt A, to moduł nie wyświetli informacji Najniższa cena w ciągu 30 dni przed aktualną promocją: XX zł, ponieważ nie ma w swojej historii różnej ceny od obecnej.

Moduł nie wyświetla ani żadnej dodatkowej ceny pomimo poprawnej konfiguracji?

Musisz w takim przypadku zacząć od sprawdzenia, czy podczas edycji produktu w zakładce moduły (na produkcie) oraz naszym module widzisz historię cen lub najniższą cenę.
Jeśli tak, oznacza to, że moduł poprawnie indeksuje ceny - świetnie.
Prawdopodobnie problem w takim razie leży po stronie braku odpowiedniego hooka w szablonie - sprawdź tutaj jak powinien być dodany.

Video