Atribut se može definisati kao karakteristika objekta koja ga opisuje. Na primeru objekta automobil atributi mogu biti boja, model, tip.
U Magento CMS rešenju atributi predstavljaju svojstva entiteta za koji su vezani. Teorijski se atributi mogu dodati za bilo koji od 26 tipova entiteta (kao što su quote, order, itd.). U Magento admin panelu definisano je dodavanje za proizvode, kupce i kategorije.
Hajde da pogledamo kako se čuvaju podaci o atributima.
Kao što smo napomenuli u ranijim tekstovima, Magento koristi EAV princip za skladištenje podataka. Ovo je na prvi pogled zamršen koncept, ali doprinosi proširivosti sistema time što se novi atributi mogu dodavati bez izmene strukture tabela. Mana ovakvog pristupa je brzina, pošto su upiti za dobijanje podataka dosta složeni i potrebno je puno vremena da se izvrše.
Osnovna tabela za atribute je eav_attribute. U njoj se nalaze informacije o atributima kao i o entitetu kome atribut pripada. Vrednosti atributa se nalaze u odgovarajućim tabelama što zavisi od vrednosti polja backend_type u eav_attribute tabeli. Kombinacijom entiteta i pomenutog backend tipa atributa dobija se naziv tabele u kojoj će se nalaziti vrednost atributa. Na primer, vrednost atributa name se nalazi u tabeli catalog_product_entity_varchar zato što je entitet tog atributa catalog/product a backend tip mu je varchar. Za ovakve tabele postoje ograničenja na nivou baze. Na primer, pomenutoj tabeli catalog_product_entity_varchar je value polje tipa varchar, dok catalog_product_entity_int ima isto polje tipa int. Atributi se grupišu u attribute groups i attribute sets. Attribute group predstavlja najniži nivo grupisanja atributa dok je attribute set viši nivo grupisanja atributa i on se sastoji od attribute groups.
Sada možemo pogledati kako se dodaje atribut za proizvod iz Magento Admin panela, hajde da dodamo atribut u koji ćemo upisivati naziv proizvođača.
Potrebno je otići na Catalog -> Attributes -> Manage Attributes. Atribut dodajemo klikom na Add New Attribute dugme.
Frontend Properties
U Manage Label / Options tabu - se unose nazivi (labels) za različite store viewove
Nakon ovoga potrebno je kliknuti na Save Attribute.
Potrebno je takođe dodati novi atribut u neki attribute group. Za ovu akciju je treba otići na Catalog -> Attributes -> Manage Attribute Sets. Prvo treba odabrati attribute set (na novoj instalaciji je to Default), zatim je dovoljno jednostavno prevući atribut iz dela Unassigned Attributes u odgovarajući attribute group u Groups delu i sačuvati.
Nakon svakog dodavanja atributa treba reindeksirati Catalog Search Index (Sytem -> Index Management), kako bi se osvežile index tabele.
U Magentu se atribut mapira kao property objekta entiteta. Na primer ako imamo objekat sa identifikatorom 1, njegov atribut pod nazivom “custom_attribute” možemo dobiti na sledeći način:
$_product = Mage::getModel(‘catalog/product’)->load(1); $customAttribute = $_product->getCustomAttribute();
Nije moguće u svakom momentu dobiti vrednost svakog atributa. Kada se učitava kolekcija proizvoda potrebno je da definišemo koje atribute želimo u proizvodima. Na primer:
$_products = Mage::getModel('catalog/product') ->getCollection() ->addAttributeToSelect(‘custom_attribute’); foreach($_products as $_product) { $_product->getCustomAttribute(); }
Kolekcija proizvoda se može filtrirati po vrednosti atributa. Osim proizvoda isto važi za svaki entitet čija klasa kolekcije nasleđuje Mage_Eav_Model_Entity_Collection_Abstract:
Mage::getModel('catalog/product') ->getCollection() ->addAttributeToSelect(‘custom_attribute’) ->addAttributeToFilter(‘custom_attribute’,’value’);
Za rad mnogih modula su potrebni određeni custom atributi. Kako bi autori modula obezbedili da ti atributi budu automatski instalirani u skriptu se može dodati sledeći kod:
$installer = $this; $installer->startSetup(); $this->addAttribute('catalog_product','attribute_example',array( 'label' => 'Attribute Example', 'type' => 'varchar', 'visible' => true, 'required' => false, 'required' => 0 ));
Sa ovakvom install skriptom je moguće dodati atribut. Takođe je moguće na ovaj način podesiti i razne druge parametre atributa ili dodati atribut u attribute group.
Atributi su jedna od osnova svakog ecommerce sistema i od mogućnosti za njihovu upotrebu u velikoj meri zavisi i kvalitet samog sistema. Magento sadrži fleksibilan mehanizam za korišćenje atributa što ga između ostalog i čini jednom od najozbiljnijih ecommerce platformi.