Я создал настраиваемые продукты, которые имеют два связанных простых продукта. Когда я выбираю один из них и добавляю его в корзину, отображается правильное изображение вместе с правильной ценой и форматом.
Однако, если я сделаю то же самое и добавлю предмет в свой список пожеланий. Отображается правильная цена и информация о продукте, однако вместо простого выбранного продукта отображается изображение настраиваемых продуктов.
Это код, который я сделал до сих пор; однако теперь у меня нет изображения, отображаемого в моем списке желаний. Файл, который я изменяю, это 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'); ?>" />
ОК: Я вижу ошибку в вашем коде ->
**$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'];
После изменения вы сможете получить свой простой продукт.
ура
Я знаю, что это старый вопрос, но позвольте мне дать решение, которое мы реализовали, и это, наконец, сработало для нас.
Основная проблема заключается в том, что медиа-галерея должна быть инициализирована перед загрузкой изображений в этом случае.
Таким образом, код для загрузки изображений выглядит следующим образом:
/* @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
,
Но будьте осторожны, на самом деле, в приведенном выше коде необходимо выполнить еще несколько вещей, особенно когда продукт изначально добавлен в список. Выдвижение одного продукта через идентификатор элемента списка может привести к ошибке как конф. Сам товар вставлен в список.