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.