Magento原始图像调整大小仅显示占位符图像

时间:2013-04-08 18:08:57

标签: php magento

我想让这段代码在magento 1.7.0中运行......

它只显示magento占位符图像...

如果我将“image”更改为“small_image”,则可以正常使用

在后端设置了所有内容,为产品图片选择了单选按钮...我也清除了缓存......

这发生在list.phtml文件中......

有人可以告诉我我做错了什么或为什么它不起作用...我一直在搜索我找到一个解决方案3天的搜索后它没有用....

$ _ item未定义,所以我得到一个非对象错误的调用...

这是answere的链接

Get base product image in Magento

<?php echo $this->helper('catalog/image')->init($_product, 'image')->resize(171, 259);

5 个答案:

答案 0 :(得分:8)

我会尝试......

a)将addAttributeToSelect('image')添加到列表块中的产品集合中(假设它是本地的)。

...或......(警告:这是hacky而不是最佳做法)

b)在list.phtml文件中,从您已有的产品ID中加载完整的产品

$productId = $_product->getId();
$_product = Mage::getModel('catalog/product')->load($productId);
echo $this->helper('catalog/image')->init($_product, 'image')->resize(171, 259);

答案 1 :(得分:1)

我在论坛中找不到一些东西。所以我分享我对这个问题的解决方案,你必须改变:
Mage::setIsDeveloperMode(true);Mage::setIsDeveloperMode(false);

答案 2 :(得分:1)

由于这个帖子首先出现在谷歌中,我把我的经验放在这里。上述解决方案不适用于view.phtml / media.phtml模板。那里已经加载了属性。在我的情况下,它不起作用,因为服务器的内存限制不足以进行图像大小调整过程。它确实适用于默认媒体模板(resize(56)),因为它使用已生成的默认大小。我将`ini_set('memory_limit','1024M')'添加到我的index.php来修复它。

我没有立刻想到它,因为我的php.ini已经设置为1024M。 Magento在.htaccess(php值memory_limit -1)中覆盖了它,这在某种程度上对我的配置不起作用。

答案 3 :(得分:0)

在我阅读了@Meyer所说的内容后,我解决了这个问题。确保开发者模式设置为 false 这可以通过根 .htaccess文件来完成,方法是将其设置为文件末尾:

SetEnv MAGE_IS_DEVELOPER_MODE "true"

这将做什么设置:

index.php文件中的

Mage::setIsDeveloperMode(true);Mage::setIsDeveloperMode(false);

答案 4 :(得分:0)

检查集合是否加载了图像属性:

$productId = 1234;
$product = Mage::getModel('catalog/product')
    ->load($productId);
echo (string)Mage::helper('catalog/image')->init($product, 'image')->resize(75, 75);
echo (string)Mage::helper('catalog/image')->init($product, 'small_image')->resize(75, 75);
echo (string)Mage::helper('catalog/image')->init($product, 'thumbnail')->resize(75, 75);

如果这只给你一些占位符,那么该集合没有加载图像。

您可以像

那样扩展您的收藏
$collection = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToSelect('small_image') //or
        ->addAttributeToSelect('thumbnail')  //or
        ->addAttributeToSelect('image');

或改为使用媒体配置:

$prodImage = Mage::getModel('catalog/product_media_config')->getMediaUrl($product->getThumbnail());

或使用

$prodImage = Mage::getResourceSingleton('catalog/product')->getAttributeRawValue($productId, 'image', Mage::app()->getStore());

FLAT TABLES

这可能是由平台引起的。检查您是否启用了平面表:

  

系统&gt;配置&gt;目录&gt;目录&gt;前端&gt;使用Flat   目录产品

如果是,请检查平面表是否包含图像属性:

describe catalog_product_flat_1; // number varies depending on store

如果image属性不是平面表的一部分,只需将以下代码添加到app / etc / config.xml

即可将其添加到表中。
<config>
    <frontend>
        <product>
            <collection>
                <attributes>
                    <image />
               </attributes>
            </collection>
        </product>
    </frontend>
</config>