Jak zostać guru OpenCart? [Zamknięte]

98

Wygląda na to, że nie mają dokumentacji, z wyjątkiem niektórych wywołań API na ich oficjalnych forach. Mam doświadczenie z frameworkiem Zend i CodeIgniter. Czy jacyś mistrzowie OpenCart mogą polecić mi najlepszy sposób nauczenia się tego i opanowania w jak najkrótszym czasie? Wkrótce muszę z nim zrobić duży projekt.

CodeCrack
źródło
Zobacz docs.opencart.com i przegląd frameworka autorstwa Qphoria . Przejrzyj także wątki na forach OpenCart> Wsparcie . Miejmy nadzieję, że w przyszłości będziemy mieć dedykowaną witrynę OpenCart SE pod adresem area51.stackexchange.com/propeals/77558/opencart
Pacerier
To naprawdę ważne pytanie, czasami pokonanie standardów SO jest naprawdę pomocne ...
KAD
1
Wielkie
@BipulRoy Cieszę się! Wygląda na to, że jest to teraz popularne pytanie!
CodeCrack,

Odpowiedzi:

311

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

Jay Gilford
źródło
3
Dzięki! Skąd to masz?
CodeCrack,
64
Napisałem to. Pomyślałem, że trzeba to napisać i dopasować queston
Jay Gilford,
2
Bardzo dobrze. O wiele więcej informacji niż większość przewodników. Czy masz jakieś szanse?
CodeCrack
3
Powinno to otrzymać status Wiki społeczności
Stann0rz
1
@UltimateKing - ten przewodnik już zawiera więcej niż wystarczającą ilość informacji, aby rozpocząć tworzenie własnych modów. Istnieją również tutoriale specyficzne dla rozwoju modułów w sieci
Jay Gilford
36

Globalne metody biblioteczne: podstawowe funkcje biblioteki opencart wraz z ich funkcjami, większość z nich można wywołać z dowolnego miejsca w katalogu lub folderach administracyjnych (kontrolery, modele, widoki)

CACHE
$this->cache->delete($key) - Deletes cache [product, category, country, zone, language, currency,
manufacturer]

CART
$this->cart->getProducts() Gets all products currently in the cart including options, discounted prices, etc.
$this->cart->add( $product_id, $qty = 1, $options = array()) - Allows you to add a product to the cart
$this->cart->remove( $key ) - Allows you to remove a product from the cart
$this->cart->clear() - Allows you to remove all products from the cart
$this->cart->getWeight() - Sum of the weight of all products in the cart that have require shipping set to Yes
$this->cart->getSubTotal() - returns the subtotal of all products added together before tax
$this->cart->getTotal() - returns the total of all products added together after tax
$this->cart->countProducts() - returns the count of all product in the cart
$this->cart->hasProducts() - returns true if there is at least one item in the cart
$this->cart->hasStock() - returns false if there is at least one item in the cart that is out of stock
$this->cart->hasShipping() - returns true if there is at least one item in the cart that requires shipping
$this->cart->hasDownload() - returns true if there is at least one item in the cart that has a download
associated

CONFIG
$this->config->get($key) - returns setting value by keyname based on application (catalog or admin)
$this->config->set($key, $value) - set the value to override the setting value. DOES NOT SAVE TO DATABASE

CURRENCY
$this->currency->set($currency) - set or override the currency code to be used in the session
$this->currency->format($number, $currency = '', $value = '', $format = TRUE) - format the currency
$this->currency->convert($value, $from, $to) - convert a value from one currency to another. Currencies must
exist
$this->currency->getId() - get the database entry id for the current currency (1, 2, 3, 4)
$this->currency->getCode() - get the 3-letter iso code for the current currency (USD, EUR, GBP, AUD, etc)
$this->currency->getValue($currency) - get the current exchange rate from the database for the specified
currency.
$this->currency->has(currency) - Check if a currency exists in the opencart currency list

CUSTOMER
$this->customer->login($email, $password) - Log a customer in
$this->customer->logout() - Log a customer out
$this->customer->isLogged() - check if customer is logged in
$this->customer->getId() - get the database entry id for the current customer (integer)
$this->customer->getFirstName() - get customer first name
$this->customer->getLastName() - get customer last name
$this->customer->getEmail() - get customer email
$this->customer->getTelephone() - get customer telephone number
$this->customer->getFax() - get customer fax number
$this->customer->getNewsletter() - get customer newsletter status
$this->customer->getCustomerGroupId() - get customer group id
$this->customer->getAddressId() - get customer default address id (maps to the address database field)

DATABASE
$this->db->query($sql) - Execute the specified sql statement. Returns row data and rowcount.
$this->db->escape($value) - Escape/clean data before entering it into database
$this->db->countAffected($sql) - Returns count of affected rows from most recent query execution
$this->db->getLastId($sql) - Returns last auto-increment id from more recent query execution 4

DOCUMENT (*Called from controller only before renderer)
$this->document->setTitle($title) - Set page title
$this->document->getTitle()- Get page title
$this->document->setDescription($description) - Set meta description
$this->document->getDescription()- Get meta description
$this->document->setKeywords()- Set meta keywords
$this->document->getKeywords()- Get meta keywords
$this->document->setBase($base) - Set page base
$this->document->getBase() - Get page base
$this->document->setCharset($charset) - Set page charset
$this->document->getCharset() - Get page charset
$this->document->setLanguage($language) - Set page language
$this->document->getLanguage()- Get page language
$this->document->setDirection($direction) - Set page direction (rtl/ltr)
$this->document->getDirection()- Get page direction (rtl/ltr)
$this->document->addLink( $href, $rel )  Add dynamic <link> tag
$this->document->getLinks()- Get page link tags
$this->document->addStyle( $href, $rel = 'stylesheet', $media = 'screen' )  Add dynamic style
$this->document->getStyles()- Get page styles
$this->document->addScript( $script ) - Add dynamic script
$this->document->getScripts()- Get page scripts
$this->document->addBreadcrumb($text, $href, $separator = ' &gt; ')  Add breadcrumb
$this->document->getBreadcrumbs()- Get Breadcrumbs

ENCRYPT
$this->encryption->encrypt($value) - Encrypt data based on key in admin settings
$this->encryption->decrypt($value) - Decrypt data based on key in admin settings

IMAGE
$this->image->resize($width = 0, $height = 0)

JSON
$this->json->encode( $data )
$this->json->decode( $data , $assoc = FALSE)

LANGUAGE
$this->language->load($filename);

LENGTH
$this->length->convert($value, $from, $to) - convert a length to another. units must exist
$this->length->format($value, $unit, $decimal_point = '.', $thousand_point = ',') - format the length to use
unit

LOG
$this->log->write($message) - Writes to the system error log

REQUEST
$this->request->clean($data) - Cleans the data coming in to prevent XSS
$this->request->get['x'] - Same as $_GET['x']
$this->request->post['x'] - Same as $_POST['x']

RESPONSE
$this->response->addHeader($header) - additional php header tags can be defined here
$this->response->redirect($url) - redirects to the url specified

TAX
$this->tax->setZone($country_id, $zone_id) - Set the country and zone id for taxing (integer)
$this->tax->calculate($value, $tax_class_id, $calculate = TRUE) - Calculate all taxes to be added to the total
$this->tax->getRate($tax_class_id) - Get the rates of a tax class id
$this->tax->getDescription($tax_class_id) - Get the description of a tax class id
$this->tax->has($tax_class_id) - Check if a tax class id exists in opencart

SESSION
$this->session->data['x'] - Same as $_SESSION['x']  
Abdul Rehman
źródło
9

Istnieje witryna OpenCart Wiki z dokumentacją dla początkujących programistów. Aby uzyskać więcej informacji, postępuj zgodnie z adresami URL podanymi poniżej:

http://wiki.opencarthelp.com/doku.php?id=start
http://wiki.opencarthelp.com/doku.php?id=methods_reference

Linki do ARCHIWUM INTERNETU

http://web.archive.org/web/20160305131349/http://wiki.opencarthelp.com/doku.php?id=start http://web.archive.org/web/20160305131349/http://wiki .opencarthelp.com / doku.php? id = methods_reference

Np. Odniesienie do metody zawiera szczegóły dotyczące:

  1. Login klienta
  2. Dostęp do bazy danych
  3. Obsługa koszyka na zakupy
  4. Config
  5. Pamięć podręczna
  6. Obsługa walut

Wciąż jest kilka stron w budowie, ale będzie to pomocne.

[Aktualizacja]

Od stycznia 2018 r. Domena opencarhelp.com nie działa.

Dharmang
źródło
Wydaje się, że po kilku miesiącach nadal brakuje wielu informacji. Czy ten projekt został porzucony?
Pacerier
@Pacerier, nie jestem tego pewien.
Dharmang
to jest świetna strona, nawet open cart wiki odwołuje się do niej, możesz zobaczyć link tutaj wiki.opencarthelp.com/doku.php?id=opencart_framework
Nassim
4

Chociaż na ten temat odpowiadano już wiele razy, chciałbym zaproponować inne podejście do masteringu OpenCart w oparciu o moje doświadczenie.

Uczenie się na doświadczeniach

Tworząc od podstaw własną platformę OpenCart z kilkoma plikami, możesz zrozumieć, jak wszystko jest połączone. Będę naśladować dla Ciebie strukturę plików OpenCart.

Utwórz plik index.php

<?php
// My simpleCart

1. Rejestr

Opencart używa wzorca rejestru, aby wyświetlić wszystkie wystąpienia załadowanych klas. To serce Twojej aplikacji OpenCart. Obiekt rejestru jest następnie przekazywany do każdej kategorii, modelu i biblioteki w celu szybkiego dostępu do innych obiektów.

utwórz plik ze ścieżką /system/engine/registry.php

<?php
// Registry class. 
class Registry
{
    private $data = array();

    public function set($key, $value){
        $this->data[$key] = $value;
    }

    public function get($key){
        return (isset($this->data[$key])) ? $this->data[$key] : false;
    }
}

w Twoim index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');

//initialize registry
$registry = new Registry;

2. Wyjście

Teraz dodajmy wyjście, które w przyszłości będzie naszym kodem HTML. W końcu chodzi o to, żeby wysłać do przeglądarki ciąg tekstu.

Utwórz plik system/library/response.php

<?php
class Response {
    private $output;

    public function getOutput() {
        return $this->output;
    }

    public function setOutput($output) {
        $this->output = $output;
    }

    public function output() {
        if ($this->output) {
            echo $this->output;
        }
    }
}

i w swoim index.php

<?php
// My simpleCart

//load dependency files
require_once('system/engine/registry.php');
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add response object to the registry
$registry->set('response', $response);

//lets set an output as a test
$registry->get('response')->setOutput('Hello World');

//send the output to the client
$registry->get('response')->output();

Zauważ, że dodałem Hello world tylko jako przykład. Usuniemy go dalej. Odśwież witrynę, aby to sprawdzić. Powinna zostać wyświetlona przeglądarka Hello World.

3. Kontrolery

Pomyśl o kontrolerach jak o stronach. Określą, co będzie wyświetlane klientowi: tekst, html, json, download czy nawet obraz. Na razie potrzebujemy tylko strony, która wysyła tekst.

Stworzymy kontroler dla homestrony.

dodaj plik ze ścieżką catalog/controller/common/home.php

<?php

class ControllerCommonHome{

    private $registry = array();

    public function __construct($registry){
        $this->registry = $registry;
    }

    public function index(){

        $output = 'Home Page';
        //using the registry to get the response object and set the Output
        $this->registry->get('response')->setOutput($output);
    }
}

i edytuj swój index.php

<?php
// My simpleCart

//load registry
require_once('system/engine/registry.php');
//load response
require_once('system/library/response.php');

//initialize registry
$registry = new Registry;

//initialize response
$response = new Response;
//add resoinse object to the registry
$registry->set('response', $response);

//load controller common/home
require_once('catalog/controller/common/home.php');
$controller = new ControllerCommonHome($registry);
$controller->index();

//send the output to the client
$registry->get('response')->output();

zwróć uwagę, jak przekazałem plik $refistrydo ControllerCommonHome, aby uzyskać do niego dostęp wewnątrz kontrolera.

4. Router

Nie chcemy, aby kontrolery były zakodowane na stałe, prawda. Użyjemy parametruroute z adresu url, aby poinformować nasz koszyk, który kontroler ma załadować.

Utwórz plik ze ścieżką system/library/request.php

<?php
class Request {
    public $get = array();

    //for now I just need the $_GET parameter
    public function __construct() {
        $this->get = $_GET;
    }
}

Utwórz klasę Routera, która będzie odpowiedzialna za inicjalizację pliku kontrolera na podstawie trasy (innymi słowy: dynamiczne wywołanie kontrolera)

<?php
class Router {
    private $registry;

    public function __construct($registry) {
        $this->registry = $registry;
    }

    public function dispatch($route) {
        require_once('catalog/controller/'.$route.'.php');
        $class = "Controller".str_replace('/', '', $route);
        $controller = new $class($this->registry);
        $controller->index();
    }
}

załaduj go do swojego index.php

<?php
require_once('system/engine/registry.php');
require_once('system/engine/router.php');
require_once('system/library/response.php');
require_once('system/library/request.php');

$registry = new Registry;

$response = new Response;
$registry->set('response', $response);

$request = new Request;
$registry->set('request', $request);

//get the route from the url
if(isset($registry->get('request')->get['route'])){
    $route = $registry->get('request')->get['route'];
}else{
    $route = 'common/home';
}

//initiate the router and dispatch it base on the route
$router = new Router($registry);
$router->dispatch($route);


$registry->get('response')->output();

Zwróć uwagę, jak ładuję wszystko do, $registrya następnie przekazuję do, $routerktóry następnie przekazuje to do $controller.

Ten post jest już za długi, ale mam nadzieję, że da podstawowe zrozumienie wzorca MVC w OpenCart.

Jeśli chcesz, żebym kontynuował ten post i powiedział Ci, jak działają inne rzeczy, takie jak modele i widoki, oceń tę odpowiedź, abym wiedział.

Zajrzyj również na mój Youtube https://www.youtube.com/dreamvention i mój blog https://dreamvention.com/blog Zamieszczę tam więcej wskazówek i samouczków dla was!

Dmitriy Zhuk
źródło
1

PHP to dość duży język z ponad 5000 wbudowanych funkcji więc jedną ze strategii uczenia się nowej platformy jest identyfikacja funkcji, których używa najczęściej i poświęcenie czasu na ich bardzo dobre poznanie.

Uruchomiłem kilka zapytań dotyczących kodu źródłowego OpenCart, a 10 najczęściej używanych funkcji to:

array()
count()
explode()
implode()
mktime()
delete()
time()
date()
sprintf()
list()

Wszystkie 52 wymienione tutaj, a także polecenia bash Linuksa, których możesz użyć w dowolnej bazie kodu do identyfikacji często używanych funkcji: https://www.antropy.co.uk/blog/efficient-learning-for-new-opencart-developers/

Paul Feakins
źródło
1

Ta lista odtwarzania filmów z YouTube może być również pomocna, aby zostać guru programisty OpenCart:

Samouczki wideo OpenCart

  1. Wprowadzenie i spis treści Ten film wideo zawiera wprowadzenie do serii
  2. Instalacja OpenCart localhost Ten film przedstawia instalację OpenCart na hoście lokalnym
  3. Pliki i struktura folderów OpenCart Opisuje strukturę plików i folderów OpenCart
  4. Tworzenie schematu tabeli bazy danych w OpenCart Pokazuje schemat tabeli bazy danych i pokazuje, jak tworzyć tabele bazy danych w OpenCart
  5. Metody predefiniowanych obiektów biblioteki OpenCart Opisuje metody predefiniowanych obiektów biblioteki OpenCart i pokazuje, gdzie je znaleźć.
  6. Wzorzec MVCL, przepływ kodu oraz żądanie i odpowiedź w OpenCart Pokazuje wzorzec MVCL, przepływ kodu oraz żądanie i odpowiedź w OpenCart. Opisują przepływ jak na poniższym obrazku: MVCL opisane w Code

  7. Instalowanie, konfigurowanie i odinstalowywanie modułu OpenCart Pokazuje trzy sposoby przesyłania modułów, a następnie instalowania, konfigurowania i odinstalowywania modułu / rozszerzenia OpenCart 3.

  8. Układy i pozycja w Opencart 3 Opisuje układy i pozycje OpenCart 3. Pokazuje, jak wyświetlać niestandardowe układy dla różnych stron, podając przykłady stron kategorii. Pokazujemy inny układ dla innej kategorii.

  9. Przegląd wydarzeń w Opencart Dowiesz się, jakie wydarzenia są w OpenCart, jak działają i co sprawia, że ​​są tak przydatne.

  10. Dokumentacja Opencart API dla programistów Ten film pokaże, jak używać i tworzyć niestandardowe API Opencart

Gdy zobaczysz te filmy, możesz rozpocząć kodowanie :)

Rupak nepalski
źródło