获取捆绑产品子产品的图像,当前返回占位符

时间:2012-11-20 11:16:41

标签: magento

我的问题:

我需要从类提供的减少的产品对象中检索主产品图像:Mage_Bundle_Model_Resource_Price_Index

我的代码证明了这个问题:

$_product = $this->getProduct();
$_options = Mage::helper('core')->decorateArray($this->getOptions());

foreach($_options as $_option):
    $_selections = $_option->getSelections();

    foreach ($_option->getSelections() as $tmpsel) {
        var_dump($tmpsel->getImageUrl());
    }

返回我的占位符图片:

http://dev.dev/media/catalog/product/cache/7/image/265x/0dc2d03fe217f8c83829496872af24a0/placeholder/default/logo_3.jpg

我的可怕和愚蠢的工作:

为了获得正确的Url图像,我已经使用了一个非常低效的全新产品对象。

foreach ($_option->getSelections() as $tmpsel) {
    $product = Mage::getModel("catalog/product")->load($tmpsel->getId());
    $image = Mage::helper('catalog/image')->init($product, 'image');        
    var_dump($image."");
}

这会正确返回: http://dev.dev/media/catalog/product/cache/7/image/0dc2d03fe217f8c83829496872af24a0/M/P/MP1428219-107-Main.jpg

我想做什么:

我希望能够将catalog/image帮助器与选择($ tmpsel)一起使用,但是当我尝试时,我最终会再次获得占位符图像。

foreach ($_option->getSelections() as $tmpsel) {
    $image = Mage::helper('catalog/image')->init($tmpsel, 'image');      
    var_dump($image."");
}

额外信息:

我想到的任何事情都可以帮助我添加

减少产品对象包括对图像的一些引用

  'small_image' => string '/M/P/MP1428219-107-Main.jpg'
  'thumbnail' => string '/M/P/MP1428219-107-Main.jpg' 

getSelection()

的描述

在:./ app / code / core / Mage / Bunle / Model / Resource / Price / Index.php

* Retrieve bundle options with selections and prices by product

该函数使用低级SQL生成集合,因此我可以随时扩展它以在需要时添加选项,但不确定哪些选项。


感谢您的阅读,希望有人能给我一个很好的方法,这样做,会不断更新。

3 个答案:

答案 0 :(得分:1)

Init()方法需要产品对象

init(Mage_Catalog_Model_Product $product, $attributeName, $imageFile=null)

尝试

<?php echo $this->helper('catalog/image')->init($tmpsel, 'small_image')->resize(40,40); ?>

你没有'image',但你有'small_image'属性

请参阅Magento - how to retrieve bundled option images

答案 1 :(得分:1)

要获取完整的网址,您可以使用以下代码:

Mage::getSingleton('catalog/product_media_config')->getMediaUrl($product->getImage()); 

限制是只带主图像。

答案 2 :(得分:0)

哇,哇,我想我可以感谢你堆叠溢出让我写下我的想法。

在比较完整的产品对象和半成品对象后,我可以看到我正在为catalog/image

调用错误的属性名称
$image = Mage::helper('catalog/image')->init($tmpsel, 'image');

应该是

$image = Mage::helper('catalog/image')->init($tmpsel, 'small_image');