2

カスタム画像属性を作成し、Magento で設定されたデフォルト属性に追加しました。私の新しい属性はimg_supportimg_upgradeです。次のコードを使用して、製品ビュー ページに両方の画像を表示しました。

<?php if ($_product->getimg_upgrade()):
 $_img = '<img src="'.$this->helper('catalog/image')->init($_product, 'img_upgrade')->resize(85).'" alt="'.$this->htmlEscape($this->getImageLabel()).'" title="'.$this->htmlEscape($this->getImageLabel()).'"  "/>';
 echo $_helper->productAttribute($_product, $_img, 'img_upgrade');
 endif; 
?>

2 番目のカスタム イメージ属性名を持つ同じコードは、img_supportイメージを表示します。これらの 2 つの属性に対して画像を設定して選択すると、正常に表示されますが、これらの属性に対して画像がアップロードおよび選択されておらず、製品ビュー ページに表示しようとすると、エラーが発生します。このようなもの:

a:5:{i:0;s:25:"Image file was not found.";i:1;s:3911:"#0 C:\Program Files\EasyPHP-    5.3.8.0\www\mymagentoroot\app\code\core\Mage\Catalog\Helper\Image.php(163):
Mage_Catalog_Model_Product_Image->setBaseFile('no_selection').....

そしてその後の長いトレース。したがって、基本的には、画像が選択されていなくても画像を取得します。選択した製品の製品ビュー ページにカスタム イメージを表示する方法を教えてください。私は、デフォルトの属性が設定された10個の製品を持っています。したがって、これらの 10 個の製品はすべて img_support と img_upgrade で設定できますが、選択した 5 個の製品でのみカスタム イメージを表示したいと考えています。画像が表示されるように設定されている場合。そうでなければしないでください。これどうやってするの?これを行うための他の適切な方法またはより良い方法がある場合は、ここで私を助けてください. ありがとう!

4

2 に答える 2

14

商品に特定の属性の画像がない場合、Magentoは代わりにプレースホルダー画像を使用します。
基本的に、各画像属性は、対応する属性コードで名前が付けられた、スキンディレクトリ内のプレースホルダー画像を持っている必要があります。
あなたの場合、2つの新しい属性に対して2つの新しいプレースホルダー画像を作成する必要があります。img_supportこのimg_upgradeスキンディレクトリに:(images/catalog/product/placeholder/your_attribute_code.jpg新しい画像またはベースプレースホルダーの1つのコピーを使用して)

于 2012-07-27T08:12:29.783 に答える
0

この問題は、その属性の画像をアップロードした後、突然 FTP 経由で画像ファイルを削除した場合にも発生します。サイトを下に表示するのはよくありません。要約すると、これを修正するには 3 つの方法があります: 1) @blmage の回答: プレースホルダーを使用する 2) try catch を使用する:

<?php 
try {
if ($_product->getimg_upgrade()):
 $_img = '<img src="'.$this->helper('catalog/image')->init($_product, 'img_upgrade')->resize(85).'" alt="'.$this->htmlEscape($this->getImageLabel()).'" title="'.$this->htmlEscape($this->getImageLabel()).'"  "/>';
 echo $_helper->productAttribute($_product, $_img, 'img_upgrade');
 endif; 
}
catch (Exception $e) {

}
?> 
  1. ファイルが存在するかどうかを確認します

    getBaseMediaPath(); $baseFile = $baseDir . $_product->getImgUpgrade(); if (file_exists($baseFile)) { } ?>
于 2016-11-03T07:05:54.490 に答える