$ product-> getOptions () повертає порожній результат


9

Я намагаюся отримати детальну інформацію про продукт, включаючи значення спеціальних параметрів продукту у створеному я користувальницькому блоці. Це код, який я використовував на сторінці деталей продукту, і він там працював, але при спробі його використання на користувацькій сторінці блоку отримати Опції повертає порожнє значення.

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

Я новачок у Магенто, тому не впевнений, що мені тут не вистачає.
Хто-небудь може дати мені підказку, будь ласка.
Дякую


Дивіться цю відповідь із пов’язаної теми.
скоромовка

Відповіді:


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.