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ć Cartklasy, która jest dostępna /system/library/cart.phpi 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/cccparametrze 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/bbbktóre powinny być postrzegane jako dwie części, jednak niektóre zawierają trzy części aaa/bbb/ccc. Pierwsza część jest aaaogó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 .phplub .tplrozszerzenia. Trzecią część wyjaśniono w sekcji „Zrozumienie kontrolerów” poniżej
Zrozumieć języki
Języki są przechowywane w /catalog/language/folderze w your-languagepodfolderze. W ramach tego ogólne wartości tekstowe używane na różnych stronach są przechowywane w your-language.phppliku 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ć routedla 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, getaby 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.phppowinieneś znaleźć coś podobnego do
$_['heading_title'] = 'Search';
Wartości w globalnym pliku językowym english/english.phpsą automatycznie ładowane i dostępne do użycia bez $this->language->loadmetody
Zrozumienie kontrolerów
Kontrolery są ładowane w oparciu o routei 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.phptym folderze. Zwróć uwagę ponownie, że .phpużywana jest trasa, po której następuje.
Otwierając plik kontrolera, zobaczysz nazwę Controllerklasy Pascal Case rozszerzającą klasę o nazwie ControllerProductSearch. To znowu jest specyficzne dla trasy, z Controllernastę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 publicsą dostępne do uruchomienia przez trasę - privatenie są. Domyślnie w przypadku standardowej trasy dwuczęściowej ( aaa/bbbpowyżej) index()wywoływana jest metoda domyślna . Jeśli cccużywana jest trzecia część trasy ( powyżej), ta metoda zostanie uruchomiona zamiast tego. Na przykład account/return/insertzaładuje /catalog/controller/account/return.phpplik i klasę i spróbuje wywołać insertmetodę
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 xxxnazwie 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 publicmetody. Na przykład, aby zmienić rozmiar obrazu, należy użyć tool/imagemodelu i wywołać jego resizemetodę 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->datazmiennej, 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_varklucz staje się $example_vari 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 defaultfolderu
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 templatefolderze 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.tplchociaż 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.tpli 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
$resultzwróci obiekt do SELECTzapytań, 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->dbObiekt posiada również kilka dodatkowych metod
$this->db->escape()używa mysql_real_escape_string () na przekazanej wartości
$this->db->countAffectedzwraca liczbę wierszy, na które ma wpływ UPDATEzapytanie, 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, $_REQUESTI$_SERVER
$_SESSIONjest edytowany za pomocą $this->session->datagdzie dane są tablicą asocjacyjną naśladującą$_SESSION
Do wszystkich innych można uzyskać dostęp za pomocą $this->requesti 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