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 Cart
Klasse verwenden, die sich in befindet /system/library/cart.php
und 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/ccc
Parameter 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/bbb
Teile, die als zwei Teile angesehen werden sollten, einige enthalten jedoch drei Teile. aaa/bbb/ccc
Der erste Teil aaa
bezieht 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 .php
oder .tpl
Erweiterung. Der dritte Teil wird im folgenden Abschnitt "Grundlegendes zu Controllern" erläutert
Sprachen verstehen
Sprachen werden im /catalog/language/
Ordner im your-language
Unterordner gespeichert . In diesem Fall werden allgemeine Textwerte, die auf verschiedenen Seiten verwendet werden, in der your-language.php
Datei 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 route
fü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.php
solltest du etwas ähnliches finden
$_['heading_title'] = 'Search';
Die Werte in der globalen Sprachdatei english/english.php
werden automatisch geladen und können ohne die $this->language->load
Methode verwendet werden
Controller verstehen
Controller werden basierend auf dem geladen route
und 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.php
diesem Ordner. Beachten Sie erneut, dass die Route .php
verwendet wird , der gefolgt wird.
Wenn Sie die Controller-Datei öffnen, wird ein Pascal Case-Klassenname angezeigt, der die Controller
Klasse erweitert ControllerProductSearch
. Dies ist wiederum Controller
routenspezifisch , 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 public
können über die Route ausgeführt werden - private
nicht. Standardmäßig wird bei einer zweiteiligen Standardroute ( aaa/bbb
oben) eine Standardmethode index()
aufgerufen. Wenn der dritte Teil einer Route ( ccc
oben) verwendet wird, wird diese Methode stattdessen ausgeführt. Lädt beispielsweise account/return/insert
die /catalog/controller/account/return.php
Datei und die Klasse und versucht, die insert
Methode 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 xxx
aufgerufenen 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 public
Methoden aufrufen . Um beispielsweise die Größe eines Bildes zu ändern, verwenden Sie das tool/image
Modell und rufen seine resize
Methode 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->data
Variablen 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_var
Schlüssel $example_var
als 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 default
Ordners 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.tpl
obwohl 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.tpl
und 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
$result
gibt ein Objekt für SELECT
Abfragen 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->db
Objekt
$this->db->escape()
verwendet mysql_real_escape_string () für den übergebenen Wert
$this->db->countAffected
Gibt die Anzahl der von einer UPDATE
Abfrage 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
, $_REQUEST
und$_SERVER
$_SESSION
wird bearbeitet, indem $this->session->data
Daten ein assoziatives Array sind, das das nachahmt$_SESSION
Auf alle anderen kann mit zugegriffen werden $this->request
und 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