如何在Magento中调整分类图片的大小?

5
如何调整Magento中的分类图像大小? 我使用了以下代码来调整产品图像的大小,但无法用于显示分类图像:
$this->helper('catalog/image')->init($_product, 'small_image')->resize(170);
5个回答

5
如果我没有弄错的话,应该是:
init($_product, 'small_image')->resize(100,100);

// single parameter work with 'image'
init($_product, 'image')->resize(100);

// How about this
$this->helper('catalog/image')->init($this->getProduct(), 'thumbnail', $image->getFile())->resize(100,100);

以下是新代码。如果您在使用之前告诉我使用的是哪个扩展名,我们将迅速解决问题。 如果没记错的话,您使用了Template Monster Catalog Image Extension。所以,在扩展中有一个如下的函数。

// app/design/frontend/default/default/template/easycatalogimg/homepage.phtml
<?php echo Mage::helper('easycatalogimg/image')->resize($imageUrl, $width , $height) ?>

1
我不能使用这个,因为我正在使用“Mage::getModel('catalog/category')->load($_category->getId());”来获取类别实例。上面的代码适用于单个产品。 - balanv
我已经尝试过这个,但无法使用它。 当我使用代码 $this->helper('catalog/image')->init($cur_category, 'thumbnail', $image->getFile())->resize(100,100); 时,会显示错误信息: “在/app/design/frontend/default/default/template/easycatalogimg/subcategories.phtml中调用一个非对象的成员函数getFile()”。 - balanv
太好了!就像Oğuz Çelikdemir所说的那样,它可以正常工作...因为您回答问题并提供更新,我给您点赞...谢谢。 - balanv

3
 <?php
               $_file_name = $cat->getThumbnail(); // Here $cat is category data array                
$_media_dir = Mage::getBaseDir('media') . DS . 'catalog' . DS . 'category' . DS;
                $cache_dir = $_media_dir . 'resize' . DS; // Here i create a resize folder. for upload new category image

if (file_exists($cache_dir . $_file_name)) {
                             $catImg =Mage::getBaseUrl('media') .  'catalog' . DS . 'category' . DS . 'resize' . DS . $_file_name;
                         } elseif (file_exists($_media_dir . $_file_name)) {
                             if (!is_dir($cache_dir)) {
                                 mkdir($cache_dir);
                             }

                             $_image = new Varien_Image($_media_dir . $_file_name);
                             $_image->constrainOnly(true);
                             $_image->keepAspectRatio(false);
                             $_image->keepFrame(false);
                             $_image->keepTransparency(true);
                             $_image->resize(224, 174); // change image height, width
                             $_image->save($cache_dir . $_file_name);
                             $catImg = Mage::getBaseUrl('media') . 'catalog' . DS . 'category' . DS . 'resize' . DS . $_file_name;
                         }
 echo  $catImg ; // display resize category thumbnail imagename
 ?>

" />

为了更好的理解,请参考这里


2
如果您想调整分类图像大小,这里有一个基于核心图像调整的免费模块。由于我自己也遇到了一些困难,因此最终创建了这个扩展程序,以便像调整产品图像大小一样轻松地调整分类图像大小。

1
你想将 Helper 的第33行替换为以下代码:$this->placeHolder = Mage::getDesign()->getSkinUrl('images/catalog/product/placeholder/image.jpg');,以避免在主题文件夹中没有占位符时出现无限嵌套(通过使用上述代码,Magento 将回退到默认的占位符)。否则,这是一段很棒的代码,感谢分享。 - srgb

1
我意识到我来晚了,但最近我有机会看了一下这个问题,使用init()调整产品图片的大小是完全可以的,就像问题描述的那样,但你不应该使用同一个函数来调整单个图片的大小,通过一个函数,其中图像本身(第三个参数)是可选值。
以下是我所做的调整图像的方法,适用于任何图像:
$model = Mage::getModel('catalog/product_image');
$model->setBaseFile('test.png');
$model->setWidth(100);
$model->resize();
$model->saveFile();
echo $model->getUrl();
// generates the following url: http://example.com/media/catalog/product/cache/1//9df78eab33525d08d6e5fb8d27136e95/test.png

如果你不想将图像保存在“media”目录中,那么可以使用“Varien_Image”对象来实现:
$varienImage = new Varien_Image('test.png');
$varienImage->resize(100);
$varienImage->save('var', 'test2.png');

save()函数的第一个参数是你想要保存新文件的目录,第二个参数是新文件的名称。

这些步骤与init函数类似,除了需要处理产品本身的一些逻辑。


0
如果您需要调整类别图像的大小,因为它不断缩小到475像素宽,您可以通过从以下模板中删除“width =” 475“”来实现: app/design/frontend/default/default/template/catalog/category/view.phtml
您可能还需要在后端关闭或清除缓存:系统->缓存管理->图像缓存->清除。
来源:http://www.pridedesign.ie/content/magento-resize-category-image

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接