发生这种情况的原因是该image
属性未加载到产品列表中。通常,您可以在编辑属性时更改此设置,但您无法编辑此属性的这些设置。我认为那是因为它是股票属性。
TLDR;
UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106;
** 警告,在您确定实体的image
attribute_id 为106之前,您不应执行此 ^^^ 查询!catalog_product
一些答案建议使用这种方法:
$_product = Mage::getModel('catalog/product')->load($_item->getProduct()->getId());
echo $this->helper('catalog/image')->init($_product, 'image')->resize(38, 38);
你不应该这样做!这是因为您将执行完整的产品加载!这效率不高,而且很可能是在更糟糕的循环内完成的!对不起尖叫!
我通常不会容忍直接的数据库编辑,但在这种情况下,它对我来说是最简单的解决方案:
# First make sure we are using all the right IDs, who knows, I have seen some fubar'ed deployments
SELECT entity_type_id FROM eav_entity_type WHERE entity_type_code = 'catalog_product';
# 10
SELECT attribute_id FROM eav_attribute WHERE attribute_code = 'image' AND entity_type_id = 10;
# 106
# Now that we know the exact attribute_id....
UPDATE catalog_eav_attribute SET used_in_product_listing = 1 WHERE attribute_id = 106;
现在image
属性数据将自动加载到产品列表页面上,然后您可以像这样访问它:
echo $this->helper('catalog/image')->init($_product, 'image');
最好的部分是您不会循环加载整个产品!永远不要那样做
** 另外,因为我知道我会让人们说这不是 Magento 方式,替代方法是创建一个模块,该模块具有运行该命令的 SQL 设置脚本。