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

与第二个自定义图像属性名称相同的代码将显示img_support图像。当我为这两个属性设置图像并选择它们时,它们会显示正常,但是当没有为这些属性上传和选择图像并且我尝试在产品视图页面上显示它时,它会生成错误。像这样的东西:

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 会使用占位符图像。
基本上,每个图像属性都必须在皮肤目录中有一个占位符图像,并以相应的属性代码命名。
在您的情况下,您应该为您的两个新属性创建两个新的占位符图像,img_support并且img_upgrade在此皮肤目录中:(images/catalog/product/placeholder/your_attribute_code.jpg使用新图像或使用基本占位符之一的副本)

于 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 回答