Come sviluppatore, dovrai spesso affrontare uno scenario che ti costringe a modificare il comportamento di base di un framework. Se questo è qualcosa che è già fornito dall'interfaccia utente di amministrazione o qualcosa di simile, sei a posto! Ma avrai bisogno di più di questo in caso di personalizzazioni complesse: dovrai modificare il codice quadro.
Mentre lo fai, non vuoi modificare direttamente i file framework, poiché è considerato una cattiva abitudine, e rende anche l'aggiornamento del framework un incubo se hai apportato numerose modifiche a diversi file. Quindi devi cercare diversi approcci possibili per raggiungerlo senza modificare il core stesso. La maggior parte dei framework al giorno d'oggi fornisce una sorta di sistema che ti permette di farlo come parte dell'estensibilità.
Oggi discuteremo uno scenario simile nel contesto di OpenCart. Se sei attivamente coinvolto nello sviluppo di OpenCart, probabilmente sai che puoi filtrare i metodi di pagamento in base all'importo minimo di checkout del carrello. Ad esempio, è possibile scegliere di non elencare il metodo COD se il totale del checkout è inferiore a un determinato importo. È integrato ed è possibile impostarlo durante la configurazione del metodo di pagamento dal back-end.
In questo tutorial, lo estenderemo e tenteremo di limitare i metodi di pagamento in base al peso totale del carrello. Discuteremo su come filtrare il metodo COD durante il checkout se il peso del carrello è inferiore a un determinato valore predefinito. Per ottenere questa funzionalità, richiede modifiche nel codice in quanto non è qualcosa di configurabile dal back-end stesso.
Come accennato in precedenza, non è necessario modificare alcun file core del framework e questo ci lascia con l'opzione OCMOD. Non preoccuparti se non hai familiarità con esso, come lo presenterò nella prossima sezione.
Presumo che tu stia utilizzando l'ultima versione di OpenCart e, mentre scrivo, è OpenCart 2.2.0.0. Inoltre, il sistema OCMOD funziona solo con OpenCart 2.x.x.x in poi, quindi ti offre un altro motivo per installare l'ultima versione.
In questo modo le cose vanno bene per noi per andare avanti. Andiamo!
OCMOD è un sistema di ricerca e sostituzione basato su XML che consente di modificare i file core del framework OpenCart. Definisci il file XML secondo le convenzioni di OCMOD e farà il resto. Se hai sentito parlare del sistema vQmod in OpenCart 1.5.x, è un successore di quel sistema.
Elenchiamo alcuni esempi per capire di cosa è capace:
Anche se il prossimo paio di sezioni dovrebbe aiutarti a capire come funziona, puoi anche dare un'occhiata a questa spiegazione approfondita di OCMOD.
Se non hai familiarità con vQmod o OCMOD, ti consiglio di consultare l'articolo summenzionato poiché questo tutorial scivola attraverso l'uso di OCMOD.
Avendo familiarizzato con OCMOD, passeremo alla prossima sezione che costruisce un modulo OCMOD per ottenere la suddetta personalizzazione.
Diamo una rapida occhiata al file che deve essere cambiato nel nostro caso. Vai avanti e apri il Catalogo / regolatore / cassa / payment_method.php
file nel tuo editor di testo preferito e cerca il seguente snippet nel file indice
metodo.
$ risultati = $ this-> model_extension_extension-> getExtensions ('pagamento');
Sta recuperando tutti i metodi di pagamento attivi dal database. Seguendo questa linea, potremmo inserire il nostro codice in modo tale da filtrare il metodo COD se il peso totale del carrello è inferiore ad un certo valore. Dovrebbe apparire come se dovessimo modificare direttamente questo file.
$ risultati = $ this-> model_extension_extension-> getExtensions ('pagamento'); / *** il nostro codice personalizzato *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; se ($ totalCartWeight < $minCodWeight) $updated_results = array(); foreach ($results as $result) if ($result['code'] != 'cod') $updated_results[] = $result; $results = $updated_results; /*** our custom code ***/
Come puoi vedere, il nostro codice personalizzato è avvolto dai commenti.
Per prima cosa, prendiamo il peso totale del carrello usando il getWeight
metodo del Carrello
oggetto. Per semplificare le cose, abbiamo codificato con hard-coding il peso minimo richiesto per il metodo COD a 100. Naturalmente, è possibile creare un modulo di configurazione back-end in modo da poterlo configurare dal lato admin stesso.
Avanti, c'è un Se
condizione che controlla il peso totale del carrello con il peso minimo COD, e in base a ciò filtra il metodo COD dal $ risultati
schieramento.
Quindi, è tutto ciò che riguarda la modifica del codice. Nella prossima sezione, lo realizzeremo usando OCMOD, ed è quello che ti ho promesso all'inizio dell'articolo!
Creare un filter_payment_method.ocmod.xml
file con il seguente contenuto.
Filtraggio dei metodi di pagamento in base al peso del carrello Code_Tutsplus_Filter_Payment_Methods
1.0 Codice Tutsplus http://code.tutsplus.commodel_extension_extension-> getExtensions ( 'pagamento'); ]]> model_extension_extension-> getExtensions ( 'pagamento'); / *** il nostro codice personalizzato *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; se ($ totalCartWeight < $minCodWeight) $updated_results = array(); foreach ($results as $result) if ($result['code'] != 'cod') $updated_results[] = $result; $results = $updated_results; /*** our custom code ***/ ]]>
Come puoi vedere, la maggior parte dei tag è autoesplicativa. Il tag più importante è
, che definisce il nome del file su cui verrà eseguita l'operazione. Il
il tag è usato per cercare il codice che stiamo cercando, e finalmente abbiamo usato il
tag per iniettare il nostro codice.
Dirigiti verso il back-end e vai a Estensioni> Estensione Installer. Clicca sul caricare pulsante e selezionare il file che abbiamo creato nella sezione precedente. Se tutto va bene, dovresti vedere un messaggio di successo.
Navigare verso Estensioni> Modifiche, e dovresti vedere la tua estensione OCMOD elencata in quella pagina.
Hai installato l'estensione con successo!
Dirigiti verso il front-end e aggiungi un paio di prodotti al carrello in modo che il peso totale del carrello rimanga sotto i 100. Ora, avvia il flusso di cassa e nel Modalità di pagamento scheda si dovrebbe notare che non c'è MERLUZZO a disposizione. Ovviamente, dovresti avere almeno un altro metodo di pagamento abilitato, altrimenti OpenCart si lamenterà di ciò Non sono disponibili opzioni di pagamento.
Quindi, è tutto per oggi! In questo modo, puoi andare avanti e utilizzare il sistema OCMOD per qualsiasi personalizzazione che richieda la modifica dei file core.
In questo articolo, abbiamo imparato come utilizzare il sistema OCMOD per filtrare i metodi di pagamento in fase di pagamento in base al peso totale del carrello. Spero ti sia divertito e imparato qualcosa di nuovo in OpenCart.
Non dimenticare di condividere i tuoi pensieri e le tue domande usando il feed dei commenti qui sotto.