Suggerimento rapido accetta più voucher in OpenCart 2.0

OpenCart è una soluzione di e-commerce online open source basata su PHP che ti consente di accettare ordini online. Consente ai clienti di acquistare utilizzando i voucher, ma solo uno alla volta per impostazione predefinita. Se desideri consentire ai tuoi clienti di utilizzare più voucher contemporaneamente, dovrai modificare il codice. Ti mostrerò esattamente come farlo in questo tutorial.

Come possiamo creare un buono regalo?

Solo gli amministratori e gli utenti di back-end autorizzati sono in grado di generare buoni regalo. OpenCart viene fornito con un modulo predefinito per farlo. La seguente schermata mostra il luogo in cui un utente di back-end può generare voucher.

Qual è il problema?

Se per default abbiamo un sistema di voucher implementato in OpenCart, qual è il problema? Comprendiamolo con l'aiuto di un esempio:

Recentemente un mio amico voleva comprare un paio di articoli tramite OpenCart che costava $ 800, ma aveva solo $ 500 e due buoni regalo del valore di $ 250 ciascuno. Quindi mi ha chiamato e ha chiesto una soluzione. Poiché OpenCart ti consente di utilizzare un solo buono per acquistare in qualsiasi momento, non è in grado di acquistare gli articoli.

Una soluzione

Per risolvere questo problema, è necessario aggiungere un'opzione per utilizzare più voucher in modo che i clienti possano acquistare facilmente, senza affrontare alcuna difficoltà. Ecco la soluzione, in cui modificheremo alcune righe di codice e aiuterà a risolvere questo problema. 

Questo tutorial è diviso in tre fasi principali, che sono:

  1. Cambia nel controller
  2. Cambia nel modello
  3. Cambia in vista

1. File del controller

  1. Navigare verso Catalogo / regolatore / cassa / cart.php.
  2. Trova il seguente codice: 
Se (isset ($ this-> request-> post ['voucher']) && $ this-> voucher valido ()) $ this-> session-> data ['voucher'] = $ this-> request-> post [ 'buono']; 

Cambia il codice sopra in:

Se (isset ($ this-> request-> post ['voucher']) && $ this-> voucher valido ()) $ this-> session-> data ['voucher'] [$ this-> request-> post [ 'buono']] = $ this-> request-> 'buono'] post [; // crea un array per più voucher 

2. File di modello

  1. Navigare verso Catalogo / modello / totale / voucher.php.
  2. Trova le seguenti righe di codice:
$ This-> load-> modello ( 'checkout / buono'); $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ this-> session-> data ['voucher']); se ($ voucher_info) if ($ voucher_info ['amount']> $ total) $ amount = $ total;  else $ amount = $ voucher_info ['amount'];  $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ this-> session-> data ['voucher' ]), 'text' => $ this-> currency-> format (- $ amount), 'value' => - $ amount, 'sort_order' => $ this-> config-> get ('voucher_sort_order'))) ; $ totale - = $ importo;  

Abbiamo bisogno di eseguire un ciclo esterno per recuperare tutti i nostri voucher che abbiamo mantenuto come array nel passaggio 1. Quindi posizioneremo un ciclo esterno dopo $ This-> load-> modello ( 'checkout / buono');.

Quindi eseguiremo il looping della nostra Session Vouchers Array per recuperare tutti i voucher che abbiamo applicato e il codice sarà come mostrato di seguito. Si noti che il seguente codice è commentato per renderlo più facile da capire.

foreach (array_unique ($ this-> session-> data ['voucher']) come $ voucher) // ciclo foreach seleziona ogni array ed estrae il voucher univoco $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ voucher ); // Recupera i dettagli dell'ordine // Verifica 1: Se il voucher esiste se ($ voucher_info) // Verifica 2: Se l'importo del voucher è superiore all'importo dell'ordine, il saldo del buono sarà mantenuto se ($ voucher_info ['importo'] > $ totale) $ importo = $ totale;  else $ amount = $ voucher_info ['amount'];  // End Check 2 // Array per restituire Totali aggiornati $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ voucher), 'testo' => $ questo-> valuta-> formato (- $ importo), 'valore' => - $ importo, 'sort_order' => $ this-> config-> get ('voucher_sort_order') ); // End Array $ total - = $ amount; // Sottrae l'importo con i totali degli ordini // Fine controllo 1 // Fine ciclo Foreach

3. Visualizza file

  1. Navigare verso Catalogo / view / theme / default / template / cassa / voucher.tpl.
  2. Trova la seguente riga di codice:

Sostituiscilo con questo:

Abbiamo finito con il nostro problema! In effetti, abbiamo appena creato alcuni semplici hack di codice per risolvere questo grosso problema, quindi non abbiamo dovuto sviluppare un nuovo modulo o un'estensione. Abbiamo appena modificato alcune righe di codice per farlo.

Conclusione

In questo articolo abbiamo fornito una soluzione di successo per l'aggiunta di più voucher nel nostro e-shop. Poiché OpenCart non consente agli acquirenti di utilizzare più voucher per impostazione predefinita, abbiamo modificato il codice in modo che ora possano utilizzare tutti i voucher desiderati. Ciò aiuterà i clienti a fare acquisti senza problemi. 

Nei nostri prossimi articoli implementeremo alcuni strumenti di business reali nel nostro sistema OpenCart, quindi restate iscritti e contribuite con i vostri preziosi commenti. Grazie!