Przewodnik szybkiego startu dla programistów OpenCart 1.5.X dla początkujących
Ten przewodnik jest przeznaczony dla programistów już zaznajomionych z PHP, OOP i architekturą MVC
Poniżej zobaczysz przykłady strony katalogu koszyka. Strona administratora ma identyczne funkcje, z wyjątkiem widoków, które opisano w odpowiedniej sekcji
Zrozumienie bibliotek
Wszystkie funkcje biblioteki są dostępne za pośrednictwem kontrolera, modelu i widoków przy użyciu $this->library_name
. Wszystko to można znaleźć w /system/library/
folderze. Na przykład, aby uzyskać dostęp do produktów z bieżącego koszyka, musisz użyć Cart
klasy, która jest dostępna /system/library/cart.php
i można uzyskać do niej dostęp za pomocą$this->cart->getProducts()
Powszechnie używane przedmioty
customer.php
- Funkcje związane z klientem
user.php
- Funkcje związane z administratorem
cart.php
- Funkcje związane z koszykiem
config.php
- Wszystkie ustawienia są wczytywane z tego
url.php
- Funkcje generowania adresów URL
Zrozumienie parametru trasy
Struktura OpenCart opiera się na route=aaa/bbb/ccc
parametrze ciągu zapytania, aby wiedzieć, co załadować, i jest podstawą do znajdowania plików, które musisz edytować dla każdej strony. Większość tras używa w rzeczywistości tylko tych, aaa/bbb
które powinny być postrzegane jako dwie części, jednak niektóre zawierają trzy części aaa/bbb/ccc
. Pierwsza część jest aaa
ogólnie związana z folderem w folderze ogólnym, takim jak folder kontrolera lub folderów szablonów. Druga część dotyczy zwykle nazwy pliku, bez odpowiedniego rozszerzenia .php
lub .tpl
rozszerzenia. Trzecią część wyjaśniono w sekcji „Zrozumienie kontrolerów” poniżej
Zrozumieć języki
Języki są przechowywane w /catalog/language/
folderze w your-language
podfolderze. W ramach tego ogólne wartości tekstowe używane na różnych stronach są przechowywane w your-language.php
pliku wewnątrz folderu, więc dla języka angielskiego po stronie katalogu wartości znajdziesz w catalog/language/english/english.php
. W przypadku określonego tekstu strony będziesz potrzebować route
dla strony (zwykle tak jest, ale nie zawsze, ponieważ możesz określić dowolny plik językowy). Na przykład strona wyszukiwania ma trasę product/search
, a zatem tekst specyficzny dla języka dla tej strony można znaleźć w catalog/language/english/product/search.php
(Zwróć uwagę, że nazwa pliku i podfolder są zgodne z trasą, po której następuje .php
.
Aby załadować język do kontrolera, używasz
$this->language->load('product/search');
Następnie możesz użyć funkcji biblioteki języków, get
aby pobrać określone teksty językowe, takie jak
$some_variable = $this->language->get('heading_title');
Zmienne językowe są przypisywane w pliku językowym za pomocą specjalnej zmiennej, $_
która jest tablicą kluczy i wartości tekstowych. W swoim /catalog/language/english/product/search.php
powinieneś znaleźć coś podobnego do
$_['heading_title'] = 'Search';
Wartości w globalnym pliku językowym english/english.php
są automatycznie ładowane i dostępne do użycia bez $this->language->load
metody
Zrozumienie kontrolerów
Kontrolery są ładowane w oparciu o route
i są dość proste do zrozumienia. Kontrolery znajdują się w /catalog/controller/
folderze. Kontynuując z ostatniego przykładu, kontroler strony wyszukiwania znajduje się w /product/search.php
tym folderze. Zwróć uwagę ponownie, że .php
używana jest trasa, po której następuje.
Otwierając plik kontrolera, zobaczysz nazwę Controller
klasy Pascal Case rozszerzającą klasę o nazwie ControllerProductSearch
. To znowu jest specyficzne dla trasy, z Controller
następującą po niej nazwą podfolderu i nazwą pliku bez rozszerzenia pisanego wielkimi literami. W rzeczywistości wielkie litery nie są wymagane, ale są zalecane w celu ułatwienia czytania. Warto zauważyć, że nazwy klas nie pobierają żadnych wartości z podfolderu i nazwy pliku poza literami i cyframi. Podkreślenia są usuwane.
W klasie są metody. Metody w zadeklarowanej klasie public
są dostępne do uruchomienia przez trasę - private
nie są. Domyślnie w przypadku standardowej trasy dwuczęściowej ( aaa/bbb
powyżej) index()
wywoływana jest metoda domyślna . Jeśli ccc
używana jest trzecia część trasy ( powyżej), ta metoda zostanie uruchomiona zamiast tego. Na przykład account/return/insert
załaduje /catalog/controller/account/return.php
plik i klasę i spróbuje wywołać insert
metodę
Zrozumienie modeli
Modele w OpenCart znajdują się w /catalog/model/
folderze i są pogrupowane na podstawie funkcji, a nie trasy, dlatego będziesz musiał załadować je do kontrolera za pośrednictwem
$this->load->model('xxx/yyy');
Spowoduje to załadowanie pliku do podfolderu o xxx
nazwie yyy.php
. Jest wtedy dostępny do użycia za pośrednictwem obiektu
$this->model_xxx_yyy
i tak jak w przypadku kontrolerów, możesz wywoływać tylko jego public
metody. Na przykład, aby zmienić rozmiar obrazu, należy użyć tool/image
modelu i wywołać jego resize
metodę w następujący sposób
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Zrozumienie przypisania zmiennych w widokach ze sterownika
Aby przekazać wartości do widoku ze sterownika, wystarczy przypisać dane do $this->data
zmiennej, która jest w istocie tablicą par klucz => wartość. Jako przykład
$this->data['example_var'] = 123;
Dostęp do tego w widoku powinien być łatwy do zrozumienia, jeśli znasz metodę extract () , która konwertuje każdy klucz na zmienną. Zatem example_var
klucz staje się $example_var
i może być dostępny jako taki w widoku.
Zrozumienie tematów
Motywy są dostępne tylko po stronie katalogu i są w zasadzie folderem szablonów, arkuszy stylów i obrazów motywów. Foldery motywów są umieszczane w /catalog/view/theme/
folderze, po którym następuje nazwa motywu. Nazwa folderu nie ma znaczenia, z wyjątkiem default
folderu
Używa strona administratora /admin/view/template/
(pomijanie /theme/theme-name/
ze ścieżki, ponieważ nie pozwala na różne motywy)
Pliki szablonów znajdują się w template
folderze w folderze motywu. Jeśli jakikolwiek szablon nie jest dostępny dla aktualnie wybranego motywu, zamiast niego zostanie użyty szablon domyślnego folderu. Oznacza to, że motywy można tworzyć z bardzo małą liczbą plików i nadal w pełni funkcjonować. Zmniejsza również powielanie kodu i problemy z aktualizacjami
Zrozumienie widoków (szablony)
Podobnie jak w przypadku języka i modeli, pliki widoku są generalnie związane z trasą, chociaż wcale nie muszą. Szablony po stronie katalogu zwykle znajdują się w programie, /catalog/view/theme/your-theme/template/
chyba że nie istnieje, w takim przypadku zostaną użyte domyślne szablony motywu. W powyższym przykładzie strony wyszukiwania plik to product/search.tpl
. W przypadku tras z trzema odcinkami jest to zwykle w, aaa/bbb_ccc.tpl
chociaż nie ma sztywnej reguły. W panelu administracyjnym większość stron postępuje zgodnie z tym, z wyjątkiem stron z listą elementów, takich jak strona z listą produktów, catalog/product_list.tpl
i jest dostępny formularz edycji produktu catalog/product_form.tpl
. Ponownie, nie są one ustawione, ale są standardem dla domyślnego koszyka.
Plik szablonu jest w rzeczywistości tylko kolejnym plikiem php, ale z rozszerzeniem .tpl i jest faktycznie uruchamiany w pliku kontrolera, dlatego wszystkie rzeczy, które możesz zakodować w kontrolerze, mogą być uruchomione w pliku szablonu (chociaż nie jest to zalecane, chyba że absolutnie niezbędny)
Zrozumienie obiektu bazy danych
Zapytania są uruchamiane przy użyciu
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
jak sama nazwa wskazuje jest stałą zawierającą przedrostek bazy danych, jeśli taki istnieje
$result
zwróci obiekt do SELECT
zapytań, zawierający kilka właściwości
$result->row
zawiera dane pierwszego wiersza, jeśli co najmniej jeden jest zwracany jako tablica asocjacyjna
$result->rows
zawiera tablicę wyników wierszy, idealną do zapętlenia przy użyciu foreach
$result->num_rows
zawiera liczbę zwróconych wyników
$this->db
Obiekt posiada również kilka dodatkowych metod
$this->db->escape()
używa mysql_real_escape_string () na przekazanej wartości
$this->db->countAffected
zwraca liczbę wierszy, na które ma wpływ UPDATE
zapytanie, i tak dalej
$this->db->getLastId()
zwraca ostatni identyfikator automatycznego zwiększania za pomocą mysql_insert_id ()
Zrozumienie zarezerwowanych zmiennych
OpenCart posiada predefiniowane zmienne do wykorzystania w miejsce standardowego $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
I$_SERVER
$_SESSION
jest edytowany za pomocą $this->session->data
gdzie dane są tablicą asocjacyjną naśladującą$_SESSION
Do wszystkich innych można uzyskać dostęp za pomocą $this->request
i zostały „wyczyszczone”, aby zachować zgodność z magicznymi cudzysłowami włączonymi / wyłączonymi, więc
$_GET
staje się $this->request->get
$_POST
staje się $this->request->post
$_COOKIE
staje się $this->request->cookie
$_FILES
staje się $this->request->files
$_REQUEST
staje się $this->request->request
$_SERVER
staje się $this->request->server
Podsumowanie
Chociaż powyższe nie jest niezawodnym przewodnikiem dla programistów, mam nadzieję, że będzie dobrym punktem wyjścia dla początkujących