4 stvari zbog kojih je Magento tako jedinstven sistem

U slučaju da se prvi put srećete sa Magento platformom gotovo je sigurno da ćete biti poptuno zbunjeni! Znam, deluje veoma sporo i komplikovano, počevši od same instalacije. Više puta sam pokrenuo instalaciju i dobio gomilu poruka o grešci. Posle šest ili više pokušaja, konačno sam uspeo da ga instaliram i naravno, razmišljao sam o tome da dodam neku vrstu informacije na početnu stranu kao što su linkovi kategorija i drugih statičkih stranica u glavnoj navigaciji, odabrane proizvode sa cenom istaknutom na neki način, i… Čoveče! Uopšte nije bilo lako niti intuitivno.  U stvari, nisam znao odakle da počnem, gde da kodiram, Magentova struktura dokumenata mi je bila užasna.

Solidan sam u razvoju sajtova, čak i online trgovina na starom dobrom WordPress-u sa Woo Commerce-om i stvarno volim to da radim zbog jednostavnosti upotrebe. Na moju žalost, morao sam da zaboravim sve što sam znao i da se naviknem na Magento jer klijenti koji kontaktiraju Implementek skoro uvek zahtevaju da njihovu prodavnicu pokreće verovatno najbolji open-source rešenje za elektronske prodavnice zvan Magento. Da, upravo sam rekao da je Magento najverovatnije najbolja platforma za e-prodavnice i neka vas to ne iznenadi – u prethodna dva meseca uz smanjeno spavanje i punu posvećenost učenju što na poslu što van njega mogu reći da samzadovoljan jer mi Magento sada ima mnogo više smisla. Iskreno, treba dosta vremena da se otkriju svi njegovi napredni koncepti, ali i pored toga smatram da je Magento fantastičan framework koji dosta posla obavlja umesto vas. Još jedna odlična stvar je što ne morate biti ekspert, dovoljno je da ste upoznati sa njegovom strukturom, osnovnim konceptima, toku zahteva i lako ćete naći početnu (a često i kompletnu) ideju za rešavanje konkretnog problema na Google-u. Naravno, potrebno vam je jako OOP znanje PHP-a i sve će biti mnog jednostavnije ako razumete MVC patern.

Popričajmo o stvarima koje čine Magento jedinstvenim

U redu, svi bi trebali da znamo da je Magento sistem koji zahteva dosta čitanja, izučavanja i vežbanja. Zato neću napisati tutorijal – neće promeniti svet. Umesto toga, istaćiću vam neke interesantne činjenice na koje sam naleteo tokom učenja.

#1 Jedinstven sistem dokumenata i MVC

Struktura dokumenata je prva stvar koju ćete primetiti kada otvorite Magento filesystem. Sadrži foldere kao: /app, /lib, / skin, /media, /var itd. Neću pokriti sve njih, jer već postoji dosta tutorijala na tu temu, već ću posebnu pažnju posvetiti /app za programere i /skin za dizajnere. Ova dva foldera su mesto na kojima se važne stvari dešavaju.

Prodiskutovao bih kako je MVC implementiran u Magentu, jer je zabavno, jedinstveno (i čudno) za programere koji dolaze sa drugih MVC framework-a. U tipičnoj PHP Model-View-Controller (MVC) apliakciji, svi kontroleri bi bili u jednom folderu, svi modeli u drugom, itd. U Magentu, fajlovi su grupisani po funkcionalnosti i zovu se moduli.

Svi Magento moduli su smešteni u app/code/core, ali ako ste razvili sopstveni modul, praksa je da fajlove smestite u app/code/local/your-module-name. Kada želite da dodate neku funkcionalnost nekom od Magento osnovnih modula, veoma je preporučljivo da napravite lokalnu kopiju i postavite je u app/code/local/core-module-name i onda počnete sa izmenama (bezbedna izmena fajlova).  Veoma je loša ideja da se menjaju fajlovi modula direktno u “core” folderu jer kada pređete na noviju verziju Magenta rizikujete da ostanete bez tih izmena jer on preko njih postavi svoje fajlove. Postoji još jeda folder u app/code koji se zove “community” koji se koristi za module razvijene od strane Magento zajednice ili drugih kompanija.

#2 Zbunjujuće značenje Magento layout-a

Ovo je stvar koj me je verovatno najviše frustrirala jer jednostavno nisam razumeo šta sam radio i zašto ovo uopšte postoji. Čak i sad nisam 100% siguran da razumem sve koncepte iza layout-a jer ih nisam sve još prešao, ali je mnogo bolje nego na samom početku. “Layout” je HTML kontejner koji definiše strukturu na skoro svim sistemima OSIM Magenta. U stvari, definiše strukturu sajta, ali na drugačiji način.

Velika razlika u odnosu na druge sisteme je da se ne koristi HTML layout već XML layout. Možda se pitate sada – kako je moguće kreirati strukturu sajta u XML-u, ali da – mogće je. U Magentu, ovaj XML fajl sadrži čvorove Blokova u sebi i što je interesantno – svaka metoda Bloka može biti pozvana direktno iz layout-a (prosleđivanje parametara ovim metodama je takođe lako)! Svaki Blok će generisati specifičan deo HTML-a. Objekti Bloka ovo rade kroz kombinaciju PHP koda i uključuju PHP .phtml templejt fajlove.

Znam da ste zbunjeni mojim pominjanim i korišćenjem tri slična termina (layout, blok i templejt) i ako je tako, budite srećni – vaše Magento putovanje je spremno za početak! Zapravo, objekti bloka treba da imaju interakciju sa Magento sistemom da pokupe podatke iz Modela. dok .phtml templejt fajlovi će generisati HTML potreban za stranicu. Još jednom, sasvim je u redu ako vam ovo nije jasno, ali mislim da sam vas bar podstakao da preko Google-a nađete opširnije informacije. Za kraj, neka ovaj grafikon (Magento rendering flow) uvek bude negde u vašim mislima tokom razvoja.

# 3 Zaista kompleksna baza podataka: entitet-atribut-vrednost obrazac

Do sada smo uglavnom diskutovali o Magento kodu.Sledeća stvar zasto je ceo sistem jedinstven jeste njegova organizacija baze podataka . Ovde je malo Poređenje, radi boljeg objašnjenja: VordPress CMS po defaultu ima 11
tabela u svojoj bazi podataka. Magento dolazi sa 350 + tabela. To je jedan od razloga zašto sam mora da instaliranje Magento Sistema pokušavam nekoliko puta – server nije mogao da izvrši sve te tabele baze podataka, tako da sam morao da se povećam max_execution_time i neke druge parametre.

Ako se pitate zašto  Magentu treba 350 + tabela, to je zato što su neki delovi baze podataka (ne svi)  razvijeni u skladu sa EAV (Entity-Attribute-Value) uzorkom. Ne znam mnogo o tome kako se to realizuje, ali u suštini, umesto što se sastoji od broja kolona, atributi su smešteni u jednoj koloni posebne tabele koja  omogućava da lako upravljate dodavanjem novih atributa većini delova sistema, zadržavajući šeme baza. Da li ste kreirali atribute i njihove skupove za pojedine proizvode ili grupe proizvoda? Ova funkcija se neposredno stara o advatage EAV obrazac.

Svaki sistem ima svoje prednosti i mane.Dobar deo Magento baze je, kao što smo rekli, njena fleksibilnost. Ali lošija strana je njegova složenost.Posledica toga je da je veoma teško za nas, programere, da se napišu jednostavni SQL upiti (potrebno  je mnogo JOINS).

#4 Kako doci do Template putanje

Poslednja stvar koju sam hteo da pomenem je moja omiljeni Magento funkcija dizajnirana specijalno za programere, nazvanim “Template path hints”. Probao sam skoro sve open-source CMS, ali nisam našao nešto slično ovome – to tako specificno za Magento. Zato što je Magento  veoma složen sistem i svaka stranica pregledana u  pretraživaču sastoji  se od mnogo šablona generisanih od strane svojih blokova (kao što smo gore pomenuli). Da bismo saznali koju su šabloni  pozvani na stranici koju želite da promenite, možete da uključite ” Template Path hints” . Da bi se omogućilo:
1. Idite na admin i idite na System -> Configuration
2. Izaberite svoju prodavnicu u gornjem levom website/store selector
3. Kada se stranica ponovo učitaa, izaberite karticu “Developer” i izaberite “Yes” za “Template Path Hints”.
Kada završite, vratite se u prodavnicu ispred, ponovo učitajte stranicu i videćete putanju do svih šablona navedenim prema bloku. U cilju da izmenite oznacene delove, sve što treba da uradite je da sledite ispisanu putanju šablona i izmenite je prema uputstvu  (e).

 

 

Ostali postovi