Konverter OpenCart-moduler fra 1.5.x til 2.x.x

Det har vært et år nå siden utgivelsen av OpenCart 2.x.x, og nå synes det å være stabilisert så langt som API-ene er bekymret. Åpenbart støtter de fleste av de populære utvidelsene 2.x.x-versjonen og er der ute sammen med deres 1.5.x-versjonskode. Du finner også mange utvidelser som tillater migrering fra det eksisterende 1.5.x-oppsettet til den nyeste versjonen. 

Selvfølgelig er det visse begrensninger med slike utvidelser, da de ikke kan konvertere alt, spesielt tilpassede moduler.

Så i denne artikkelen vil vi fortsette og dissekere kodestykket av de viktigste komponentene i OpenCart-modulen. Videre ser vi hvordan du kan konvertere den til å være kompatibel med OpenCart 2.x.x. Uten videre teori, vil jeg straks dykke inn i de nørdige greiene!

Endringer i kontrollerfilen

I denne delen ser vi kodendringene som kreves i kontrollerfilen. I dette eksemplet har jeg valgt kontrollenfilen "account.php" under katalogen "katalog / kontroller / konto".

URL omadressering

La oss se på 1,5.x-koden for omdirigering. I den eldre versjonen, den omdirigere Metoden var en del av abstraktet Controller klasse, så du kan ringe det direkte ved hjelp av $ dette gjenstand.

$ this-> omdirigere ($ this-> url-> link ('konto / logg inn', ',' SSL '));

Nå er det slik det ser ut i 2.x.x-versjonen. I den siste versjonen, den omdirigere Metoden tilhører Respons klasse og er dermed tilgjengelig via objektet.

$ this-> response-> omdirigere ($ this-> url-> link ('konto / logg inn', ',' SSL '));

Last inn språkfilen

I 1.5.x vil du bruke følgende utdrag for å laste den tilsvarende modulens språkfil.

$ Dette-> språk> belastning ( 'konto / konto');

På den annen side må du bruke en litt annen versjon for OpenCart 2.x.x, som vist i følgende utdrag.

$ Dette-> last> språk ( 'konto / konto');

Variabel oppgave

Vi kan si at det er en av de store endringene i konteksten til kontrolleringsmetoden, da det meste av tiden vil du ende opp med å tilordne variablene dine slik at du kan få tilgang til dem i visningsmalfilene.

I 1.5.x-versjonen vil du gjøre noe slikt:

$ this-> data ['heading_title'] = $ this-> language-> get ('heading_title');

I 2.x.x kan det samme oppnås ved:

$ data ['heading_title'] = $ this-> language-> get ('heading_title');

Som du kan se, i den siste versjonen av $ data array er utarbeidet utelukkende og det er bestått som et visningsargument. I den tidligere versjonen var det et helt abstrakt Controller klasse.

Brødsmule

I den siste versjonen trenger du ikke å gi en "separator" som en matriksnøkkel i motsetning til den tidligere versjonen.

Her er koden fra 1.5.x-versjonen:

$ this-> data ['breadcrumbs'] [] = array ('text' => $ this-> språk-> få ('text_home'), 'href' => $ this-> url-> link / home '),' separator '=> false);

Et lignende resultat kan oppnås ved å bruke følgende kode:

$ data ['breadcrumbs'] [] = array ('text' => $ this-> språk-> få ('text_home'), 'href' => $ this-> url-> lenke ));

Oppgave for barnmal

I 1.5.x måtte du gi en matrise for å tilordne alle barnas maler som topptekst, footer, column_left osv..

$ this-> children = array ('common / column_left', 'common / column_right', 'common / content_top', 'common / content_bottom', 'common / footer', 'common / header');

I tilfelle av 2.x.x versjonen, bruker du kontrolleren metode av loader klasse.

$ data ['column_left'] = $ this-> load-> kontroller ('common / column_left'); $ data ['column_right'] = $ this-> load-> kontroller ('common / column_right'); $ data ['content_top'] = $ this-> load-> kontroller ('common / content_top'); $ data ['content_bottom'] = $ this-> load-> kontroller ('common / content_bottom'); $ data ['footer'] = $ this-> load-> kontroller ('common / footer'); $ data ['header'] = $ this-> load-> kontroller ('common / header');

Maloppgave

I den tidligere versjonen av OpenCart ville du ha brukt følgende kode for å tildele malfilen og gjengi den.

hvis (file_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template'). '/template/account/account.tpl')) $ this-> template = $ this-> config-> get ('config_template '). '/Template/account/account.tpl';  ellers $ this-> template = 'default / template / account / account.tpl';  $ this-> response-> setOutput ($ this-> render ());

I den siste versjonen må du bruke en litt annen og kortere måte å håndtere den.

hvis (file_exists (DIR_TEMPLATE. $ this-> config-> få ('config_template'). '/template/account/account.tpl')) $ this-> response-> setOutput ($ this-> load-> vis ($ this-> config-> get ('config_template'). '/template/account/account.tpl', $ data));  ellers $ this-> response-> setOutput ($ this-> load-> view ('standard / mal / konto / account.tpl', $ data)); 

Som du ser, bruker vi den siste versjonen av utsikt metode av loader klasse.

Så det er det så langt som regulator-relaterte endringer er bekymret. Ved hjelp av sjekklisten over, bør du kunne konvertere kontrollerkoden fra den eldre til nyere versjonen enkelt.

Endringer i modellfilen

Selv om modellfiler nesten er identiske i begge versjoner, er det en ny funksjon kalt "Event Notifications" som ble introdusert i den nyeste versjonen av OpenCart. Det er et fint konsept som lar deg utløse bestemte hendelser og dermed informere de tilsvarende observatørene hvis tilgjengelig.

Ved hjelp av funksjonen "Hendelsesvarsler" kan du tillate dataendring av de andre modulene som implementerer observatørene for relaterte hendelser før du lagrer til databasen. La oss ta et eksempelutdrag fra katalogen "katalog / modell / konto / address.php".

$ this-> event-> trigger ('pre.customer.add.address', $ data);

Det vil utløse en hendelse før kundens adresse er lagt til eller oppdatert. Det vil tillate andre moduler å endre adressedata før det er lagret i databasen. Så i utgangspunktet er det den eneste store forandringen så langt som modellen er bekymret. Når det er sagt, kan du også utløse hendelsene fra andre komponenter i modulen.

Endringer i visningsfilen

I den siste delen av denne opplæringen diskuterer vi endringene i utsikt komponent av modulen. En av de store endringene er introduksjonen av "Bootstrap" -biblioteket, noe som gjør malen lydhør. Selvfølgelig vil dine gamle maler også fungere i den siste versjonen, men vil ikke være lydhør. OpenCart 2.x.x er mobil først, så du kan ikke ignorere responsen til malen din.

Jeg vil at du skal utforske "katalog / visning / tema / standard / mal / konto / account.tpl", der du vil se CSS-klassenavn som "col-sm-6" og "col-sm-9", som indikerer tilstedeværelsen av bootstrap biblioteket. Så i utgangspunktet, som bootstrap er i selve kjernen, vil du gjerne benytte de fleste av funksjonene som tilbys av den.

Så når det gjelder visningsfiler, må du konvertere den gamle XHTML-koden til den nye lydhørstrukturen. Bortsett fra det, er det på samme måte som variabler skrives ut og andre barnemaler følger med.

Så det er det så langt som dagens artikkel er bekymret. Jeg er sikker på at trinnene som er nevnt ovenfor, vil hjelpe deg med å konvertere modulene fra versjonen 1.5.x til 2.x.x.

Konklusjon

I dag diskuterte vi nøyaktig hvilke endringer du må gjøre i dine eksisterende 1.5.x-baserte OpenCart-moduler for å konvertere dem til å være 2.x.x-kompatible. Jeg håper at du har hatt det, og gjerne poste dine tanker om emnet!

Et OpenCart-tema

Hvis du vil ta læringen til neste nivå, kan du se hvordan det ser ut til å se det i praksis, og praktisk talt bruke det du har lært i denne opplæringen, og sjekk ut MediaCenter Responsive OpenCart Mal.