Magento на русском

Новости, обмен опытом, база знаний для разработчиков.

Групповой продукт – показ картинок из привязанных продуктов

Хочу поделиться кодом, который в медиа галерее групового продукта показывает картинки из привязанных обычных продуктов.

Это очень удобно, в плане того, что создавая групповой товар вам не надо для него еще раз загружать изображения.

Всего – то переписываем один блок Mage_Catalog_Block_Product_View_Media

Кстати, одинаковые по размеру картинки – не показываются!

Вот такой код у меня получился:

<?php
class Oggetto_Ggallery_Block_Catalog_Product_View_Media extends Mage_Catalog_Block_Product_View_Media
{
public function getGalleryImages()
{
$ret = parent::getGalleryImages();
$product = $this->getProduct();
if($product->getTypeId() == ‘grouped’)
{
$associated = $product->getTypeInstance()->getAssociatedProducts();
if(is_array($associated) && count($associated))
{
foreach($associated as $item)
{
$item->load($item->getId());
$mediaGallery = $item->getData(’media_gallery’);
$mediaGalleryImages = $mediaGallery['images'];
if(is_array($mediaGalleryImages) && count($mediaGalleryImages))
{
foreach($mediaGalleryImages as $image)
{
if ($image['disabled'])
{
continue;
}
$image['product_id'] = $item->getId();
$image['url'] = $item->getMediaConfig()->getMediaUrl($image['file']);
$image['id'] = isset($image['value_id']) ? $image['value_id'] : null;
$image['path'] = $item->getMediaConfig()->getMediaPath($image['file']);
$imageobj = new Varien_Object();
$imageobj->setData($image);
if($this->canAddAssociatedPicture($imageobj, $ret))
{
$ret->addItem($imageobj);
}
}
}
}
}
}
if($product->getTypeId() == ‘configurable’)
{
$ids = Mage::getResourceSingleton(’catalog/product_type_configurable’)
->getChildrenIds($product->getId());
if(isset($ids[0]))
{
if(is_array($ids[0]) && count($ids[0]))
{
foreach($ids[0] as $item)
{
$item = Mage::getModel(’catalog/product’)->load($item);
$mediaGallery = $item->getData(’media_gallery’);
$mediaGalleryImages = $mediaGallery['images'];
if(is_array($mediaGalleryImages) && count($mediaGalleryImages))
{
foreach($mediaGalleryImages as $image)
{
if ($image['disabled'])
{
continue;
}
$image['product_id'] = $item->getId();
$image['url'] = $item->getMediaConfig()->getMediaUrl($image['file']);
$image['id'] = isset($image['value_id']) ? $image['value_id'] : null;
$image['path'] = $item->getMediaConfig()->getMediaPath($image['file']);
$imageobj = new Varien_Object();
$imageobj->setData($image);
if($this->canAddAssociatedPicture($imageobj, $ret))
{
$ret->addItem($imageobj);
}
}
}
}
}
}
}
return $ret;
}

protected function canAddAssociatedPicture($image, $added)
{
foreach($added as $existsimage)
{
if($existsimage->getData(’value_id’) && $image->getData(’value_id’))
{
if($existsimage->getData(’value_id’) == $image->getData(’value_id’)) {return false;}
}
else
{
return false;
}
if(filesize($image->getData(’path’)) == filesize($existsimage->getData(’path’)))
{
return false;
}
}
return true;
}

public function getGalleryUrl($image=null)
{
if(isset($image['product_id']))
{
$params = array(’id’=>$image['product_id']);
}
else
{
$params = array(’id’=>$this->getProduct()->getId());
}

if ($image) {
$params['image'] = $image->getValueId();
return $this->getUrl(’*/*/gallery’, $params);
}
return $this->getUrl(’*/*/gallery’, $params);
}
}

Похожие Magento-статьи:

  1. Программное создание ордера (заказа)
  2. генерация PDF стандартным модулем
  3. Картинки и групповой продукт
  4. Как внедрить RSS канал в Magento блок
  5. Простой пример кода начинающим разработчикам
  6. Добавляем продукт в магазин
  7. Как изменить тему в админке Magento
  8. SEO оптимизация поисковых урлов в Magento
  9. Как отправить письмо в Magento?

The URI to TrackBack this entry is: http://magento.verych.ru/2009/07/%d0%b3%d1%80%d1%83%d0%bf%d0%bf%d0%be%d0%b2%d0%be%d0%b9-%d0%bf%d1%80%d0%be%d0%b4%d1%83%d0%ba%d1%82-%d0%bf%d0%be%d0%ba%d0%b0%d0%b7-%d0%ba%d0%b0%d1%80%d1%82%d0%b8%d0%bd%d0%be%d0%ba-%d0%b8%d0%b7-%d0%bf/trackback/

Один комментарий для “Групповой продукт – показ картинок из привязанных продуктов”

  1. теперь я это всё оформил вот в такую штуку
    http://www.magentocommerce.com/extension/1561
    или ключ
    magento-community/Oggetto_Ggallery

Оставить комментарий

© 2009-2012 Magento по-русски 99% авторских статей