3

注文メールで商品画像を表示するために、次のコードを template/email/order/items/order/default.phtml に記述しました。

<?php 
$_product = Mage::getModel('catalog/product')
                ->setStoreId($_item->getOrder()->getStoreId())
                ->load($_item->getProductId());
?> 
<img src="<?php echo Mage::helper('catalog/image')
                         ->init($_product, 'image')
                         ->constrainOnly(TRUE)
                         ->keepAspectRatio(TRUE)
                         ->keepFrame(FALSE)
                         ->resize(50,50); ?>" 
alt="<?php echo $_item->getName() ?>" />

それは正常に動作します。オーダーメールにリサイズした商品画像を表示します。

ただし、問題が 1 つあります。

製品イメージはmedia/catalog/product/cache ディレクトリから取得されます。また、Magento Admin (システム > キャッシュ管理) からイメージ キャッシュをフラッシュすると、以前に表示されていた製品イメージが注文メールに表示されません。これは、イメージ キャッシュをフラッシュすると、media/catalog/product/cacheディレクトリからすべてのキャッシュ イメージがクリアされるためです。

この問題の適切な解決策は何でしょうか? 注文メールで商品画像を表示するのは良い考えですか?

4

1 に答える 1

11

これを試して:

<img src="<?php echo Mage::getModel('catalog/product_media_config')
                 ->getMediaUrl($_product->getThumbnail()); ?>" 
 alt="<?php echo $_item->getName() ?>" />

商品のさまざまな画像に getSmallImage()、getThumbnail() を使用できます。

于 2012-09-08T11:10:21.603 に答える