Как получить изображение продукта в Magento?


Answers

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

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

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

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

  • не пропорционально. Изображение будет изменено в соответствии с значениями ширины и высоты.
  • пропорционально, в зависимости от значения ширины 2
  • пропорционально, исходя из значения высоты 3
  • пропорциональное для нового изображения, может вписываться в значения Ширина и Высота. 4
  • пропорционально. Новое изображение будет охватывать область с значениями Ширина и Высота.

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

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

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

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

Question

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

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

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

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

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




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

Я настроил загрузку продуктов с кодом поставщика, равным «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);
    }

}



$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 



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

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

Теперь вы можете получить продукт sku с помощью $_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();



// 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;


}



(string)Mage::helper('catalog/image')->init($product, 'image');

это даст вам URL-адрес изображения, даже если изображение размещено на CDN.




Links



Tags

magento