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.

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

I jak zapisać go do 1 określonego widoku sklepu?
snh_nl
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.