$ 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.