如何在Magento中获得产品图像?

时间:2010-03-18 23:49:08

标签: magento

我正在使用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 个答案:

答案 0 :(得分:54)

echo $_product->getImageUrl();

Product类的这个方法可以帮到你。

答案 1 :(得分:32)

在某些情况下,您可以尝试将$this->替换为Mage::。您需要转换为字符串。

就我而言,我正在使用DirectResize extension (direct link),所以我的代码是这样的:

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

比率选项(第3个参数)是:

  • 无比例。图像将在“宽度”和“高度”值处调整大小。
  • 比例,基于宽度值2
  • 比例,基于高度值3
  • 新图像的比例可以适合宽度和高度值。 4
  • 成正比。新图像将覆盖宽度和高度值的区域。

更新:其他信息和版本here


常见的方式,没有插件

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

您可以将'image'替换为'small_image'或'thumbnail'。

答案 2 :(得分:13)

我最近也需要这样做......这就是我如何做到的:

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

希望能帮到你!

答案 3 :(得分:8)

以下是我发现加载集合中所有产品的所有图像数据的方法。我现在不确定为什么需要从Mage :: getModel切换到Mage :: helper并重新加载产品,但必须完成。我已经从magento图像soap api反向设计了这个代码,所以我很确定它是正确的。

我已将其设置为加载供应商代码等于'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);
    }

}

答案 4 :(得分:5)

首先您需要验证在Magento管理员中选择基本,小图像和缩略图。

admin-> catalog-> manage product-> product-> image

然后选择您的图片角色(基本,小,缩略图)enter image description here

然后使用

调用图像
  

echo $ this-> helper('catalog / image') - > init($ _ product,   'small_image') - >调整大小(163,100);

希望这会对你有所帮助。

答案 5 :(得分:4)

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


}

答案 6 :(得分:4)

<img src='.$this->helper('catalog/image')->init($product, 'small_image')->resize(225, 225).' width=\'225\' height=\'225\'/>

答案 7 :(得分:3)

如果您有产品集合对象,请执行以下操作:

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

现在,如果无法使用

获取图像路径,则可以使用$_product->getSku()获取产品sku
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();

答案 8 :(得分:2)

您需要设置图像类型:small_image或image

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

答案 9 :(得分:2)

$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 

答案 10 :(得分:1)

使用产品ID

获取magento中的产品图片
    $product_id = $_POST['product_id'];
    $storeId    = Mage::app()->getStore()->getId();
    $loadpro    = Mage::getModel('catalog/product')->load($product_id);

    $mediaApi      =  Mage::getModel("catalog/product_attribute_media_api");
    $mediaApiItems = $mediaApi->items($loadpro->getId());
    foreach ($mediaApiItems as $item) {
            //for getting existing Images
            echo $item['file'];
            }

答案 11 :(得分:0)

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

这将为您提供图片网址,即使图片托管在CDN上也是如此。