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