Crea un'estensione Totale ordini personalizzata in OpenCart

In questo articolo, creeremo un'estensione di totali di ordini personalizzati in OpenCart. Le estensioni totali degli ordini ti consentono di manipolare l'importo dell'ordine durante il checkout. È un modo davvero utile per modificare il prezzo aggiungendo ulteriori tasse o offrendo sconti attraverso i diversi metodi. Creeremo un'estensione dei totali di ordine personalizzato completa che applicherà una tassa personalizzata definita dal modulo di configurazione back-end.

Per creare un'estensione di totali di ordini personalizzati, è necessario impostare i file nel back-end e nel front-end. I file di back-end vengono utilizzati per impostare un modulo di configurazione e i file front-end vengono utilizzati per definire la logica dell'estensione. Ovviamente, OpenCart non rileverà il tuo interno durante il checkout senza file front-end.

Useremo l'ultima versione di OpenCart. Inoltre, presumo che tu abbia familiarità con il processo di sviluppo del modulo di base in OpenCart. Se non hai familiarità con questo, ecco un bell'articolo che spiega lo sviluppo di moduli personalizzati.

Andiamo avanti e iniziamo subito!

Impostazione file back-end

In questa sezione creeremo file relativi alla sezione back-end. Alla fine di questa sezione, sarai in grado di vedere l'estensione dei totali degli ordini personalizzati nell'elenco insieme alle altre estensioni totali degli ordini. Inoltre, sarai in grado di installarlo e configurarlo utilizzando il modulo di configurazione personalizzato.

Vai avanti e crea un file controller admin / regolatore / totale / customot.php con i seguenti contenuti.

load-> lingua ( 'totale / customot'); $ This-> documento-> setTitle ($ this-> language-> get ( 'HEADING_TITLE')); $ This-> load-> modello ( 'impostazione / impostazione'); if (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && $ this-> validate ()) $ this-> model_setting_setting-> editSetting ('customot', $ this-> request -> post); $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); $ this-> response-> redirect ($ this-> url-> link ('extension / total', 'token ='. $ this-> session-> data ['token'], 'SSL'));  $ data ['heading_title'] = $ this-> language-> get ('heading_title'); $ data ['text_edit'] = $ this-> language-> get ('text_edit'); $ data ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ data ['text_disabled'] = $ this-> language-> get ('text_disabled'); $ data ['text_none'] = $ this-> language-> get ('text_none'); $ data ['entry_customtax'] = $ this-> language-> get ('entry_customtax'); $ data ['entry_status'] = $ this-> language-> get ('entry_status'); $ data ['entry_sort_order'] = $ this-> language-> get ('entry_sort_order'); $ data ['button_save'] = $ this-> language-> get ('button_save'); $ data ['button_cancel'] = $ this-> language-> get ('button_cancel'); if (isset ($ this-> error ['warning'])) $ data ['error_warning'] = $ this-> error ['warning'];  else $ data ['error_warning'] = "; $ data ['breadcrumbs'] = array (); $ data ['breadcrumbs'] [] = array ('testo' => $ this-> lingua-> get ('text_home'), 'href' => $ this-> url-> link ('common / dashboard', 'token ='. $ this-> session-> data ['token'], 'SSL') ) $ data ['breadcrumbs'] [] = array ('testo' => $ this-> lingua-> get ('text_total'), 'href' => $ this-> url-> link ('estensione / totale ',' token = '. $ this-> session-> data [' token '],' SSL ')); $ data [' breadcrumbs '] [] = array (' testo '=> $ this-> lingua -> get ('heading_title'), 'href' => $ this-> url-> link ('total / customot', 'token ='. $ this-> session-> data ['token'], 'SSL ')); $ data [' action '] = $ this-> url-> link (' total / customot ',' token = '. $ this-> session-> data [' token '],' SSL ') ; $ data ['cancel'] = $ this-> url-> link ('extension / total', 'token ='. $ this-> session-> data ['token'], 'SSL'); if ( isset ($ this-> request-> post ['customot_customtax'])) $ data ['customot_customtax'] = $ this-> request-> post ['customot_customtax']; else $ data ['customot_customtax'] = $ this-> config-> get ('cus tomot_customtax ');  if (isset ($ this-> request-> post ['customot_status'])) $ data ['customot_status'] = $ this-> request-> post ['customot_status'];  else $ data ['customot_status'] = $ this-> config-> get ('customot_status');  if (isset ($ this-> request-> post ['customot_sort_order'])) $ data ['customot_sort_order'] = $ this-> request-> post ['customot_sort_order'];  else $ data ['customot_sort_order'] = $ this-> config-> get ('customot_sort_order');  $ data ['header'] = $ this-> load-> controller ('common / header'); $ data ['column_left'] = $ this-> load-> controller ('common / column_left'); $ data ['footer'] = $ this-> load-> controller ('common / footer'); $ this-> response-> setOutput ($ this-> load-> view ('total / customot.tpl', $ data));  protected function validate () if (! $ this-> user-> hasPermission ('modify', 'total / customot')) $ this-> error ['warning'] = $ this-> language-> get ( 'error_permission');  return! $ this-> error; 

Come puoi vedere, è un controller back-end abbastanza standard installato in OpenCart. Lo scopo principale di questo file controller è di impostare le etichette e altri elementi che verranno utilizzati per visualizzare il modulo di configurazione. Ovviamente gestisce l'invio del modulo convalidando un modulo e salvando i valori nel database.

Ora, andiamo avanti e creare un file di lingua su admin / lingua / inglese / totale / customot.php con i seguenti contenuti.

Ancora una volta, dovrebbe essere abbastanza facile da capire in quanto stiamo solo definendo le etichette.

Infine, creeremo un file modello di visualizzazione su admin / view / template / totale / customot.tpl.

 
"data-toggle =" tooltip "title ="">

  • ">

Questo file contiene il codice XHTML per il nostro modulo di configurazione.

Quindi è tutto ciò che riguarda il nostro back-end. Vai a Estensioni> Totali ordini. Dovresti essere in grado di vedere la nostra estensione Totale ordine personalizzato elencato insieme ad altre estensioni. Installiamo e configuriamo come mostrato nello screenshot seguente.

Ho impostato il Imposta doganale valore a 5, quindi addebiterà il 5% del valore totale dell'ordine. Compila i valori e salva il modulo.

Impostazione file front-end

In questa sezione, definiremo i file per il front-end, in modo che la nostra estensione venga rilevata nel flusso di checkout del front-end.

Crea un file di modello Catalogo / modello / totale / customot.php con i seguenti contenuti.

load-> lingua ( 'totale / customot'); // get customtax $ customtax_percentage = $ this-> config-> get ('customot_customtax'); if ($ customtax_percentage> 0) $ customtax_value = round (($ totale * $ customtax_percentage) / 100); $ total_data [] = array ('code' => 'customot', 'title' => $ this-> language-> get ('text_customot'), 'value' => $ customtax_value, 'sort_order' => $ this -> config-> get ('customot_sort_order')); $ totale + = $ customtax_value; 

È un file importante e la logica centrale della nostra estensione va qui. Convenzionalmente, OpenCart chiama il getTotal metodo per ogni estensione di totali di ordine durante il checkout. Dovresti notare gli argomenti importanti $ total_data, $ in totale e $ tasse.

Il $ total_data variabile rappresenta una matrice di tutti i dati delle estensioni totali dell'ordine. Il $ in totale variabile è l'importo totale dell'ordine e $ tasse contiene le tasse applicate.

In quel metodo, stiamo recuperando a Imposta doganale valore che è stato impostato dal modulo di configurazione back-end. Inoltre, calcoliamo l'importo della tassa personalizzata e lo assegniamo al $ customtax_value variabile. Successivamente, inseriremo le informazioni sull'estensione dei totali dell'ordine su $ total_data array e aggiungere l'importo delle tasse personalizzate al $ in totale variabile.

Infine, dobbiamo definire un file di lingua su Catalogo / lingua / inglese / totale / customot.php con i seguenti contenuti.

Quindi è tutto per il front-end!

Demo nel front-end

Vai avanti e aggiungi prodotti al carrello e sarai in grado di vedere la nostra tassa personalizzata applicata come mostrato nello screenshot seguente.

In questo modo, è possibile influenzare l'importo dell'ordine utilizzando l'estensione dei totali dell'ordine.

Conclusione

In questo articolo, abbiamo imparato come creare un'estensione di totali di ordini personalizzati e manipolare l'importo dell'ordine. È un modo davvero utile per allegare eventuali tasse e sconti personalizzati. 

Se stai cercando altri strumenti, utility, estensioni e così via che puoi sfruttare nei tuoi progetti o per la tua istruzione, non dimenticare di vedere ciò che abbiamo a disposizione sul mercato.

Suggerimenti e domande sono sempre ben accetti!