Guida rapida per sviluppatori OpenCart 1.5.X per principianti
Questa guida è scritta per sviluppatori che hanno già familiarità con PHP, OOP e l'architettura MVC
Di seguito, vedrai esempi per il lato catalogo del carrello. Il lato amministratore è identico in funzione ad eccezione delle visualizzazioni che sono indicate nella sezione pertinente
Capire le biblioteche
Tutte le funzionalità della libreria sono accessibili tramite Controller, Model e Views usando $this->library_name
. Tutti questi possono essere trovati nella /system/library/
cartella. Ad esempio, per accedere ai prodotti del carrello della spesa corrente, è necessario utilizzare la Cart
classe, che si trova in /system/library/cart.php
ed è possibile accedervi utilizzando$this->cart->getProducts()
Articoli di uso comune
customer.php
- Funzioni relative al cliente
user.php
- Funzioni relative all'utente amministratore
cart.php
- Funzioni relative al carrello
config.php
- Tutte le impostazioni vengono caricate da questo
url.php
- Funzioni di generazione di URL
Comprensione del parametro del percorso
Il framework di OpenCart si basa sul route=aaa/bbb/ccc
parametro della stringa di query per sapere cosa caricare ed è la caratteristica fondamentale per trovare i file da modificare per ogni pagina. La maggior parte delle rotte utilizza in realtà solo il aaa/bbb
che dovrebbe essere visto come due parti, tuttavia alcune contengono tre parti aaa/bbb/ccc
La prima parte aaa
generalmente si riferisce alla cartella all'interno di una cartella generica come il controller o le cartelle dei modelli. La seconda parte di solito si riferisce al nome del file, senza il relativo .php
o l' .tpl
estensione. La terza parte è spiegata nella sezione "Informazioni sui controller" di seguito
Capire le lingue
Le lingue sono memorizzate nella /catalog/language/
cartella nella your-language
sottocartella. All'interno di questo, i valori di testo generali utilizzati nelle varie pagine sono memorizzati nel your-language.php
file all'interno della cartella, quindi per la lingua inglese sul lato del catalogo, troverai i valori in catalog/language/english/english.php
. Per il testo di una pagina specifica, avrai bisogno del route
per la pagina (questo è generalmente il caso, ma non sempre poiché puoi specificare qualsiasi file di lingua che ti piace). Ad esempio, la pagina di ricerca ha il percorso product/search
e quindi il testo specifico della lingua per quella pagina può essere trovato in catalog/language/english/product/search.php
(Notare che il nome del file e la sottocartella corrispondono al percorso seguito da .php
.
Per caricare la lingua in un controller, usi
$this->language->load('product/search');
Quindi è possibile utilizzare la funzione della libreria della lingua get
per recuperare testi in lingue specifiche, come
$some_variable = $this->language->get('heading_title');
Le variabili della lingua vengono assegnate nel file della lingua utilizzando una variabile speciale $_
che è un array di chiavi e valori di testo. Nel tuo /catalog/language/english/product/search.php
dovresti trovare qualcosa di simile a
$_['heading_title'] = 'Search';
I valori nel file della lingua globale english/english.php
vengono caricati automaticamente e possono essere utilizzati senza il $this->language->load
metodo
Capire i controller
I controller vengono caricati in base a route
e sono abbastanza semplici da capire. I controller si trovano nella /catalog/controller/
cartella. Continuando dall'ultimo esempio, /product/search.php
all'interno di questa cartella si trova il controller per la pagina di ricerca . Notare di nuovo che .php
viene utilizzato il percorso seguito da .
Aprendo il file del controller, vedrai un nome di Controller
classe Pascal Case che estende la classe, chiamato ControllerProductSearch
. Anche questo è specifico del percorso, Controller
seguito dal nome della sottocartella e dal nome del file senza l'estensione in maiuscolo. Le maiuscole non sono effettivamente richieste, ma sono consigliate per una facile leggibilità. Vale la pena notare che i nomi delle classi non prendono alcun valore dalla sottocartella e dal nome del file oltre a lettere e numeri. I trattini bassi vengono rimossi.
All'interno della classe ci sono i metodi. I metodi nella classe dichiarata public
sono accessibili per essere eseguiti tramite il percorso - private
non lo sono. Per impostazione predefinita, con un percorso standard in due parti ( aaa/bbb
sopra), index()
viene chiamato un metodo predefinito . Se viene utilizzata la terza parte di un percorso ( ccc
sopra), verrà eseguito questo metodo. Ad esempio, account/return/insert
caricherà il /catalog/controller/account/return.php
file e la classe e proverà a chiamare il insert
metodo
Comprensione dei modelli
I modelli in OpenCart si trovano nella /catalog/model/
cartella e sono raggruppati in base alla funzione, non al percorso, quindi sarà necessario caricarli nel controller tramite
$this->load->model('xxx/yyy');
Questo caricherà il file nella sottocartella xxx
chiamata yyy.php
. È quindi disponibile per l'uso tramite l'oggetto
$this->model_xxx_yyy
e come con i controller, puoi solo chiamare i suoi public
metodi. Ad esempio, per ridimensionare un'immagine, dovresti usare il tool/image
modello e chiamare il suo resize
metodo come segue
$this->load->model('tool/image');
$this->model_tool_image->resize('image.png', 300, 200);
Comprensione dell'assegnazione delle variabili nelle viste dal controller
Per passare i valori alla vista dal controller, è sufficiente assegnare i dati alla $this->data
variabile, che è essenzialmente un array di coppie chiave => valore. Come esempio
$this->data['example_var'] = 123;
Accedere a questo in una vista è un po 'dovrebbe essere facile da capire se hai familiarità con il metodo extract () che converte ogni chiave in una variabile. Quindi la example_var
chiave diventa $example_var
ed è possibile accedervi come tale nella vista.
Comprensione dei temi
I temi sono disponibili solo sul lato catalogo e sono fondamentalmente una cartella di modelli, fogli di stile e immagini di temi. Le cartelle dei temi vengono posizionate nella /catalog/view/theme/
cartella seguite dal nome del tema. Il nome della cartella non è importante ad eccezione della default
cartella
Il lato amministratore utilizza /admin/view/template/
(saltando /theme/theme-name/
dal percorso in quanto non consente temi diversi)
I file modello risiedono in una template
cartella all'interno della cartella del tema. Se un modello non è disponibile per il tema attualmente selezionato, il modello della cartella predefinita viene utilizzato come riserva. Ciò significa che i temi possono essere creati con pochissimi file e continuano a funzionare completamente. Riduce anche la duplicazione del codice e i problemi quando vengono effettuati gli aggiornamenti
Comprensione delle visualizzazioni (modelli)
Come con la lingua e i modelli, i file di visualizzazione sono generalmente correlati al percorso, anche se non devono esserlo affatto. I modelli sul lato del catalogo si trovano solitamente a /catalog/view/theme/your-theme/template/
meno che non esistano, nel qual caso verranno utilizzati i modelli del tema predefinito. Per il nostro esempio di pagina di ricerca sopra, il file è product/search.tpl
. Per i percorsi con tre parti, generalmente è in aaa/bbb_ccc.tpl
sebbene non ci siano regole fisse. Nell'amministratore, la maggior parte delle pagine segue questo, con l'eccezione che le pagine che elencano gli elementi, come la pagina dell'elenco dei prodotti, sono presenti catalog/product_list.tpl
e il modulo di modifica del prodotto è attivo catalog/product_form.tpl
. Ancora una volta, questi non sono impostati, ma uno standard per il carrello predefinito.
Il file modello è in realtà solo un altro file php, ma con estensione .tpl ed è effettivamente eseguito nel file del controller, quindi tutte le cose che puoi codificare in un controller possono essere eseguite in un file modello (sebbene non sia consigliato a meno che non sia assolutamente necessario)
Comprensione dell'oggetto database
Le query vengono eseguite utilizzando
$result = $this->db->query("SELECT * FROM `" . DB_PREFIX . "table`");
DB_PREFIX
come suggerisce il nome, è una costante contenente il prefisso del database, se esistente
$result
restituirà un oggetto per le SELECT
query, contenente alcune proprietà
$result->row
contiene i dati della prima riga se uno o più vengono restituiti come array associativo
$result->rows
contiene un array di risultati di riga, ideale per il looping utilizzando foreach
$result->num_rows
contiene il numero di risultati restituiti
Ci sono anche alcuni metodi extra di cui $this->db
dispone l' oggetto
$this->db->escape()
usa mysql_real_escape_string () sul valore passato
$this->db->countAffected
restituisce il numero di righe interessate da una UPDATE
query e così via
$this->db->getLastId()
restituisce l'ultimo ID di incremento automatico utilizzando mysql_insert_id ()
Comprensione delle variabili riservate
OpenCart ha predefinito le variabili da utilizzare al posto dello standard $_GET
, $_POST
, $_SESSION
, $_COOKIE
, $_FILES
, $_REQUEST
E$_SERVER
$_SESSION
viene modificato utilizzando $this->session->data
dove i dati sono un array associativo che imita il file$_SESSION
Tutti gli altri sono accessibili usando $this->request
e sono stati "puliti" per conformarsi alle virgolette magiche abilitate / disabilitate, quindi
$_GET
diventa $this->request->get
$_POST
diventa $this->request->post
$_COOKIE
diventa $this->request->cookie
$_FILES
diventa $this->request->files
$_REQUEST
diventa $this->request->request
$_SERVER
diventa $this->request->server
Sommario
Sebbene quanto sopra non sia una guida a prova di proiettile per gli sviluppatori, si spera che serva come un buon punto di partenza per coloro che iniziano