$ product-> getOptions () возвращает пустой результат


9

Я пытаюсь получить сведения о продукте, включая значение пользовательских параметров продукта, в созданном мной пользовательском блоке. Это код, который я использовал на странице сведений о продукте, и он работал там, но при попытке использовать его на странице пользовательского блока get Options возвращает пустое значение.

if ($ _product-> getId ()) {  
    foreach ($ _product-> getOptions () как $ opt) {  
    echo $ optionType = $ opt-> getType ();  
      if ($ optionType == 'drop_down') {  
        $ values ​​= $ opt-> getValues ​​();  
        foreach (значения $ как $ v)
        {
     $ mydata = $ v-> getTitle ();      
print_r ($ MYDATA);    
        }
      }  
    }   
}

Я новичок в magento, поэтому не уверен, что мне здесь не хватает.
Может ли кто-нибудь дать мне подсказку, пожалуйста,
спасибо


Смотрите этот ответ из связанной темы.
quickshiftin

Ответы:


2

Попробуй это:

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

        }
    }
}

1
не работает ... Когда я печатаю массив $ prodct, отображается вся информация, кроме пользовательских параметров, в то время как тот же код работает на странице просмотра продукта
Shivika Sharma

2

Проблема в том, что товар не полностью загружен в ваш блок. load()Метод гарантирует , что будет загружена вся информация объекта. Если вы используете только loadByAttribute()коллекцию, это не так.

Примером может быть:

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

Если вы хотите отобразить несколько продуктов, вы должны избегать их использования, load()поскольку это сильно негативно сказывается на производительности. Извините, что я не могу помочь вам с добавлением параметров в коллекцию.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.