Filtrere betalingsmetodene etter kurv Vekt i OpenCart

Som utvikler må du ofte møte et scenario som tvinger deg til å endre kjernegangen til et rammeverk. Hvis det er noe som allerede er gitt av admin-brukergrensesnittet eller noe lignende, er du god til å gå! Men du trenger mer enn det i tilfelle komplekse tilpasninger, du må endre rammekoden.

Mens du gjør det, vil du ikke endre rammefilene direkte, da det regnes som en dårlig vane, og det gjør også rammeprogrammet oppgradere et mareritt hvis du har gjort mange endringer i forskjellige filer. Så du må lete etter forskjellige mulige tilnærminger for å oppnå det uten å endre kjernen selv. De fleste av rammene gir i dag en slags system som lar deg gjøre det som en del av utvidbarhet.

I dag diskuterer vi et lignende scenario i sammenheng med OpenCart. Hvis du er aktivt involvert i OpenCart-utviklingen, vet du sikkert at du kan filtrere betalingsmetodene basert på minimumskassen for kasseutbetaling. Du kan for eksempel velge å ikke oppgi COD-metoden hvis kassen er mindre enn et bestemt beløp. Den er innebygd, og du kan angi den mens du konfigurerer betalingsmåten fra baksiden.

I denne opplæringen vil vi utvide den og prøve å begrense betalingsmåter basert på total kurvvekt. Vi diskuterer hvordan du filtrerer COD-metoden under kassen, hvis kurvvekten er mindre enn en bestemt forhåndsdefinert verdi. For å oppnå denne funksjonaliteten krever det endringer i koden, da det ikke er noe konfigurerbart fra selve bakken.

Som nevnt tidligere må du ikke endre noen kjernefiler av rammen, og det gir oss muligheten til OCMOD. Ikke bekymre deg hvis du ikke er kjent med det, da jeg vil introdusere det i den neste delen.

Jeg antar at du bruker den nyeste versjonen av OpenCart, og som å skrive dette er det OpenCart 2.2.0.0. OCMOD-systemet fungerer også bare med OpenCart 2.x.x.x og videre, så det gir deg en annen grunn til å installere den nyeste versjonen.

Så det setter opp ting pent for oss å gå videre. La oss gå!

Hva er OCMOD?

OCMOD er ​​et XML-basert søke- og erstattesystem som lar deg endre kjernefilene i OpenCart-rammeverket. Du definerer XML-filen i henhold til OCMODs konvensjoner, og det vil gjøre resten. Hvis du har hørt om vQmod-systemet i OpenCart 1.5.x, er det en etterfølger av det systemet.

La oss liste noen eksempler for å forstå hva det er i stand til:

  • Sett inn et bestemt stykke kode før en bestemt linje i filen.
  • Erstatt en blokk med kode med den egendefinerte kodeblokken din.
  • Finn en streng i filen ved hjelp av regex og erstatt den med en annen streng.
  • Endre skjemaet til OpenCart-databasen.
  • Mange flere…

Selv om de neste seksjonene skal hjelpe deg å forstå hvordan det fungerer, kan du også se på denne dybdegående forklaringen til OCMOD.

Hvis du ikke er kjent med enten VQmod eller OCMOD, vil jeg anbefale at du går gjennom den nevnte artikkelen da denne opplæringen går gjennom OCMOD-bruk.

Etter å ha gjort deg kjent med OCMOD, flytter vi til neste seksjon som bygger en OCMOD-modul for å oppnå den nevnte tilpasningen.

Hvordan ser det ut uten OCMOD?

La oss få en rask titt på filen som må endres i vårt tilfelle. Gå videre og åpne katalog / styreenhet / betalings- / payment_method.php filen i favoritt tekstredigeringsprogrammet, og se etter følgende kodebrikke i index metode.

$ results = $ this-> model_extension_extension-> getExtensions ('payment');

Det henter alle aktive betalingsmåter fra databasen. Etter denne linjen kan vi sette inn koden vår slik at den filtrerer COD-metoden dersom den totale kurvvekten er mindre enn en bestemt verdi. Det skal se slik ut hvis vi skal endre denne filen direkte.

$ results = $ this-> model_extension_extension-> getExtensions ('payment'); / *** vår egendefinerte kode *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; hvis ($ totalCartWeight < $minCodWeight)  $updated_results = array(); foreach ($results as $result)  if ($result['code'] != 'cod')  $updated_results[] = $result;   $results = $updated_results;  /*** our custom code ***/

Som du kan se, er vår egendefinerte kode innpakket av kommentarene.

Først henter vi totalvekten til vognen ved hjelp av getWeight metode av kurven gjenstand. For å holde det enkelt, har vi hardkodet minimumsvekt for COD-metoden til 100. Selvfølgelig kan du lage en back-end konfigurasjonsmodul slik at du kan konfigurere den fra administrasjonssiden selv.

Deretter er det en hvis betingelse som kontrollerer total vognvekt med minimum COD-vekt, og basert på at det filtrerer COD-metoden fra $ resultater matrise.

Så det er det så langt som kodeendringen er bekymret. I neste avsnitt oppnår vi det ved å bruke OCMOD, og ​​det er det jeg lovte deg i begynnelsen av artikkelen!

Bygg og installer OCMOD-modulen

Bygg modulen

Lage en filter_payment_method.ocmod.xml fil med følgende innhold.

  Filtrering av betalingsmåter basert på vekt Code_Tutsplus_Filter_Payment_Methods 1.0 Kode Tutsplus http://code.tutsplus.com   model_extension_extension-> getExtensions ( 'betalings'); ]]> model_extension_extension-> getExtensions ( 'betalings'); / *** vår egendefinerte kode *** / $ totalCartWeight = $ this-> cart-> getWeight (); $ minCodWeight = 100; hvis ($ totalCartWeight < $minCodWeight)  $updated_results = array(); foreach ($results as $result)  if ($result['code'] != 'cod')  $updated_results[] = $result;   $results = $updated_results;  /*** our custom code ***/ ]]>   

Som du kan se, er de fleste av kodene selvforklarende. Den viktigste taggen er , som definerer filnavnet som operasjonen skal utføres på. De tag brukes til å søke på koden som vi leter etter, og til slutt har vi brukt tag for å injisere koden vår.

Installer modulen

Gå over til bakenden og naviger til Extensions> Extension Installer. Klikk på laste opp knappen og velg filen som vi opprettet i forrige seksjon. Hvis alt går bra, bør du se en suksessmelding.

Navigere til Utvidelser> Modifikasjoner, og du bør se OCMOD-utvidelsen som er oppført på den siden.

Du har installert utvidelsen vellykket!

Hodet over til forenden og legg til et par produkter i handlekurven, slik at den totale kurvvekten forblir under 100. Start nå kassen og i Betalingsmetoder fan du bør merke at det er nei TORSK tilgjengelig. Selvfølgelig bør du ha minst en betalingsmåte aktivert, ellers vil OpenCart klage på det Ingen betalingsmåter er tilgjengelige.

Så det er det for i dag! På denne måten kan du gå videre og bruke OCMOD-systemet til enhver tilpasning som krever at du endrer kjernefilene.

Konklusjon

I denne artikkelen har vi lært hvordan du bruker OCMOD-systemet til å filtrere betalingsmetodene i kassa basert på den totale kurvvekten. Jeg håper du har hatt det og lært noe nytt i OpenCart.

Ikke glem å dele dine tanker og spørsmål ved hjelp av kommentaren feed nedenfor.