Magento atributi
Autor: Dušan Lukić |
Datum:
  • # Magento


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.

Čuvanje atributa

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.

Dodavanje atributa

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.

Attribute properties

  • Attribute code je jedinstveni code atributa, piše se u underscore formatu
  • Scope - označava da li će atribut biti uvek isti (global) ili će se razlikovati od prodavnice do prodavnice
  • Catalog Input Type for Store Owner - služi da odaberemo kakvo će se input polje prikazati administratoru kada bude popunjavao vrednost ovog atributa u admin panelu
  • Default Value - označava podrazumevanu vrednost
  • Unique Value - možemo odrediti da vrednosti ovog atributa budu jedinstvene
  • Values Required - da li atribut mora da ima vrednosti
  • Input Validation for Store Owner - postoji mogućnost da se doda validacija pri unosu vrednosti
  • Apply to - atribute se može odnositi samo na pojedine tipove proizvoda (koje smo pomenuli u prošlom članku).

super_att_props

Frontend Properties

  • Comparable on Front-end - na product listing strani postoji opcija compare gde se više proizvoda može uporediti na osnovu atributa. Ova opcija nam omogućava da i naš atribut bude u tom poređenju
  • Use In Layered Navigation - postoje kriterijumi po kojima se proizvod može filtrirati na product listing strani i skup tih kriterijuma se naziva “layered navigation”. Ova opcija određuje da li će se atribut naći u skupu tih opcija
  • Use In Search Results Layered Navigation - isto samo za “layered navigation” u rezultatima pretrage
  • Use for Promo Conditions - atribut se odabirom ove opcije može koristiti pri pravljenju uslova za promocije
  • Position - pozicija za sortiranje u “layered navigation”
  • Allow HTML Tags on Frontend - da li će atributu biti dozvoljeno da prikaže HTML tagove u slučaju da ga njegova vrednost sadrži
  • Visible on Product View Page on Front-end - da li će atribut biti vidljiv na product view strani
  • Used in Product Listing - da li će atribut biti vidljiv na product list strani (strane kategorije, strane rezultata pretrage)
  • Used for Sorting in Product Listing - da li će atribut biti ponuđen kao opcija za sortitanje na product list strani

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.

magento-google-base-add-condition-attribute-4

Nakon svakog dodavanja atributa treba reindeksirati Catalog Search Index (Sytem -> Index Management), kako bi se osvežile index tabele.

Praktičan rad sa atributima

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’);

Dodavanje atributa putem instalacione skripte

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