$ product-> getOptions () zwraca pusty wynik

9

Usiłuję uzyskać szczegółowe informacje o produkcie, w tym wartość opcji niestandardowych produktu w utworzonym przeze mnie bloku niestandardowym. Jest to kod, którego użyłem na stronie szczegółów produktu i działał tam, ale gdy próbuję użyć go na stronie niestandardowego bloku, Opcje zwracają pustą wartość.

if ($ _product-> getId ()) {  
    foreach ($ _product-> getOptions () jako $ opt) {  
    echo $ optionType = $ opt-> getType ();  
      if ($ optionType == 'drop_down') {  
        $ wartości = $ opt-> getValues ​​();  
        foreach (wartości $ jako $ v)
        {
     $ mydata = $ v-> getTitle ();      
print_r ($ mydata);    
        }
      }  
    }   
}

Jestem nowy w Magento, więc nie jestem pewien, co tu brakuje.
Czy ktoś może mi podpowiedzieć,
dziękuję

Shivika Sharma
źródło
Zobacz tę odpowiedź z powiązanego wątku.
szybka zmiana w dniu

Odpowiedzi:

2

Spróbuj tego:

if (Mage::registry('current_product')) {
    $product = Mage::registry('current_product');
} else {
    $product = Mage::getSingleton('catalog/product');
}


if ($product->getId()) {
    if ($product->hasCustomOptions()) {
        foreach ($product->getOptions() as $option) {
            $optionType = $option->getType();
            if ($optionType == 'drop_down') {
                $values = $option->getValues();
                foreach ($values as $k => $value) {
                    print_r($value);
                }
            }

        }
    }
}
Abdul
źródło
1
nie działa ... Kiedy drukuję tablicę $ prodct, wyświetlane są wszystkie informacje oprócz opcji niestandardowych, gdy ten sam kod działa dobrze na stronie widoku produktu
Shivika Sharma
2

Problem polega na tym, że produkt nie jest w pełni załadowany w twoim bloku. load()Metoda zapewnia, że wszystkie informacje obiektu jest załadowany. Jeśli używasz tylko loadByAttribute()lub kolekcji, tak nie jest.

Przykładem może być:

$product = Mage::getModel('catalog/product')->load($productId);

Jeśli chcesz wyświetlać wiele produktów, powinieneś unikać korzystania z nich, load()ponieważ ma to duży negatywny wpływ na wydajność. Przepraszam, że nie mogę pomóc w dodawaniu opcji do kolekcji.

simonthesorcerer
źródło