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

loc*_*ock 47 magento

我正在运行1.3.2.1版本,但在我的客户端服务器上,他们有Magento 1.3.0所以我以前的代码显示我的本地副本的图像,

echo $this->helper('catalog/image')->init($_product)->resize(163, 100);
Run Code Online (Sandbox Code Playgroud)

,不适用于客户端的安装.

查看他们的Magento返回的结果,版本1.3.0实际上返回一个URL,虽然它指向皮肤的媒体文件夹.

有没有办法获得图像的绝对图像路径?
或者我应该在其他地方进行更改,告诉Magento媒体目录应该在根目录下吗?

sil*_*lvo 55

echo $_product->getImageUrl();
Run Code Online (Sandbox Code Playgroud)

Product类的这个方法应该可以帮到你.

  • 别忘了添加它: - > addAttributeToSelect('image') (7认同)
  • @deprecated自1.1.5 (3认同)

Ric*_*ins 33

你可以尝试更换$this->通过Mage::在某些情况下.您需要转换为字符串.

在我的情况下,我使用DirectResize扩展 (直接链接),所以我的代码是这样的:

(string)Mage::helper('catalog/image')->init($_product, 'image')->directResize(150,150,3)
Run Code Online (Sandbox Code Playgroud)

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

  • 没有比例.图像将在"宽度"和"高度"值处调整大小.
  • 比例,基于宽度值2
  • 比例,基于高度值3
  • 新图像的比例可以适合宽度和高度值.4
  • 成比例的.新图像将覆盖具有宽度和高度值的区域.

更新:此处的其他信息和版本


没有插件的常见方式:

(string)Mage::helper('catalog/image')->init($_product, 'image')->resize(150)
Run Code Online (Sandbox Code Playgroud)

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


Rem*_*emy 13

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

$_product->getMediaGalleryImages()->getItemByColumnValue('label', 'LABEL_NAME')->getUrl();
Run Code Online (Sandbox Code Playgroud)

希望对你有所帮助!


小智 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);
    }

}
Run Code Online (Sandbox Code Playgroud)


Gow*_*wri 5

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

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

然后选择你的图像角色(基础,小,缩略图)在此输入图像描述

然后使用调用图像

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

希望这对你有所帮助.


Art*_*lev 5

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


小智 3

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

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

  • 我用它替换了我的行,问题仍然存在:( (2认同)