Wie werde ich ein OpenCart-Guru? [geschlossen]

98

Es scheint, als hätten sie keine Dokumentation außer einigen API-Aufrufen in ihren offiziellen Foren. Ich habe Erfahrung mit dem Zend-Framework und dem CodeIgniter-Framework. Kann mir ein OpenCart-Meister den besten Weg empfehlen, es zu lernen und in kürzester Zeit zu meistern? Ich muss bald ein großes Projekt damit machen.

CodeCrack
quelle
Siehe docs.opencart.com und die Framework-Übersicht von Qphoria . Durchsuchen Sie auch die Themen in OpenCart-Foren> Support . Wir hoffen, dass wir in Zukunft eine dedizierte OpenCart SE-Site unter area51.stackexchange.com/proposals/77558/opencart
Pacerier
Dies ist wirklich eine wichtige Frage, manchmal ist die Überwindung von SO-Standards wirklich hilfreich ...
KAD
1
Vielen Dank für diese Frage, es hat mir sehr geholfen
Bipul Roy
@BipulRoy Ich bin froh! Scheint, als wäre es jetzt eine beliebte Frage!
CodeCrack

Antworten:

311

OpenCart 1.5.X Entwickler-Kurzanleitung für Anfänger

Dieses Handbuch richtet sich an Entwickler, die bereits mit PHP, OOP und der MVC-Architektur vertraut sind

Im Folgenden sehen Sie Beispiele für die Katalogseite des Warenkorbs. Die Administratorseite ist in ihrer Funktion identisch, mit Ausnahme der Ansichten, die im entsprechenden Abschnitt angegeben sind


Bibliotheken verstehen

Auf alle Bibliotheksfunktionen kann über Controller, Modell und Ansichten zugegriffen werden $this->library_name. All dies finden Sie im /system/library/Ordner. Um beispielsweise auf die Produkte des aktuellen Warenkorbs zuzugreifen, müssen Sie die CartKlasse verwenden, die sich in befindet /system/library/cart.phpund auf die zugegriffen werden kann$this->cart->getProducts()

Häufig verwendete Gegenstände

  • customer.php - Kundenbezogene Funktionen
  • user.php - Benutzerbezogene Admin-Funktionen
  • cart.php - Wagenbezogene Funktionen
  • config.php - Alle Einstellungen werden daraus geladen
  • url.php - Funktionen zur URL-Generierung

Grundlegendes zum Routenparameter

Das OpenCart-Framework stützt sich auf den route=aaa/bbb/cccParameter in der Abfragezeichenfolge, um zu wissen, was geladen werden soll, und ist die grundlegende Funktion, um die Dateien zu finden, die Sie für jede Seite bearbeiten müssen. Die meisten Routen verwenden eigentlich nur die aaa/bbbTeile, die als zwei Teile angesehen werden sollten, einige enthalten jedoch drei Teile. aaa/bbb/cccDer erste Teil aaabezieht sich im Allgemeinen auf den Ordner in einem generischen Ordner wie dem Controller oder den Vorlagenordnern. Der zweite Teil bezieht sich normalerweise auf den Dateinamen ohne die relevante .phpoder .tplErweiterung. Der dritte Teil wird im folgenden Abschnitt "Grundlegendes zu Controllern" erläutert


Sprachen verstehen

Sprachen werden im /catalog/language/Ordner im your-languageUnterordner gespeichert . In diesem Fall werden allgemeine Textwerte, die auf verschiedenen Seiten verwendet werden, in der your-language.phpDatei im Ordner gespeichert. Für die englische Sprache auf der Katalogseite finden Sie die Werte in catalog/language/english/english.php. Für einen bestimmten Seitentext benötigen Sie den routefür die Seite (Dies ist im Allgemeinen der Fall, aber nicht immer, da Sie eine beliebige Sprachdatei angeben können). Auf der Suchseite befindet sich beispielsweise die Route product/search, und daher befindet sich der sprachspezifische Text für diese Seite in catalog/language/english/product/search.php(Beachten Sie, dass der Name und der Unterordner der Datei mit der Route übereinstimmen, der die Route folgt .php.

Um die Sprache in einen Controller zu laden, verwenden Sie

$this->language->load('product/search');

Anschließend können Sie die Sprachbibliotheksfunktion verwenden get, um bestimmte Sprachtexte abzurufen, z

$some_variable = $this->language->get('heading_title');

Die Sprachvariablen werden in der Sprachdatei mithilfe einer speziellen Variablen zugewiesen, bei der $_es sich um ein Array von Schlüsseln und Textwerten handelt. In deinem /catalog/language/english/product/search.phpsolltest du etwas ähnliches finden

$_['heading_title']     = 'Search';

Die Werte in der globalen Sprachdatei english/english.phpwerden automatisch geladen und können ohne die $this->language->loadMethode verwendet werden


Controller verstehen

Controller werden basierend auf dem geladen routeund sind ziemlich einfach zu verstehen. Controller befinden sich im /catalog/controller/Ordner. Im letzten Beispiel befindet sich der Controller für die Suchseite in /product/search.phpdiesem Ordner. Beachten Sie erneut, dass die Route .phpverwendet wird , der gefolgt wird.

Wenn Sie die Controller-Datei öffnen, wird ein Pascal Case-Klassenname angezeigt, der die ControllerKlasse erweitert ControllerProductSearch. Dies ist wiederum Controllerroutenspezifisch , gefolgt vom Namen des Unterordners und des Dateinamens, ohne dass die Erweiterung groß geschrieben wird. Die Großschreibung ist eigentlich nicht erforderlich, wird jedoch zur besseren Lesbarkeit empfohlen. Es ist erwähnenswert, dass Klassennamen keine anderen Werte aus dem Unterordner und Dateinamen als Buchstaben und Zahlen übernehmen. Unterstriche werden entfernt.

Innerhalb der Klasse befinden sich die Methoden. Methoden in der deklarierten Klasse publickönnen über die Route ausgeführt werden - privatenicht. Standardmäßig wird bei einer zweiteiligen Standardroute ( aaa/bbboben) eine Standardmethode index()aufgerufen. Wenn der dritte Teil einer Route ( cccoben) verwendet wird, wird diese Methode stattdessen ausgeführt. Lädt beispielsweise account/return/insertdie /catalog/controller/account/return.phpDatei und die Klasse und versucht, die insertMethode aufzurufen


Modelle verstehen

Modelle in OpenCart befinden sich im /catalog/model/Ordner und sind nach Funktion und nicht nach Route gruppiert. Daher müssen Sie sie über in Ihren Controller laden

$this->load->model('xxx/yyy');

Dadurch wird die Datei in den xxxaufgerufenen Unterordner geladen yyy.php. Es kann dann über das Objekt verwendet werden

$this->model_xxx_yyy

und wie bei Controllern können Sie nur deren publicMethoden aufrufen . Um beispielsweise die Größe eines Bildes zu ändern, verwenden Sie das tool/imageModell und rufen seine resizeMethode wie folgt auf

$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);

Grundlegendes zur Variablenzuweisung in Ansichten des Controllers

Um Werte von der Steuerung an die Ansicht zu übergeben, müssen Sie lediglich Ihre Daten der $this->dataVariablen zuweisen , bei der es sich im Wesentlichen um ein Array von Schlüssel => Wertepaaren handelt. Als Beispiel

$this->data['example_var'] = 123;

Der Zugriff in einer Ansicht ist ein wenig verständlich, wenn Sie mit der Methode extract () vertraut sind, mit der jeder Schlüssel in eine Variable konvertiert wird. So wird der example_varSchlüssel $example_varals solcher in der Ansicht und kann als solcher darauf zugegriffen werden.


Themen verstehen

Themen sind nur für die Katalogseite verfügbar und bestehen im Wesentlichen aus einem Ordner mit Vorlagen, Stylesheets und Themenbildern. Themenordner werden im /catalog/view/theme/Ordner abgelegt, gefolgt vom Namen des Themas. Der Ordnername ist mit Ausnahme des defaultOrdners nicht von Bedeutung

Die Admin-Seite verwendet /admin/view/template/ (Überspringen des /theme/theme-name/Pfads, da keine unterschiedlichen Themen zulässig sind)

Vorlagendateien befinden sich in a template Ordner innerhalb des Themenordners. Sollte eine Vorlage für das aktuell ausgewählte Thema nicht verfügbar sein, wird stattdessen die Vorlage des Standardordners als Fallback verwendet. Dies bedeutet, dass Themen mit sehr wenigen Dateien erstellt werden können und dennoch voll funktionsfähig sind. Es reduziert auch Codeduplizierungen und Probleme, wenn Upgrades durchgeführt werden


Ansichten verstehen (Vorlagen)

Wie bei Sprache und Modellen beziehen sich die Ansichtsdateien im Allgemeinen auf die Route, müssen jedoch überhaupt nicht vorhanden sein. Vorlagen auf der Katalogseite werden normalerweise in gefunden, /catalog/view/theme/your-theme/template/sofern sie nicht vorhanden sind. In diesem Fall werden die Vorlagen des Standardthemas verwendet. Für unser Beispiel auf der Suchseite oben lautet die Datei product/search.tpl. Für Routen mit drei Teilen gilt dies im Allgemeinen, aaa/bbb_ccc.tplobwohl es keine fest festgelegten Regeln gibt. Im Administrator folgen die meisten Seiten diesem Beispiel, mit der Ausnahme, dass Seiten, auf denen Elemente wie die Produktlistenseite aufgelistet sind, catalog/product_list.tplund das Produktbearbeitungsformular vorhanden sindcatalog/product_form.tpl . Auch diese sind nicht festgelegt, sondern ein Standard für den Standardwagen.

Die Vorlagendatei ist in der Tat nur eine andere PHP-Datei, aber mit der Erweiterung .tpl und wird tatsächlich in der Controller-Datei ausgeführt. Daher können alle Dinge, die Sie in einem Controller codieren können, in einer Vorlagendatei ausgeführt werden (obwohl dies nicht empfohlen wird, es sei denn, dies ist absolut erforderlich notwendig)


Grundlegendes zum Datenbankobjekt

Abfragen werden mit ausgeführt

$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");

DB_PREFIX Wie der Name schon sagt, handelt es sich um eine Konstante, die das Datenbankpräfix enthält, falls vorhanden

$resultgibt ein Objekt für SELECTAbfragen zurück, das einige Eigenschaften enthält

$result->row enthält die Daten der ersten Zeile, wenn eines oder mehrere als assoziatives Array zurückgegeben werden

$result->rows enthält eine Reihe von Zeilenergebnissen, ideal zum Durchlaufen von foreach

$result->num_rows enthält die Anzahl der zurückgegebenen Ergebnisse

Es gibt auch einige zusätzliche Methoden für das $this->dbObjekt

$this->db->escape()verwendet mysql_real_escape_string () für den übergebenen Wert

$this->db->countAffectedGibt die Anzahl der von einer UPDATEAbfrage betroffenen Zeilen usw. zurück

$this->db->getLastId()Gibt die letzte automatische Inkrement-ID mit mysql_insert_id () zurück.


Reservierte Variablen verstehen

OpenCart hat Variablen Verwendung anstelle des Standard vorgegeben $_GET, $_POST, $_SESSION, $_COOKIE, $_FILES, $_REQUESTund$_SERVER

$_SESSIONwird bearbeitet, indem $this->session->dataDaten ein assoziatives Array sind, das das nachahmt$_SESSION

Auf alle anderen kann mit zugegriffen werden $this->requestund sie wurden "gereinigt", um den aktivierten / deaktivierten magischen Anführungszeichen zu entsprechen

$_GET wird $this->request->get

$_POST wird $this->request->post

$_COOKIE wird $this->request->cookie

$_FILES wird $this->request->files

$_REQUEST wird $this->request->request

$_SERVER wird $this->request->server


Zusammenfassung

Obwohl das oben Genannte kein kugelsicherer Leitfaden für Entwickler ist, wird er hoffentlich als guter Ausgangspunkt für diejenigen dienen, die anfangen

Jay Gilford
quelle
3
Vielen Dank! Woher hast du das?
CodeCrack
64
Ich schrieb es. Ich dachte, es müsste geschrieben werden und passt zum Queston
Jay Gilford
2
Sehr schön. Viel informativer als die meisten Guides. Haben Sie zufällig einen fortgeschrittenen?
CodeCrack
3
Dies sollte Community Wiki Status erhalten
Stann0rz
1
@UltimateKing - Dieses Handbuch enthält bereits mehr als genug Informationen, um mit dem Erstellen eigener Mods zu beginnen. Es gibt auch Tutorials speziell für die
Jay Gilford
36

Globale Bibliotheksmethoden: Grundlegende Funktionen der OpenCart-Bibliothek mit ihren Funktionen. Die meisten dieser Funktionen können von überall im Katalog oder in den Administratorordnern (Controller, Modelle, Ansichten) aufgerufen werden.

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
quelle
9

Es gibt eine OpenCart Wiki-Website mit Dokumentation für Anfänger. Folgen Sie den unten angegebenen URLs für weitere Details:

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

INTERNET ARCHIVE Links

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 = Methodenreferenz

ZB Methodenreferenz enthält Details für:

  1. Kundenlogin
  2. DB-Zugriff
  3. Handhabung des Einkaufswagens
  4. Konfig
  5. Zwischenspeicher
  6. Währungsumschlag

Es befinden sich noch einige Seiten im Aufbau, aber es wird hilfreich sein.

[Aktualisieren]

Ab Januar 2018 ist die Domain opencarhelp.com nicht mehr verfügbar.

Dharmang
quelle
Nach ein paar Monaten scheinen noch viele Informationen zu fehlen. Wurde dieses Projekt aufgegeben?
Pacerier
@ Pacerier, da bin ich mir nicht sicher.
Dharmang
Dies ist eine großartige Seite, auf die auch Wiki im offenen Warenkorb verweist. Sie können den Link hier sehen. wiki.opencarthelp.com/doku.php?id=opencart_framework
Nassim
4

Obwohl dieses Thema bereits mehrfach beantwortet wurde, möchte ich aufgrund meiner Erfahrung einen anderen Ansatz zur Beherrschung von OpenCart anbieten.

Lernen durch Tun

Wenn Sie Ihr eigenes OpenCart-Framework mit einer Handvoll Dateien von Grund auf neu erstellen, können Sie verstehen, wie alles zusammengesetzt ist. Ich werde die Dateistruktur von OpenCart für Sie nachahmen.

Erstellen Sie eine Datei index.php

<?php
// My simpleCart

1. Registrierung

Opencart verwendet das Registrierungsmuster, um alle Instanzen geladener Klassen aufzulisten. Es ist das Herz Ihrer OpenCart-App. Das Registrierungsobjekt wird dann an jede Kategorie, jedes Modell und jede Bibliothek weitergegeben, um schnell auf andere Objekte zugreifen zu können.

Erstellen Sie eine Datei mit Pfad /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;
    }
}

in deinem index.php

<?php
// My simpleCart

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

//initialize registry
$registry = new Registry;

2. Ausgabe

Fügen wir nun eine Ausgabe hinzu, die in Zukunft unser HTML sein wird. Schließlich besteht die ganze Idee darin, eine Textzeichenfolge an den Browser zu senden.

Erstelle Datei 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;
        }
    }
}

und in deinem 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();

Beachten Sie, dass ich Hello world nur als Beispiel hinzugefügt habe. Wir werden es weiter entfernen. Aktualisieren Sie Ihre Site, um sie zu überprüfen. Der Browser sollte angezeigt werden Hello World.

3. Controller

Stellen Sie sich Controller als Seiten vor. Sie definieren, was dem Client angezeigt wird: Text, HTML, JSON, Download oder sogar ein Bild. Im Moment wollen wir nur eine Seite, die Text sendet.

Wir werden einen Controller für die homeSeite erstellen .

Fügen Sie eine Datei mit Pfad hinzu 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);
    }
}

und bearbeiten Sie Ihre 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();

Beachten Sie, wie ich das $refistryan das ControllerCommonHome übergeben habe, damit ich innerhalb des Controllers darauf zugreifen kann.

4. Router

Wir wollen nicht, dass Controller fest codiert werden, richtig. Wir werden einen Parameter routeaus der URL-Adresse verwenden, um unserem Einkaufswagen mitzuteilen, welcher Controller geladen werden soll.

Erstellen Sie eine Datei mit Pfad system/library/request.php

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

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

Erstellen Sie die Router-Klasse, die für die Initialisierung der Controller-Datei basierend auf der Route verantwortlich ist (mit anderen Worten: Rufen Sie den Controller dynamisch auf).

<?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();
    }
}

Laden Sie es in Ihre 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();

Beachten Sie, wie ich alles in das lade $registryund es dann an das weitergebe, $routerdas es dann an das weitergibt $controller.

Dieser Beitrag ist bereits zu lang, aber ich hoffe, er vermittelt ein grundlegendes Verständnis des MVC-Musters in OpenCart.

Wenn Sie möchten, dass ich mit diesem Beitrag fortfahre und Ihnen erkläre, wie andere Dinge wie Modelle und Ansichten funktionieren, bewerten Sie diese Antwort, damit ich es weiß.

Schauen Sie sich auch mein Youtube https://www.youtube.com/dreamvention und mein Blog https://dreamvention.com/blog an. Ich werde dort weitere Tipps und Tutorials für euch veröffentlichen!

Dmitriy Zhuk
quelle
1

PHP ist eine ziemlich große Sprache mit über 5000 integrierten Funktionen. Eine Strategie zum Erlernen einer neuen Plattform besteht darin, zu ermitteln, welche Funktionen am häufigsten verwendet werden, und einige Zeit damit zu verbringen, diese sehr gut kennenzulernen.

Ich habe einige Abfragen zum OpenCart-Quellcode ausgeführt und die 10 am häufigsten verwendeten Funktionen sind:

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

Alle hier aufgeführten 52 sowie Linux-Bash-Befehle, die Sie in jeder Codebasis verwenden können, um häufig verwendete Funktionen zu identifizieren: https://www.antropy.co.uk/blog/efficient-learning-for-new-opencart-developers/

Paul Feakins
quelle
1

Diese Wiedergabeliste für YouTube-Videos kann auch hilfreich sein, um OpenCart-Entwickler Gurus zu werden:

OpenCart Videos Tutorials

  1. Einführung und Inhaltsverzeichnis Dieses Video zeigt die Einführung der Serie
  2. OpenCart-Installation localhost Dieses Video zeigt die OpenCart-Installation in localhost
  3. Datei- und Ordnerstruktur von OpenCart Beschreibt die Datei- und Ordnerstruktur von OpenCart
  4. Erstellen eines Datenbanktabellenschemas in OpenCart Es zeigt das Datenbanktabellenschema und zeigt, wie Datenbanktabellen in OpenCart erstellt werden
  5. Methoden vordefinierter Objekte der OpenCart-Bibliothek Hier werden die Methoden vordefinierter Objekte der OpenCart-Bibliothek beschrieben und gezeigt, wo sie zu finden sind.
  6. MVCL-Muster, Codefluss und Anforderung und Antwort in OpenCart Zeigt MVCL-Muster, Codefluss und Anforderung und Antwort in OpenCart an. Sie beschreiben den Fluss wie im Bild unten: MVCL mit Code beschrieben

  7. Opencart-Modul installieren, konfigurieren und deinstallieren Es werden drei Möglichkeiten zum Hochladen von Modulen sowie zum Installieren, Konfigurieren und Deinstallieren des OpenCart 3-Moduls / der OpenCart 3-Erweiterung gezeigt.

  8. Layouts und Position in Opencart 3 Es beschreibt die OpenCart 3-Layouts und -Positionen. Es wird gezeigt, wie benutzerdefinierte Layouts für verschiedene Seiten angezeigt werden, und es werden Beispiele für Kategorieseiten gegeben. Wir zeigen das unterschiedliche Layout für eine andere Kategorie.

  9. Ereignisübersicht von Opencart Sie erfahren, was Ereignisse in OpenCart sind, wie sie funktionieren und was sie so nützlich macht.

  10. Opencart-API-Dokumentation für Entwickler Dieses Video zeigt, wie Sie eine benutzerdefinierte Opencart-API verwenden und erstellen

Sobald Sie diese Videos sehen, können Sie mit dem Codieren beginnen :)

Rupak Nepali
quelle