Filtrarea metodelor de plată prin greutatea cartului în OpenCart

În calitate de dezvoltator, de multe ori trebuie să vă confruntați cu un scenariu care vă forțează să modificați comportamentul de bază al unui cadru. Dacă acest lucru este deja furnizat de interfața de administrare a adminului sau ceva similar, sunteți bine să mergeți! Dar veți avea nevoie de mai mult decât atât, în cazul unor personalizări complexe - va trebui să modificați codul cadru.

În timp ce faceți acest lucru, nu doriți să modificați direct fișierele cadru, deoarece este considerat un obicei prost și, de asemenea, face upgrade-ul unui cadru de coșmar dacă ați făcut o mulțime de modificări în diferite fișiere. Deci, trebuie să căutați diferite abordări posibile pentru ao realiza fără a modifica nucleul în sine. Majoritatea cadrelor din zilele noastre oferă un fel de sistem care vă permite să faceți acest lucru ca parte a extensibilității.

Astăzi, vom discuta un scenariu similar în contextul OpenCart. Dacă sunteți implicat activ în dezvoltarea OpenCart, probabil știți că puteți filtra metodele de plată bazate pe suma minimă de plată a carului. De exemplu, puteți opta să nu listați metoda COD dacă suma totală a plății este mai mică decât o anumită sumă. Este încorporat și îl puteți seta în timp ce configurați metoda de plată din back-end.

În acest tutorial, îl vom extinde și vom încerca să limităm metodele de plată bazate pe greutatea totală a căruciorului. Vom discuta despre modul de filtrare a metodei COD în timpul verificării dacă greutatea căruciorului este mai mică decât o anumită valoare predefinită. Pentru a atinge această funcționalitate, aceasta necesită modificări în cod, deoarece nu este ceva configurabil din back-end-ul însuși.

Așa cum am menționat mai devreme, nu trebuie să modificați niciun fișier de bază al cadrului, ceea ce ne lasă opțiunea de OCMOD. Nu vă faceți griji dacă nu sunteți familiarizați cu ea, așa cum o voi prezenta în secțiunea următoare.

Presupun că utilizați cea mai recentă versiune de OpenCart, și de la scris acest lucru este OpenCart 2.2.0.0. De asemenea, sistemul OCMOD funcționează numai cu OpenCart 2.x.x.x înainte, astfel încât vă oferă un alt motiv pentru a instala cea mai recentă versiune.

Așa că ne pregătește lucrurile frumos pentru a merge mai departe. Sa mergem!

Ce este OCMOD?

OCMOD este un sistem de căutare și înlocuire bazat pe XML care vă permite să modificați fișierele de bază ale cadrului OpenCart. Definiți fișierul XML conform convențiilor OCMOD și veți face restul. Dacă ați auzit de sistemul vQmod în OpenCart 1.5.x, acesta este un succesor al acelui sistem.

Să enumerăm câteva exemple pentru a înțelege ce este capabil:

  • Introduceți o anumită bucată de cod înaintea oricărei linii speciale din fișier.
  • Înlocuiți un bloc de cod cu blocul de cod personalizat.
  • Găsiți un șir în fișier utilizând regex și înlocuiți-l cu un alt șir.
  • Modificați schema bazei de date OpenCart.
  • Multe altele…

Deși următoarele două secțiuni vă vor ajuta să înțelegeți cum funcționează, puteți, de asemenea, să vă uitați la această explicație detaliată a OCMOD.

Dacă nu sunteți familiarizat nici cu vQmod sau OCMOD, aș recomanda să treceți prin articolul menționat mai sus, deoarece acest ghid de curățare prin utilizarea OCMOD.

După ce v-ați familiarizat cu OCMOD, vom trece la următoarea secțiune care construiește un modul OCMOD pentru atingerea personalizării menționate mai sus.

Cum arata fara OCMOD?

Să aruncăm o privire rapidă asupra dosarului care trebuie schimbat în cazul nostru. Mergeți și deschideți Catalog / controler / checkout / payment_method.php fișier în editorul de text preferat și căutați fragmentul următor în index metodă.

$ results = $ this-> model_extension_extension-> getExtensions ("plata");

Culege toate metodele de plată active din baza de date. În urma acestei linii, am putea introduce codul nostru astfel încât să filtreze metoda COD dacă greutatea totală a căruței este mai mică decât o anumită valoare. Ar trebui să arate așa dacă trebuie să modificăm direct acest fișier.

$ results = $ this-> model_extension_extension-> getExtensions ("plata"); / *** codul nostru personalizat *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; dacă ($ totalCartWeight < $minCodWeight)  $updated_results = array(); foreach ($results as $result)  if ($result['code'] != 'cod')  $updated_results[] = $result;   $results = $updated_results;  /*** our custom code ***/

După cum puteți vedea, codul personalizat este înfășurat de comentarii.

În primul rând, preluăm greutatea totală a căruciorului folosind getweight metodă a Cart obiect. Pentru a păstra lucrurile simple, am codificat cu greutate greutatea minimă necesară pentru metoda COD la 100. Bineînțeles că ați putea face un modul de configurare pentru back-end, astfel încât să îl puteți configura din partea administratorului.

Apoi, există un dacă condiție care verifică greutatea totală a căruciorului cu greutatea minimă de COD și pe baza căreia filtrează metoda COD de la rezultate $ mulțime.

Deci, asta e în ceea ce privește modificarea codului. În următoarea secțiune, o vom realiza utilizând OCMOD, și asta v-am promis la începutul articolului!

Construiți și instalați modulul OCMOD

Construiți modulul

Creeaza o filter_payment_method.ocmod.xml fișier cu următorul conținut.

  Filtrarea metodelor de plată bazate pe greutatea căruciorului Code_Tutsplus_Filter_Payment_Methods 1.0 Cod Tutsplus http://code.tutsplus.com   model_extension_extension-> getExtensions ( 'plată'); ]]> model_extension_extension-> getExtensions ( 'plată'); / *** codul nostru personalizat *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; dacă ($ totalCartWeight < $minCodWeight)  $updated_results = array(); foreach ($results as $result)  if ($result['code'] != 'cod')  $updated_results[] = $result;   $results = $updated_results;  /*** our custom code ***/ ]]>   

După cum puteți vedea, majoritatea etichetelor sunt explicite. Cea mai importantă etichetă este , care definește numele fișierului pe care va fi efectuată operația. eticheta este utilizată pentru a căuta codul pe care îl căutăm și în cele din urmă am folosit-o eticheta pentru a injecta codul nostru.

Instalați modulul

Treceți la spate și navigați la Extensii> Extensie instalare. Faceți clic pe încărcați și selectați fișierul pe care l-am creat în secțiunea anterioară. Dacă totul merge bine, ar trebui să vedeți un mesaj de succes.

Navigheaza catre Extensii> Modificări, și ar trebui să vedeți extensia dvs. OCMOD afișată pe acea pagină.

Ați instalat extensia cu succes!

Deplasați-vă spre partea frontală și adăugați câteva produse în coș astfel încât greutatea totală a căruciorului să rămână sub 100. Acum, începeți debitul de control și în Metode de plata fișă ar trebui să observați că nu există COD disponibil. Desigur, ar trebui să aveți activat cel puțin încă o metodă de plată, altfel OpenCart se va plânge Nu sunt disponibile opțiuni de plată.

Deci, asta e pentru ziua de azi! În acest fel, puteți continua și utilizați sistemul OCMOD pentru orice personalizare care necesită modificarea fișierelor de bază.

Concluzie

În acest articol, am învățat cum să folosim sistemul OCMOD pentru a filtra metodele de plată în plată pe baza greutății totale a căruciorului. Sper că ți-a plăcut și ai învățat ceva nou în OpenCart.

Nu uitați să vă împărtășiți gândurile și interogările utilizând feedul de comentarii de mai jos.

Cod