3

システム -> 構成 -> カタログ -> 製品イメージ プレースホルダーのバックエンドに製品プレースホルダー イメージを設定しています。

次のコードを使用して、ビューの 1 つで製品のプレースホルダー イメージにプログラムでアクセスすることに半分成功しています。

$this->getSkinUrl($this->helper('catalog/image')->init(
Mage::getModel('catalog/product'), 'small_image'));

私の問題は、上記が返されることです:

http://x.dev/skin/frontend/base/default/http://x.dev/media/catalog/product/cache/7/small_image/0dc2d03fe217f8c83829496872af24a0/placeholder/default/logo_4.jpg*

getSkinUrl はそれが言うことを行い、文字列にスキンパスを追加するようです。これは私の本当の問題です。

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

しかし、上記のコードはスローします:

PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted

誰でもこれに問題があるのを見ることができますか?

あるいは、別の方法を知っている人はいますか?私は本当に立ち往生しており、ハードコーディングしたくありません。

ありがとう

4

1 に答える 1

13

私を正しい軌道に乗せてくれた@Lucasmusに感謝します。

私はこれを少しハッキーな方法で解決することになりましたが、うまくいきます。

Mage::getModel('catalog/product')->getSmallImageUrl(200,200);

これにより、[システム] -> [構成] -> [カタログ] -> [製品イメージ プレースホルダー] で設定された製品プレースホルダー イメージが取得されます。

編集

@Tyler Vが指摘したように、これは減価償却されたメソッドです。使用したくない場合は、メソッドの同じロジックを使用できます。これはもう少し冗長です。

    (string)Mage::helper('catalog/image')->init(
        Mage::getModel('catalog/product'),
        'small_image'
    )->resize(200, 200);
于 2012-10-06T17:52:44.883 に答える