7.2.3. Przystosowanie do własnych wymagań.

Aktualnie załączone w pakiecie rozwiązanie jest czysto przykładowe, i należy je traktować raczej jako bazę do własnych poszukiwań odpowiedniego wyglądu sklepu - choć na początku i ono w 100% spełni swoją rolę. Według naszej propozycji ekran sklepu podzielony jest następująco:

część górna - opisana w pliku layout1.inc (jej pliki w podkatalogu top) - może zawierać banner, albo zbiór odnośników itp.
Lewa kolumna - opis w pliku layout1.inc, pliki w podkatalogu left Środkowa kolumna
1.część-"Nagłówek", definicja w pliku header.inc

2.część kolumny środkowej - zasadnicza - czyli tabela cennika
Prawa kolumna - opis w pliku layout2.inc, pliki w podkatalogu right
część dolna - opisana w pliku layout2.inc (jej pliki w podkatalogu bottom)

Wygląd sklepu określony jest przez zawartość 4 plików:
  1. main.css - to typowy "cascading style sheet", jego zawartość jest oczywista dla każdego, kto zna te zagadnienia choćby pobieżnie. Tu zwrócimy tylko uwagę, iż TH.colour definiuje wygląd nagłówka tabeli cennika (oraz zawartości "koszyka" zakupów), zaś TR.dark i TR.bright określają wygląd owych naprzemiennych - jaśniejszych i ciemniejszych - wierszy tych tabel.
  2. Plik header.inc jest, jak łatwo stwierdzić, jedynie małym fragmentem "zwykłej" strony HTML. Określa on po prostu wygląd górnej części (tej bezpośrednio nad tabelą) zasadniczego ekranu sklepu (czyli górnej części kolumny środkowej, odnosząc się do przykładowego rozwiązania). Grafiki, wymienione w tym pliku aktualnie nie znajdują się w $icondir (dotyczy ona tylko skryptów PHP).
  3. Plik layout1.inc definiuje wygląd górnej części ekranu, oraz lewej kolumny, zaś...
  4. ...plik layout2.inc określa wygląd prawej kolumny, oraz części dolnej.
Zwróćmy w tym momencie uwagę na 2 istotne rzeczy, które ułatwią nam wprowadzanie samodzielnych zmian w układzie grafiki sklepu:
  1. Pliki layout1.inc oraz layout2.inc są w istocie "rozciętą na pół", "statyczną" (dokonaną w zwyczajnym HTML-u) definicją budowy całości tabeli, określającej układ ekranu sklepu. "Rozcięcie" nastąpiło pomiędzy tagiem <TD> (koniec pliku layout1.inc) zapoczątkowującym środkową kolumnę, zawierającą zasadniczą część sklepu - a tagiem </TD> (początek pliku layout2.inc), zamykającym tę kolumnę. Trzymając się tej zasady, układ pól ekranu możemy zmieniać najzupełniej dowolnie, byle tylko chciał zmieścić się w oknie przegladarki. Ta kolumna, w naszym własnym ujęciu postaci sklepu, nie musi wcale być środkowa - chodzi tylko o zachowanie prawidłowej definicji tabeli, oraz o późniejsze jej "przecięcie" w wybranym miejscu właśnie pomiędzy tagiem <TD> oraz </TD>.
  2. Najistotniejszą częścią sklepu jest zawartość kolumny środkowej, określana treścią pliku header.inc, oraz dynamicznie generowaną tabelą cennika, przedstawiającą naszą ofertę. Z tego też względu możemy całkowicie pozbyć się wystroju opisywanego zawartością obu plików layout*.inc, jeśli uznamy go za niezbyt potrzebny - po prostu kasując obydwa te pliki, i następnie tworząc "puste" pliki o takich nazwach (np. poprzez touch layout1.inc oraz touch layout2.inc). Wtedy na ekranie pojawi się sklep w postaci "odchudzonej", co może mieć znaczenie, np. jeśli zakładamy, że nasi odbiorcy pracują raczej w niskich rozdzielczościach (czy w ogóle w tekście..) - chodzi o to, aby w oknie przeglądarki wszystko się mieściło.
[screenshot i-shopu]
Wygląd "wnętrza" sklepu bez otaczającego "wystroju". Ofertę przegląda klient nie będący stałym odbiorcą (niezalogowany).

Jest możliwe sprawienie, aby także informacje wyprowadzane przez skrypty cart.php (zawartość "koszyka") oraz order.php (zamówienie) wyprowadzane były w środkowej kolumnie, bez usuwania wystroju sklepu, jeśli z takowego korzystamy - zwróćmy uwagę na zablokowane znakiem komentarza wiersze przy początku i pod koniec tychże skryptów, zawierające frazę include('layout*.inc'). Jeśli znaki komentarza usuniemy (trzeba to robić parami, bo uaktywnienie include'a z początku skryptu, bez aktywacji jego "pary" z końca tego samego skryptu spowoduje w efekcie błędną pracę) - koszyk oraz informacja o dokonaniu zamówienia również pojawią się w otoczeniu grafiki. Nie zrobiono tego domyślnie, ponieważ nie wydaje się to celowe - "koszyk" oznacza stosunkowo dużą ilość informacji, i na ekranie może zrobić się cokolwiek ciasno, zaś wysłanie zamówienia to w istocie koniec pracy ze sklepem, więc nie ma to większego znaczenia. Zaś w przypadku innych skryptów, ze względu na ich sposób pracy, taka modyfikacja w ogóle nie ma większego sensu.

Zasadniczymi elementami sklepu są skrypty index.php, cart.php i order.php. Szczegółowe omówienie ich działania wykracza poza ramy niniejszej instrukcji; bardziej zaawansowani użytkownicy bez większego kłopotu będą w stanie zmodyfikować ich funkcjonalność, jeśli zechcą wzbogacić sklep o jakieś dodatkowe możliwości. Skrypty są proste i łatwe do samodzielnej analizy - długość żadnego z nich nie przekracza kilku kilobajtów (nawet wliczając w to komentarze).

W tym miejscu wróćmy jeszcze raz do rozdziału omawiającego posługiwanie się modułem cennika, i ponownie zapoznajmy się z częścią traktującą o tych polach rekordu cennika, które są specyficzne właśnie dla obsługi sklepu Internetowego - wszak to właśnie zawartość cennika przedstawiana jest w sklepie. Pamiętajmy też, że dotyczy to wyłącznie towarów - a więc tych pozycji, które mają wypełnione pole Symbol (nie należy wypełniać pola Kategoria rekordu nie oznaczonego symbolem - a więc zapewne usługi - gdyż może prowadzić to do błędów w funkcjonowaniu sklepu).

Przypomnijmy sobie także znaczenie pola hasło, omówione w rozdziale "Kontrahenci".

[screenshot i-shopu (koszyk)]
"Koszyk towarów" przeglądany przez stałego (zalogowanego) odbiorcę.

Zwróćmy jeszcze uwagę na możliwe modyfikacje plików opisu pozycji cennika, badając 2 przykłady zamieszczone w podkatalogu opisy: o ile strona smabi.html jest zwyczajną stroną HTML, o tyle drugi przykład - balsam.php - jest już skryptem, choć skryptu tam raptem wszystkiego 3 wiersze (te pomiędzy ogranicznikami <? oraz >? ), a cała reszta dalej wygląda jak "tradycyjna" strona HTML. Czemu tak? Otóż te 3 wiersze powodują inkrementację pola hity pozycji rekordu cennika, który dotyczy przedstawianej przez stronę pozycji. Po prostu taką konstrukcją strony jesteśmy w stanie badać zainteresowanie klientów towarem, nie uciekając się do zamieszczania na stronach jakichś wymyślnych liczników; ilość odwiedzin takiej strony będzie podana bezpośrednio przez moduł cennika, a więc również do odczytania "z poziomu programu". Analogicznie ze sprawdzaniem ilości zamówień zebranych poprzez sklep Internetowy - skrypt order.php za każdym złożeniem zamówienia automatycznie inkrementuje zawartość pól zamówienia tych rekordów cennika, których złożone zamówienia dotyczą.

Zgodnie z zasadą "jeden obraz mówi więcej, niż tysiące słów", najprędzej chyba zapoznamy się z działaniem sklepu korzystając z zawartości udostępnianej w naszym FTP przykładowej "demo-bazki" (smabitest.pgdump.gz), zawierającej fikcyjne dane, i podłączając sklep na chwilę właśnie do niej (pamiętać o uprzednim dodaniu serwera HTTP jako użytkownika bazy!).

Główny skrypt sklepu nosi nazwę index.php - dzięki temu, jeśli będziemy pamiętać o uzupełnieniu w pliku konfiguracyjnym serwera HTTP (najczęściej będzie to Apache...) dyrektywy DirectoryIndex właśnie o nazwę index.php, można będzie podawać adres sklepu w postaci "eleganckiej", tj. bez kończącej adres nazwy strony, np. w sposób: http://sklep.firma.pl/ albo: http://www.firma.pl/sklep/

Początkującym webmasterom radzimy przy modyfikacji wystroju sklepu wzorować się - konstruując nowe strony - na zawartych w pakiecie przykładach; można uniknąć w ten sposób podstawowych błędów. Zasadnicza część tego wystroju została rozmieszczona w podkatalogach głównego katalogu sklepu. Warto zapamiętać przyjętą zasadę, iż pliki *.html stanowią kompletne, "samodzielne", typowe strony HTML, pliki *.inc nie są kompletnymi stronami, a jedynie plikami zawierającymi tagi HTML (najczęściej, dla ułatwienia zachowania porządku, zaczynają się otwarciem tabeli, a kończą jej zamknięciem), zaś pliki *.php stanowią strony HTML, ale dodatkowo uzupełnione procedurami PHP.

Poprzednia strona | Następna strona | Spis treści
Strona główna serwisu programu