Tel: +48 22 599 44 99
CStoreZałóż sklep internetowy

Dokumentacja

Wytyczne dla programistów


Rozszerzenia budujemy poprzez dodawanie skryptów do plików znajdujących się w katalogu /ext, są nimi pliki:

– extend.php – uruchamiany przed inicjacją danych wykorzystywanych w kontrolerach

– extend_end.php – uruchamiany w momencie, w którym wszystkie dane wyjściowe są już przygotowane do wydruku

Pliki te nie są wymagane do uruchomienia sklepu, są one jednak w dużym stopniu wrażliwe, ponieważ spowodowanie błędu w którymś z nich powoduje niestabilne działanie sklepu na każdej podstronie. Nie wchodzą one także w skład aktualizacji, dlatego nigdy nie będą nadpisane.

Plik extend.php wykorzystywany jest głównie dla inicjacji niestandardowych klas (nadpisanie funkcji autoloadera), lub do wykonania przekierowania użytkownika (klienta sklepu) w momencie jego wejścia na stronę.

Przykładem może być np. zainicjowanie klasy Product poprzez zrobienie include pliku z definicją w/w klasy, dzięki czemu loader zobaczy, że w pamięci widnieje już taka klasa i nie będzie przeszukiwał struktury sklepu w poszukiwaniu wymienionej klasy. Mapowanie linków zaś może być pomocne np. w momencie potrzeby przeniesienia starego sklepu stworzonego na innej platformie, gdzie wykorzystywane są linki nie wpisujące się do pliku .htaccess cStore’a – w takim wypadku zanim cokolwiek zostanie zainicjowane zczytujemy taki link, porównujemy go do odpowiedniej tablicy (np. w bazie danych) i jak znajdziemy zgodność to możemy np. przenieść użytkownika już na stronę właściwą za pomocą php’owej funkcji header(‚Location: %s’);

Budowanie modułów


Moduły w cStore posiadają następującą strukturę:

/modules/nazwamodulu/README – nie posiada rozszerzenia, plik z opisem modułu

/modules/nazwamodulu/config.php – plik z domyślną konfiguracją dla modułu

/modules/nazwamodulu/controller.php – zawiera klasę rozszerzającą ‚controller’ o nazwie takiej samej, jak nazwa modułu, obsługuje moduł od strony administracyjnej

/modules/nazwamodulu/view/ – folder zawierający widoki wykorzystywane przez kontrolerach

/modules/nazwamodulu/class/ – folder z klasami, które wczytywane są za pomocą autoloadera,

/modules/nazwamodulu/hooks/ – plik z funkcjami wykonywanymi przy określonych zdarzeniach,

/modules/nazwamodulu/sync – folder umowny, wykorzystywany do obsługi synchronizatorów z hurtowniami

Do obsługi moduły nie wymagane są wszystkie składniki samego modułu, ale są one niekiedy zależne od siebie. Oto definicja niektórych z zależności:

  • folder /sync jest folderem umownym, zazwyczaj wykonywany jest przez CRON, nie musi posiadać jakiegokolwiek połączenia z resztą plików modułu, może też być jedynym elementem modułu,
  • plik README potrzebny jest do zdefiniowania opisu modułu w ustawieniach uruchamiania modułów (admin: ustawienia/moduły), wymagany jest w przypadku utworzenia modułu zintegrowanego ze sklepem (kiedy użytkownik/admin chodzi po sklepie moduł oddziałuje na jego działanie),
  • plik config.php jest opcjonalny, nie jest wymagany do obsługi modułu, wymagany jest jednak dla utworzenia w nawigacji admina (w zakładce moduły) pozycji pozwalającej na wykorzystanie kontrollera,
  • controller.php nie jest plikiem wymaganym, pomaga jednak w utworzeniu modułu, który jest konfigurowalny przez panel admina,
  • katalog /view zazwyczaj wykorzystywany jest przez kontroler bądź skrypty z katalogu /hooks, w nim umieszczane są pliki obsługujące widoki modułów (rozdzielenie funkcjonalności od samego wydruku),
  • katalog /class wymagany jest tylko w przypadku, w którym tworzymy własne klasy dla modułu wykorzystywane przez resztę skryptów modułu,
  • katalog /hooks jest obligatoryjny w przypadku, w którym chcemy stworzyć obsługę modułu po stronie klienta sklepu, jest on sercem modułu i można w nim wykorzystać pliki z /class i /view.
Icon
UWAGA: aby moduł wpływał na działanie sklepu (prócz modułu synchronizatora z katalogiem /sync) wymagane jest jego uruchomienie w ustawieniach. W przeciwnym wypadku sklep nie będzie widział katalogu modułu i nie będzie dodawał plików z katalogów /hooks i /class.

Kliknij tutaj aby pobrać przykładowy moduł