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); ?>

「画像」はありませんが、「small_image」属性はあります

Magentoを参照してください- バンドルされたオプション イメージを取得する方法

于 2012-11-20T12:01:05.440 に答える
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 に答える