Jak uzyskać wszystkie opcje dla wszystkich widoków sklepu dla jednego atrybutu?

13

Próbuję pobrać wszystkie opcje dla wszystkich widoków sklepu dla jednego atrybutu, np color.

Dla atrybutu colorutworzyłem dwie opcje bluei white. Wypróbowałem następujący kod, który powinien zwrócić wszystkie etykiety opcji dla wszystkich widoków sklepu, ale zwraca mi tylko adminetykietę opcji.

$option_arr = array();
$attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', 'color');
foreach ($attribute->getSource()->getAllOptions(false) as $option) {
  $option_arr[$option['value']] = $option['label'];
}
// $option_arr contains Array([4] => Blue, [3] => White)

Poniższe działa dobrze w celu uzyskania wszystkich colortytułów atrybutów dla każdego widoku sklepu, ale nie działa w przypadku opcji.

$product = Mage::getModel('catalog/product')->load();
$attribute_title = $product->getResource()->getAttribute('color');
// $attribute_title contains Array([1] => ~~~, [2] =>Color, [3] => Couleur, [4] => Còôlòôr)

Zrzut ekranu mojego atrybutu koloru i opcji.

dnelson
źródło

Odpowiedzi:

16
    /**
     * @var $config  Mage_Eav_Model_Config
     * @var $options Mage_Eav_Model_Resource_Entity_Attribute_Option_Collection
     */
    $storeId   = 3;
    $config    = Mage::getModel('eav/config');
    $attribute = $config->getAttribute(Mage_Catalog_Model_Product::ENTITY, 'color');
    $values    = $attribute->setStoreId($storeId)->getSource()->getAllOptions();
    print_r($values);

    //here is another method
    $options = Mage::getResourceModel('eav/entity_attribute_option_collection');
    $values  = $options->setAttributeFilter($attribute->getId())->setStoreFilter($storeId)->toOptionArray();
    print_r($values);
mageUz
źródło
I jak zapisać go do 1 określonego widoku sklepu?
snh_nl