Sfat rapid acceptați vouchere multiple în OpenCart 2.0

OpenCart este o soluție deschisă, bazată pe PHP, care vă permite să acceptați comenzi online. Permite clienților să facă cumpărături folosind vouchere, dar numai unul câte unul în mod implicit. Dacă doriți să permiteți clienților dvs. să utilizeze simultan mai multe vouchere, va trebui să modificați codul. Vă voi arăta exact cum să faceți acest lucru în acest tutorial.

Cum creăm un voucher de cadouri?

Doar administratorii și utilizatorii back-end permiși pot genera vouchere cadou. OpenCart vine cu un modul implicit pentru a face acest lucru. Următoarea imagine de ecran prezintă locul în care un utilizator back-end poate genera vouchere.

Care este problema?

Dacă avem implicit un sistem de vouchere în OpenCart, care este problema? Să înțelegem cu ajutorul unui exemplu:

Recent, un prieten al meu a vrut să cumpere două articole prin OpenCart, care costa 800 de dolari, dar avea doar 500 de dolari și două bonuri de cadou în valoare de 250 de dolari fiecare. Așa că ma sunat și a cerut o soluție. Deoarece OpenCart vă permite doar să utilizați un singur voucher pentru cumpărături în orice moment, nu a putut cumpăra elementele.

O solutie

Pentru a rezolva această problemă, trebuie să adăugăm o opțiune pentru utilizarea mai multor vouchere, astfel încât clienții să poată cumpăra cu ușurință, fără a întâmpina dificultăți. Iată soluția în care vom modifica câteva linii de cod și vom ajuta să rezolvăm această problemă. 

Acest tutorial este împărțit în trei etape principale, care sunt:

  1. Schimbarea în controler
  2. Modificarea modelului
  3. Schimbați vizualizarea

1. Fișierul controlerului

  1. Navigheaza catre Catalog / controler / checkout / cart.php.
  2. Găsiți următorul cod: 
Dacă isset ($ this-> request-> post ['voucher']) && $ this-> voucher valid ()) $ this-> session-> data ['voucher' poștă [ 'bon']; 

Modificați codul de mai sus la:

În cazul în care (isset ($ this-> request-> post ['voucher']) && $ this-> valabil voucher ()) $ this-> session-> data ['voucher'] [$ this-> request-> poștă [ 'bon']] = $ this-> request-> 'bon'] după [; // creează o matrice pentru vouchere multiple 

2. Fișier model

  1. Navigheaza catre Catalog / modelul / total / voucher.php.
  2. Găsiți următoarele linii de cod:
$ This-> a sarcinii> modelul ( 'checkout / bon'); $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ this-> session-> data ['voucher']); dacă ($ voucher_info) if ($ voucher_info ['suma']> $ total) suma $ = total;  altceva $ amount = $ voucher_info ['amount'];  $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get (' ]), 'text' => $ this-> valutar-> format (- suma $), 'value' => - $ value, 'sort_order' => $ this-> config-> get ('voucher_sort_order')) ; $ total - = suma $;  

Trebuie să executăm o buclă externă pentru a prelua toate voucherele pe care le-am păstrat ca matrice în pasul 1. Deci, vom plasa o bucla exterioară după $ This-> a sarcinii> modelul ( 'checkout / bon');.

Așadar, vom fi înclinate pentru a obține toate voucherele pe care le-am aplicat, iar codul va fi așa cum este arătat mai jos. Rețineți că următorul cod este comentat pentru a fi mai ușor de înțeles.

foreach ($ this-> session-> data ['voucher']) ca $ voucher) // foreach loop va selecta fiecare matrice si va extrage voucherul unic $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ voucher ); // preluați detaliile comenzii // Verificați 1: Dacă există voucher dacă ($ voucher_info) // Verificați 2: În cazul în care suma voucherului este mai mare decât suma ordinului, soldul voucherului va fi menținut dacă ($ voucher_info ['amount' > $ total) suma $ = total;  altceva $ amount = $ voucher_info ['amount'];  // Sfarsit Verificare 2 // Array pentru a returna Totalul actualizat $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get $ voucher), 'text' => $ this-> valutar-> format (- suma $), 'value' => $ sum, 'sort_order' => $ this-> config-> get ('voucher_sort_order') ); // End Array $ total - = suma $; // Scăde suma cu sumele comenzilor noastre // // Sfârșitul verificării 1 // Sfârșitul buzei foreach

3. Vizualizați fișierul

  1. Navigheaza catre Catalog / Vedere / tema / default / template / checkout / voucher.tpl.
  2. Găsiți următoarea linie de cod:

Înlocuiți-l cu acesta:

Am terminat cu problema noastră! De fapt, am făcut doar niște hack-uri simple de cod pentru a rezolva acea problemă mare, deci nu am avut de a dezvolta un nou modul sau extensie. Tocmai am modificat câteva linii de coduri pentru a reuși.

Concluzie

În acest articol am oferit o soluție de succes pentru adăugarea mai multor vouchere în magazinul nostru electronic. Deoarece OpenCart nu permite cumpărătorilor să utilizeze vouchere multiple în mod prestabilit, am modificat codul astfel încât acum să poată utiliza cât mai multe vouchere pe care le doresc. Acest lucru va ajuta clienții să facă cumpărături cu ușurință fără nici o problemă. 

În următoarele articole vom implementa câteva instrumente de afaceri din lumea reală în sistemul nostru OpenCart, așa că rămâneți abonați și contribuiți la comentariile dvs. valoroase. Mulțumiri!

Cod