$ product-> getOptions () mengembalikan hasil kosong

9

Saya mencoba untuk mendapatkan detail produk termasuk nilai opsi kustom produk di blok kustom yang saya buat. Ini adalah kode yang saya gunakan pada halaman detail produk dan berfungsi di sana, tetapi ketika mencoba menggunakannya pada halaman blok kustom, Options mendapatkan Pilihan mengembalikan nilai kosong.

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

Saya baru mengenal Magento jadi tidak yakin apa yang saya lewatkan di sini.
Adakah yang bisa memberi saya petunjuk tolong
Terima kasih

Shivika Sharma
sumber
Lihat jawaban ini dari utas terkait.
quickshiftin

Jawaban:

2

Coba ini:

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
sumber
1
tidak berfungsi ... Ketika saya mencetak array $ prodct, semua informasi ditampilkan kecuali opsi khusus sementara kode yang sama berfungsi dengan baik di halaman tampilan produk
Shivika Sharma
2

Masalahnya adalah bahwa produk tidak dimuat sepenuhnya di blok Anda. The load()Metode memastikan bahwa semua informasi dari suatu objek dimuat. Jika Anda hanya menggunakan loadByAttribute()atau koleksi, ini tidak terjadi.

Contohnya adalah:

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

Jika Anda ingin menampilkan banyak produk, sebaiknya hindari penggunaan load()karena memiliki dampak kinerja negatif yang kuat. Maaf saya tidak dapat membantu Anda dengan menambahkan opsi ke koleksi.

simonthesorcerer
sumber