Includerea bibliotecilor jQuery în centrul OpenCart face din Ajax implementarea unei brize și mai mult decât o experiență plăcută. De fapt, veți găsi mai multe fragmente răspândite pe întregul cadru, care indică utilizarea intensă a jQuery, dacă încercați să explorați fișierele de vizualizare.
Pe tot parcursul acestui articol, vom construi o pagină personalizată pentru a demonstra utilizarea lui Ajax în OpenCart. Va fi o interfață simplă care vă permite să selectați un produs din caseta derulantă și afișează un bun tip de produs sumar al produselor selectate. Partea interesantă a cazului de utilizare este modul în care este construit blocul rezumat al produsului - acesta va fi pregătit folosind Ajax on-the-fly. Desigur, nu este ceva care face ca acesta să fie un exemplu din lume, dar cred că va servi scopul principal de a arăta cum funcționează lucrurile în OpenCart.
Presupun că utilizați cea mai recentă versiune a OpenCart, care este 2.1.x.x! De asemenea, discuția primară a acestui articol se concentrează pe Ajax cu OpenCart, așa că voi trece prin elementele de bază ale dezvoltării modulelor personalizate în OpenCart. Cu toate acestea, dacă nu sunteți familiarizat cu aceasta, o scurtă explicație a fragmentelor de cod între acestea vă asigură că puteți urma până la sfârșit!
Să trecem rapid la configurarea fișierelor necesare pentru pagina noastră personalizată.
Catalog / controler / ajax / index.php
: Este un fișier de controler care oferă logica de aplicații a controlerului obișnuit în OpenCart.Catalog / limba / engleză / ajax / index.php
: Este un fișier lingvistic care ajută la configurarea etichetelor de limbă.Catalog / Vedere / tema / default / template / ajax / index.tpl
: Este un fișier de șablon de vizualizare care deține XHTML-ul paginii personalizate.Catalog / Vedere / tema / default / template / ajax / product.tpl
: Este un fișier de șablon de vizualizare care conține XHTML-ul răspunsului AJAX.Așadar, este o listă rapidă a fișierelor pe care le vom implementa astăzi.
Continuați și creați un fișier Catalog / controler / ajax / index.php
cu următorul conținut.
a sarcinii> limba ( 'ajax / index'); $ This-> a sarcinii> Model ( 'catalog / produse'); $ This-> pe documente> SetTitle ($ this-> language-> get ( 'Senzori si')); // încărcați toate produsele $ products = $ this-> model_catalog_product-> getProducts (); $ date ['produse'] = $ produse; $ date ['breadcrumbs'] = array (); $ data ['breadcrumbs'] [] = array ('href' => $ this-> url-> link ('common / home' )); $ data ['breadcrumbs'] [] = array ('href' => $ this-> url-> link ('ajax / index' )); $ data ['title_title'] = $ acest-> limbă-> obține ('title_title'); $ data ['text_product_dropdown_label'] = $ acest-> limbă-> primi ('text_product_dropdown_label'); $ data ['column_left'] = $ acest-> încărcător-> controler ('common / column_left'); $ data ['column_right'] = $ acest-> încărcare-> controler ('common / column_right'); $ data ['content_top'] = $ acest-> încărcare-> controler ('common / content_top'); $ data ['content_bottom'] = $ acest-> încărcare-> controler ('common / content_bottom'); $ data ['footer'] = $ acest-> încărcător-> controler ("common / footer"); $ data ['header'] = $ acest-> încărcător-> controler ('common / header'); dacă file_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template') ./template/ajax/index.tpl)) $ this-> response-> setOutput ($ this-> load-> ($ this-> config-> get ('config_template'). '/template/ajax/index.tpl', $ data)); altceva $ this-> response-> setOutput ($ this-> load-> view ('default / template / ajax / index.tpl', $ date)); // ajax metoda de apel funcția publică ajaxGetProduct () if (isset ($ this-> request-> get ['product_id'])) $ product_id = (int) $ this-> request-> get ['product_id „]; dacă ($ product_id> 0) // încărcați produsul dorit în ajax $ this-> load-> model ('catalog / product'); $ product = $ acest-> model_catalog_product-> getProduct ($ product_id); $ date ['produs'] = $ produs; // pregătește imaginea degetului mare, $ this-> load-> model ('tool / image'); dacă $ product ['image']) $ data ['thumb'] = $ this-> model_tool_image-> redimensionați ($ product ['image'], $ this-> configura cam> get ( 'config_image_thumb_height')); // preț formată $ date ['price'] = $ this-> currency-> format ($ this-> tax-> calculate ($ product ['price'], $ product ['tax_class_id'], $ this- > configura cam> get ( 'config_tax'))); $ This-> a sarcinii> limba ( 'produs / produs'); $ date ['text_manufacturer'] = $ acest-> limbă-> get ('text_manufacturer'); $ data ['text_model'] = $ acest-> limbă-> obține ('text_model'); $ date ['text_note'] = $ acest-> limbă-> primi ('text_note'); $ data ['tab_description'] = $ acest-> limbă-> get ('tab_description'); dacă file_exists (DIR_TEMPLATE. $ this-> config-> get ('config_template') ./template/ajax/product.tpl)) $ this-> response-> setOutput ($ this-> load-> ($ this-> config-> get ('config_template'). '/template/ajax/product.tpl', $ data)); altceva $ this-> response-> setOutput ($ this-> load-> view ('default / template / ajax / product.tpl', $ date));
Pentru început, index
metoda de controler este folosită pentru a încărca fișierele de limbă și model și pentru a configura variabilele comune pentru șablonul OpenCart obișnuit. Încărcăm modelul de produs disponibil în miezul propriu-zis, deci nu trebuie să repetăm codul pentru a prelua informațiile despre produs.
După încărcarea modelului de produs, folosim getProducts
metoda de încărcare a tuturor produselor. În cele din urmă, încheiem index
metoda prin setare index.tpl
ca fișierul șablonului principal.
Următorul este important ajaxGetProduct
, care este folosit pentru a construi un bloc de rezumat al produsului bazat pe id-ul produsului trecut în apelul Ajax, așa cum vom vedea curând în fișierul șablonului. Se încarcă același model de produs ca și în cazul index
metoda, și solicită getProduct
pentru a obține informații specifice despre produs pe baza id-ului produsului.
În final, product.tpl
șablonul este setat ca șablon pentru această metodă. Specifică cerințelor în cazul nostru, folosim șablonul pentru a construi ieșirea Ajax, dar, de asemenea, ați putea trimite răspunsul JSON.
Mergând înainte, hai să creăm un fișier de limbă Catalog / limba / engleză / ajax / index.php
pentru a ține informațiile despre eticheta statică.
Fișierul șablon de vizualizare, unul dintre cele mai importante fișiere din contextul acestui tutorial, trebuie creat la
Catalog / Vedere / tema / default / template / ajax / index.tpl
cu următorul conținut.