$ product-> getOptions () retorna resultado vazio


9

Estou tentando obter detalhes do produto, incluindo o valor das opções personalizadas do produto, em um bloco personalizado que eu criei. Este é o código que eu usei na página de detalhes do produto e funcionou lá, mas ao tentar usá-lo na página de bloco personalizado, as opções retornam valor vazio.

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

Eu sou novo no magento, então não tenho certeza do que estou perdendo aqui.
Alguém pode me dar uma dica, por favor
Obrigado


Veja esta resposta em um tópico relacionado.
— quickshiftin

Respostas:


2

Tente o seguinte:

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

        }
    }
}

11
não trabalhando ... Quando eu imprimir o array $ prodct toda a informação está sendo mostrado, exceto as opções personalizadas enquanto o mesmo código está funcionando bem na página de visualização do produto
— Shivika Sharma

2

O problema é que o produto não está totalmente carregado no seu bloco. O load()método garante que todas as informações de um objeto sejam carregadas. Se você usar apenas loadByAttribute()uma coleção, esse não é o caso.

Um exemplo seria:

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

Se você deseja exibir vários produtos, evite usá- load()los, pois isso tem um forte impacto negativo no desempenho. Lamentamos, mas não posso ajudá-lo a adicionar opções a uma coleção.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.