Настраиваемый продукт отображается в списке пожеланий Magento вместо выбранного простого продукта

Я создал настраиваемые продукты, которые имеют два связанных простых продукта. Когда я выбираю один из них и добавляю его в корзину, отображается правильное изображение вместе с правильной ценой и форматом.

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

Это код, который я сделал до сих пор; однако теперь у меня нет изображения, отображаемого в моем списке желаний. Файл, который я изменяю, это app / design / frontend / customtheme / default / template / wishlist / item / column / image.phtml

<?php
$item = $this->getItem();
$product = $item->getProduct();
$item_s = Mage::getModel('wishlist/item')->loadWithOptions($item->getId(), 'simple_product')->getOptionsByCode();
$simple_product = $item_s['simple_product']->getData();
$simple_product_id = $simple_product_data['product_id'];
$simple_product_attr = Mage::getModel('catalog/product')->load($simple_product_id);
?>
<a class="product-image" href="<?php echo $this->getProductUrl($item) ?>" title="<?php echo $this->escapeHtml($product->getName()) ?>">
<img src="<?php echo $this->helper('catalog/image')->init($simple_product_attr ,'small_image'); ?>" alt="<?php echo $this->escapeHtml($product->getName()) ?>" />
</a>

Также вот код с удаленным посторонним кодом:

$item = $this->getItem();
$product = $item->getProduct();
$item_s = Mage::getModel('wishlist/item')
->loadWithOptions($item->getId(), 'simple_product')
->getOptionsByCode();
$simple_product = $item_s['simple_product']->getData();
$simple_product_id = $simple_product_data['product_id'];
$simple_product_attr = Mage::getModel('catalog/product')
->load($simple_product_id);
<img src="<?php echo $this->helper('catalog/image')
->init($simple_product_attr ,'small_image'); ?>" />

1

Решение

ОК: Я вижу ошибку в вашем коде ->

  **$simple_product** = $item_s['simple_product']->getData();
$simple_product_id = **$simple_product_data**['product_id'];

изменить на

    $simple_product = $item_s['simple_product']->getData();
$simple_product_id = $simple_product['product_id'];

После изменения вы сможете получить свой простой продукт.

ура

1

Другие решения

Я знаю, что это старый вопрос, но позвольте мне дать решение, которое мы реализовали, и это, наконец, сработало для нас.

Основная проблема заключается в том, что медиа-галерея должна быть инициализирована перед загрузкой изображений в этом случае.

Таким образом, код для загрузки изображений выглядит следующим образом:

/* @var Mage_Wishlist_Model_Item $item */
$item = $this->getItem();
$product = $item->getProduct();

if ($product->getTypeId() == 'configurable') {
// Initialize media gallery
$mediaBackend = Mage::getModel('catalog/product_attribute_backend_media');
$mediaGalleryAttribute = Mage::getModel('eav/config')->getAttribute(Mage::getModel('catalog/product')->getResource()->getTypeId(), 'media_gallery');
$mediaBackend->setAttribute($mediaGalleryAttribute);

// Get simple product
$item_s = Mage::getModel('wishlist/item')
->loadWithOptions($item->getId(), 'simple_product')
->getOptionsByCode();
$simple_product = $item_s['simple_product']->getData();
$simple_product_id = $simple_product['product_id'];

// Load the product
$product = Mage::getModel('catalog/product')->load($simple_product_id);

// Finally load the images
$mediaBackend->afterLoad($product);
}

Когда это будет сделано, вы можете вызвать и отобразить изображение, как это уже сделано в шаблоне:

echo $this->helper('catalog/image')->init($product, 'small_image')->resize(750,900);

Это всего лишь прототип, который мы сделали в шаблоне image.phtml списка пожеланий. Лучшим решением было бы реализовать этот код в классе Model, в случае, если список пожеланий, возможно, имеет приоритет Wishlist/Model/Item.php,

Но будьте осторожны, на самом деле, в приведенном выше коде необходимо выполнить еще несколько вещей, особенно когда продукт изначально добавлен в список. Выдвижение одного продукта через идентификатор элемента списка может привести к ошибке как конф. Сам товар вставлен в список.

0