Jak Magento może znaleźć wartość atrybutu według danej etykiety atrybutu lub identyfikatora atrybutu?
Jak Magento może znaleźć wartość atrybutu według danej etykiety atrybutu lub identyfikatora atrybutu?
Odpowiedzi:
$productModel = Mage::getModel('catalog/product');
$str_attr_label = "color"; //or "size", etc...
$int_attr_id = 8; // or any given id.
$int_attr_value = 21; // or any given attribute value id.
// Chose either
if ($byLabel){
$attr = $productModel->getResource()->getAttribute($str_attr_label);
}
if ($byId){
$attr = Mage::getModel('catalog/resource_eav_attribute')->load($int_attr_id);
}
if ($attr->usesSource()) {
echo $color_label = $attr->getSource()->getOptionText($int_attr_value);
}
Mówiąc najprościej - użyj metody getAttributeText .
$product->getAttributeText('brand')
Na wypadek, gdyby ktokolwiek znalazł tę stronę i chciał zastosować jakieś nieuporządkowane metody wyszukiwania atrybutów dowolnego rodzaju, a nie tylko atrybuty produktu, oto przykład wyszukiwania losowego atrybutu, który utworzyłem, zwanego „specjalnością” i wyszczególnienia wszystkich opcji jako tablica.
$attr = Mage::getResourceModel('eav/entity_attribute_collection')->setCodeFilter('specialty')->getData()[0];
$attributeModel = Mage::getModel('eav/entity_attribute')->load($attr['attribute_id']);
$src = $attributeModel->getSource()->getAllOptions();