0

我的问题:

我需要从类提供的缩减产品对象中检索主要产品图像: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/Bundle/Model/Resource/Price/Index.php

* Retrieve bundle options with selections and prices by product

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


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

4

3 回答 3

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 - 如何检索捆绑的选项图像

于 2012-11-20T12:01:05.440 回答
1

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

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

限制是只带主图像。

于 2013-07-15T13:33:36.367 回答
0

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

比较完整产品对象和半产品对象后,我可以看到我调用了不正确的属性名称catalog/image

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

本来应该

$image = Mage::helper('catalog/image')->init($tmpsel, 'small_image');
于 2012-11-20T12:00:58.633 回答