Fra Begynner til Avansert i OpenCart Modulutvikling

I de tidligere artiklene, undersøkte vi MVC-arkitekturen og opprettet vår første kontroller, modell og visning i OpenCart-applikasjonen. Vi gjorde dette for å bidra til å få en bedre forståelse av kjerneprogrammet. 

For å ta ting et skritt videre, skal vi se på å skape en tilpasset modul for OpenCart.

Hva er OpenCart-moduler?

OpenCart-moduler er analoge med tilleggsprogrammer, plugins eller utvidelser i andre innholdsstyringssystemer. Det er gjennom moduler som OpenCart gir oss muligheten til å utvide sin funksjonalitet uten å måtte redigere programmets filer.

Som med mange andre innholdsstyringssystemer, anses det generelt for å være en god praksis for å utvide funksjonaliteten til kjerneprogrammet gjennom de angitte APIene, og OpenCart er ikke annerledes. Modulene tillater oss å introdusere, fjerne eller endre funksjonaliteten til kjerneprogrammet som er gjort på en compartmentalized og vedlikeholdsdyktig måte.

OpenCart har sitt eget Extension Market hvor et stort antall utvidelser allerede er tilgjengelige. Eller du kan sjekke ut det store utvalget av OpenCart-moduler og utvidelser på Envato Market.

OpenCart-moduler og utvidelser på Envato Market

Hvis du trenger en bestemt oppgave som er fullført i OpenCart, og sliter med å gjøre det selv, kan du prøve å bestille en av de store, tilpassede OpenCart-utviklingstjenestene på Envato Studio.

OpenCart-utvikling på Envato Studio

Vår første modul

For å bli akklimatisert med OpenCarts modulsystem, kan vi skrive den obligatoriske "Hello World" -modulen. Dette vil ta innspill fra dashbordet og vise det på forsiden av nettstedet.

Legg merke til at OpenCart har en rekke pre-build-moduler. Som sådan vil vi prøve å utnytte dem når det er mulig når vi arbeider alene. For å komme i gang, utfør følgende:

  1. Opprett en kontroller til administrasjonspath: admin / styreenhet / modul / helloworld.php .
  2. Opprett en språkfil til administrasjonspath: admin / language / engelsk / modul / helloworld.php .
  3. Opprett et visning til Admin-sti: admin / view / mal / modul / helloworld.tpl .

1. Språkfilen

Som diskutert i våre tidligere artikler inneholder språkfilen den statiske teksten hva som skal vises i vår visningsfil. For helloworld.php språkfil, inneholder følgende variabler de mulige tekstfeltene vi må vise i modulen vår:

1. Kontrolleren

Åpne "Hello World" kontrollerfilen som vi nettopp har opprettet og legg til klassen klassen ControllerModuleHelloworld utvider kontrolleren  følger klassenavnekonvensjonen. Deretter plasserer du følgende kode inne i klassen.

Trinn 1: Standardfunksjonen 

privat $ error = array (); // Dette brukes til å angi feilene, hvis noen. offentlig funksjon indeks () // Standard funksjon $ this-> language-> load ('module / helloworld'); // Laster språkfilen til helloworld $ this-> document-> setTitle ($ this-> language-> get ('heading_title')); // Sett tittelen på siden til overskriften tittelen i Language-filen, dvs Hello World $ this-> load-> model ('setting / setting'); // Last inn innstillingsmodellen (Alle OpenCart-modulene og generelle innstillinger lagres ved hjelp av denne modellen) hvis (($ this-> request-> server ['REQUEST_METHOD'] == 'POST') && $ this-> validere ( )) // Start Hvis: Validerer og kontrollerer om data kommer etter lagring (POST) metode $ this-> model_setting_setting-> editSetting ('helloworld', $ this-> request-> post); // Parse alle de kommende dataene til Innstillingsmodell for å lagre den i databasen. $ this-> session-> data ['success'] = $ this-> language-> get ('text_success'); // For å vise suksessteksten på data lagre $ this-> omdirigere ($ this-> url-> link ('forlengelse / modul', 'token ='. $ This-> session-> data ['token'], 'SSL')); // Omdirigere til moduloppføringen // Slutt hvis / * Tildel språkdataene for å analysere det for å vise * / $ this-> data ['heading_title'] = $ this-> language-> get ('heading_title'); $ this-> data ['text_enabled'] = $ this-> language-> get ('text_enabled'); $ this-> data ['text_disabled'] = $ this-> language-> get ('text_disabled'); $ this-> data ['text_content_top'] = $ this-> language-> get ('text_content_top'); $ this-> data ['text_content_bottom'] = $ this-> language-> get ('text_content_bottom'); $ this-> data ['text_column_left'] = $ this-> language-> get ('text_column_left'); $ this-> data ['text_column_right'] = $ this-> language-> get ('text_column_right'); $ this-> data ['entry_code'] = $ this-> language-> get ('entry_code'); $ this-> data ['entry_layout'] = $ this-> language-> get ('entry_layout'); $ this-> data ['entry_position'] = $ this-> language-> get ('entry_position'); $ this-> data ['entry_status'] = $ this-> language-> get ('entry_status'); $ this-> data ['entry_sort_order'] = $ this-> language-> get ('entry_sort_order'); $ this-> data ['button_save'] = $ this-> language-> get ('button_save'); $ this-> data ['button_cancel'] = $ this-> language-> get ('button_cancel'); $ this-> data ['button_add_module'] = $ this-> language-> get ('button_add_module'); $ this-> data ['button_remove'] = $ this-> language-> get ('button_remove'); / * Denne blokken returnerer advarselen hvis noen * / hvis (isset ($ this-> error ['warning'])) $ this-> data ['error_warning'] = $ this-> feil ['advarsel'];  ellers $ this-> data ['error_warning'] = "; / * Sluttblokk * / / * Denne blokken returnerer feilkoden hvis noen * / hvis (isset ($ this-> error ['code']) ) $ this-> data ['error_code'] = $ this-> feil ['kode']; annet $ this-> data ['error_code'] = ";  / * End Block * / / * Gjør av Breadcrumbs å bli vist på stedet * / $ this-> data ['breadcrumbs'] = array (); $ this-> data ['breadcrumbs'] [] = array ('text' => $ this-> språk-> få ('text_home'), 'href' => $ this-> url-> link / home ',' token = '. $ this-> session-> data [' token '],' SSL '),' separator '=> false); $ this-> data ['breadcrumbs'] [] = array ('text' => $ dette-> språk-> få ('text_module'), 'href' => $ this-> url-> link / modul ',' token = '. $ this-> session-> data [' token '],' SSL '),' separator '=>' :: '); $ this-> data ['breadcrumbs'] [] = array ('text' => $ this-> språk-> få ('heading_title'), 'href' => $ this-> url-> link / helloworld ',' token = '. $ this-> session-> data [' token '],' SSL '),' separator '=>' :: '); / * End Breadcrumb Block * / $ this-> data ['action'] = $ this-> url-> lenke ('module / helloworld', 'token ='. $ This-> session-> data ['token' ], 'SSL'); // URL som skal rettes når lagringsknappen er trykket $ this-> data ['cancel'] = $ this-> url-> link ('forlengelse / modul', 'token ='. $ This-> session-> data ['token'], 'SSL'); // URL for å bli omdirigert når avbryt-knappen er trykket / * Denne blokken sjekker, hvis hei verdens tekstfelt er satt det analyserer det for å se ellers få standard hei verdens tekstfelt fra databasen og analysere det * / hvis (isset $ this-> request-> post ['helloworld_text_field'])) $ this-> data ['helloworld_text_field'] = $ this-> request-> post ['helloworld_text_field'];  ellers $ this-> data ['helloworld_text_field'] = $ this-> config-> get ('helloworld_text_field');  / * End Block * / $ this-> data ['modules'] = array (); / * Denne blokken analyserer modulinnstillingene som Layout, posisjon, status og bestillingsstatus til visningen * / hvis (isset ($ this-> request-> post ['helloworld_module'])) $ this-> data [' moduler]] = $ this-> request-> post ['helloworld_module'];  elseif ($ this-> config-> get ('helloworld_module')) $ this-> data ['modules'] = $ this-> config-> get ('helloworld_module');  / * End Block * / $ this-> load-> modell ('design / layout'); // Laster designlayoutmodellene $ this-> data ['layouts'] = $ this-> model_design_layout-> getLayouts (); // Få alle layoutene tilgjengelige på systemet $ this-> template = 'module / helloworld.tpl'; // Laster helloworld.tpl mal $ this-> children = array ('common / header', 'common / footer'); // Legge til barn i vår standardmal, dvs. helloworld.tpl $ this-> response-> setOutput ($ this-> render ()); // Rendering av utgangen 

Trinn 2: Valideringsmetode

Som vi prøvde å validere data på lagre i standardfunksjon. Så her kommer valideringsmetoden.

/ * Funksjon som validerer dataene når Lagre knapp trykkes * / beskyttet funksjon validere () / * Blokker for å sjekke brukertillatelsen til å manipulere modulen * / hvis (! $ This-> user-> hasPermission ('modify' 'modul / helloworld')) $ this-> error ['warning'] = $ this-> language-> get ('error_permission');  / * End Block * / / * Blokker for å sjekke om helloworld_text_field er riktig satt til å lagre i database, ellers blir feilen returnert * / hvis (! $ This-> request-> post ['helloworld_text_field']) $ this -> feil ['kode'] = $ this-> language-> get ('error_code');  / * End Block * / / * Blokker returnerer sant hvis ingen feil er funnet, ellers falsk hvis noen feil oppdages * / hvis (! $ This-> feil) return true;  ellers return false;  / * End Block * / / * End Validation Function * /

Lagre filen nå, og du er ferdig med Admin Controller i Hello World Module!

3. Se fil

Som tidligere gjort i kontrolleren, må du opprette noen HTML for visningen. For det vil vi gjøre følgende:

Trinn 1: Bygg noen grunnleggende kontroller

EN skjema er et element som vil inneholde elementer som en tekst inngang element, a textarea, og knapper for å lagre eller avbryte inngang.

For å opprette et skjema som dette, gå gjennom koden nedenfor:

 
">

">
*

Trinn 2: Legge til en tabellliste

Under skjema, en bord listen vises hvor vi kan bosette modulposisjonen og siden der modulen skal vises.

') .Fjern (); ">

Trinn 3: Legge til noe JavaScript

Som du kan se i forrige trinn, er det en "Add Module" -knapp. Spesielt har vi:   hvor brukeren kan legge til flere rader for å vise utdataene fra modulen i forskjellige oppsett på forskjellige stillinger. 

For det må vi skrive litt JavaScript som vil legge til en rad i tabelllisten. Dette vil forbedre brukergrensesnittet for de som bruker modulen vår:

Trinn 4: Legge til en bunntekst

Det siste, vi må legge til et barnfotograf i slutten av visningen:

 

På dette tidspunktet er vi ferdige med å forberede vår første Hei Verden modul. På dette tidspunktet er det på tide å sjekke om modulen fungerer eller ikke. 

For å gjøre det, logg inn på dashbordet og gå til siden Utvidelser> Moduler hvor du vil se en liste over moduler i OpenCart System. Det vil også være "Hello World" oppført med en "Uninstalled" -stat, klikk på "Installer" og prøv å redigere modulen, og du får se en skjerm noe som dette:

Du kan legge inn noen tilfeldig verdi og prøve å lagre den. Prøv nå å redigere modulen igjen, og du vil se at du skriver inn som standard.

Konklusjon

I denne artikkelen forsøkte vi å bygge en grunnleggende OpenCart-modul ved hjelp av MVC. Det er enkelt å manipulere OpenCart-moduler hvis du er kjent med kjernekonseptene til MVC. Denne artikkelen gir bare en grunnleggende ide om hvordan du utvikler en enkel modul etter noen enkle trinn.

I vår neste artikkel kommer vi til å jobbe med frontend og vil prøve å forlenge den til en butikkfrontend. Gi oss gjerne din tilbakemelding i kommentarene nedenfor!

Kode