隐藏产品没有图像magento


Hide Products without images magento

我按照这个答案在类别列表页面上隐藏没有图像的产品。它很好地工作了一段时间。

现在,由于某种原因,似乎没有图像的产品仍然显示在列表页面上。你知道为什么会这样吗?

注意:同样的列表。php页面正在被使用

谢谢。

将以下内容添加到list.phtm:

//$_productCollection=$this->getLoadedProductCollection();
$_productCollection = clone $this->getLoadedProductCollection();
$_productCollection->clear()
                   ->addAttributeToFilter('small_image', array('neq' => 'no_selection'))
                   ->load();

这个回答建议如下:

->addAttributeToFilter('image', array('neq' => 'no_selection'))

而我把它设置为:

->addAttributeToFilter('small_image', array('neq' => 'no_selection'))

上一个答案不起作用的原因是因为产品集合不加载常规图像,因此常规图像不能作为属性添加到filter中,因此,我将small_image作为属性添加到filter中。

您也可以尝试R.S的答案,他将图像添加到页面和集合中。您可能还必须使用:

添加所有属性。
->addAttributeToSelect('*')

有一些技巧可以让Magento保持一致。我学到的一件事是,Magento模型会因为许多不同的原因而改变,而且很难找出原因。有更好的方法可以做到这一点(修改集合等),但有时它就是不起作用,你没有几天的时间来找出原因。

如果你想确保你的图像存在,使用下面的代码…它可能不是"magento方式",但它是有效的,我在我的网站上测试了它(magento EE 1.12)。把它放在一个函数中,或者如果你愿意,直接在你的html中使用它!

它只是确保URL存在

$exists = false;
$entity_id = 8800;
$product = Mage::getModel('catalog/product')->load($entity_id);
$mediaUrl= Mage::getBaseUrl('media');
$imageUrl = $mediaUrl . "catalog/product" . $product->getImage();
$file_headers = @get_headers($imageUrl);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
    $exists = false;
}
else {
    $exists = true;
}
var_dump($exists);
var_dump($imageUrl);
echo '<img src="' . $imageUrl . '" />';

$exists要么为true(图像存在),要么为false(图像不存在)

我认为问题是你试图在列表上获得'image'(基本图像)属性。php(默认情况下我只能访问缩略图,small_image)。

列表。PHTML(不像view.pthml那样加载完整的产品资源)

echo $_product->getImage() //null
echo $_product->getThumbnail() // path/name.jpg
echo $_product->getSmallImage() // path/name.jpg

我认为你可能需要添加添加这样的东西到app/design/frontend/default/yourtheme/layout/catalog.xml

  <action method="addAttribute"><name>image</name></action>

参见如何在列表中访问自定义图像属性。