Как получить изображение товара в Magento? - PullRequest
46 голосов
/ 19 марта 2010

Я работаю на версии 1.3.2.1, но на сервере моего клиента у них был Magento 1.3.0 поэтому мой предыдущий код для отображения изображений для моей локальной копии,

echo $this->helper('catalog/image')->init($_product)->resize(163, 100);

, не работает при установке клиента.

Глядя на результаты, возвращаемые их Magento, версия 1.3.0 фактически возвращает URL, хотя и указывает на папку мультимедиа скина.

Есть ли способ получить абсолютный путь к изображению для изображения?
Или я должен внести изменения где-нибудь еще, чтобы сообщить Magento, что каталог мультимедиа должен находиться в корневом каталоге?

Ответы [ 12 ]

54 голосов
/ 04 июля 2010
echo $_product->getImageUrl();

Этот метод класса Product должен помочь вам.

32 голосов
/ 13 января 2012

В некоторых случаях вы можете попробовать заменить $this-> на Mage::. Вам необходимо преобразовать в строку.

В моем случае я использую расширение DirectResize (прямая ссылка) , поэтому мой код выглядит так:

(string)Mage::helper('catalog/image')->init($_product, 'image')->directResize(150,150,3)

Опции отношения (3-й параметр):

  • не пропорционально. Размер изображения будет изменен на значения ширины и высоты.
  • пропорционально, на основе значения Width 2
  • пропорциональный, основанный на значении высоты 3
  • пропорционально для нового изображения может поместиться в значениях ширины и высоты. 4 * * тысяча двадцать-один * * 1 022 пропорционально. Новое изображение покроет область со значениями ширины и высоты.

Обновление: другая информация и версии здесь


Обычный способ, без плагина, будет :

(string)Mage::helper('catalog/image')->init($_product, 'image')->resize(150)

Вы можете заменить 'изображение' на 'small_image' или 'thumbnail'.

13 голосов
/ 16 сентября 2011

Мне недавно тоже нужно было это сделать ... вот как я к этому пришел:

$_product->getMediaGalleryImages()->getItemByColumnValue('label', 'LABEL_NAME')->getUrl();

Надеюсь, что это поможет вам!

8 голосов
/ 16 мая 2012

Вот способ, которым я нашел, чтобы загрузить все данные изображения для всех продуктов в коллекции. В настоящее время я не уверен, почему необходимо переключиться с Mage :: getModel на Mage :: helper и перезагрузить продукт, но это необходимо сделать. Я разработал этот код из мыльного API-интерфейса magento image, поэтому уверен, что он правильный.

У меня настроено загружать продукты с кодом поставщика, равным '39', но вы можете изменить его на любой атрибут, или просто загрузить все продукты или загрузить любую нужную коллекцию (включая коллекции в файлах phtml, показывающих продукты на данный момент на экране!)

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addFieldToFilter(array(
    array('attribute'=>'vendor_code','eq'=>'39'),
));

$collection->addAttributeToSelect('*');

foreach ($collection as $product) {

    $prod = Mage::helper('catalog/product')->getProduct($product->getId(), null, null);

    $attributes = $prod->getTypeInstance(true)->getSetAttributes($prod);

    $galleryData = $prod->getData('media_gallery');

    foreach ($galleryData['images'] as &$image) {
        var_dump($image);
    }

}
5 голосов
/ 01 ноября 2011

Сначала Вам необходимо убедиться, что базовое, маленькое и миниатюрное изображение выбраны в Magento admin.

admin-> каталог-> управление продуктом-> продукт-> изображение

Затем выберите роли изображения (базовый, маленький, миниатюра) enter image description here

Затем вы называете изображение, используя

echo $ this-> helper ('catalog / image') -> init ($ _ product, 'small_image') -> изменить размер (163, 100);

Надеюсь, это поможет вам.

4 голосов
/ 08 апреля 2014
<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/>
4 голосов
/ 22 марта 2012
// Let's load the category Model and grab the product collection of that category

$product_collection = Mage::getModel('catalog/category')->load($categoryId)->getProductCollection();

// Now let's loop through the product collection and print the ID of every product 
foreach($product_collection as $product) {
  // Get the product ID

$product_id = $product->getId();

  // Load the full product model based on the product ID

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

  // Now that we loaded the full product model, let's access all of it's data

  // Let's get the Product Name

  $product_name = $full_product->getName();

  // Let's get the Product URL path

  $product_url = $full_product->getProductUrl();

  // Let's get the Product Image URL

  $product_image_url = $full_product->getImageUrl();

  // Let's print the product information we gathered and continue onto the next one

 echo $product_name;

  echo $product_image_url;


}
3 голосов
/ 20 декабря 2012

Если у вас есть объект коллекции продуктов, например:

$collection = Mage::getModel('catalog/product')->getCollection(); 

Теперь вы можете получить код продукта с помощью $_product->getSku(), если вы не можете получить путь к изображению с помощью

echo $this->helper('catalog/image')->init($_product,'small_image')->resize(135);

или

$_product->getImageUrl();

Тогда вы можете добавить маленький код

$productModel = Mage::getModel('catalog/product');
$_prod = $productModel->loadByAttribute('sku', $_product->getSku()); 
$_prod->getImageUrl();
2 голосов
/ 07 мая 2012
$model = Mage::getModel('catalog/product'); //getting product model
$_products = $model->getCollection(); //getting product object for particular product id
foreach($_products as $_product) { ?>
    <a href = '<?php echo $model->load($_product->getData("entity_id"))->getUrl_path(); ?>'> <img src= '<?php echo $model->load($_product->getData("entity_id"))->getImageUrl();  ?>' width="75px" height="75px"/></a>
     <?php echo "<br/>".$model->load($_product->getData("entity_id"))->getPrice()."<br/>". $model->load($_product->getData("entity_id"))->getSpecial_price()."<br/>".$model->load($_product->getData("entity_id"))->getName()?>
<?php 
2 голосов
/ 19 марта 2010

Вам необходимо установить тип изображения: small_image или image

echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(163, 100);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...