【问题标题】:How to resize the categories images in Magento?如何在 Magento 中调整类别图像的大小?
【发布时间】:2012-01-03 10:59:34
【问题描述】:

如何在 Magento 中调整类别图像的大小?我使用以下代码调整产品图片的大小,但无法使用它来显示类别图片:

$this->helper('catalog/image')->init($_product, 'small_image')->resize(170);

【问题讨论】:

    标签: magento magento-1.9


    【解决方案1】:

    如果我没记错的话,应该是:

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

    【讨论】:

    • 我无法使用它,因为我正在使用“Mage::getModel('catalog/category')->load($_category->getId());”获取类别实例..上面的代码适用于单个产品..
    • 我试过这个,但不能使用这个.. 当我使用代码 $this->helper('catalog/image')->init($cur_category, 'thumbnail', $图像->getFile())->resize(100,100);它显示错误,例如“在 /app/design/frontend/default/default/template/easycatalogimg/subcategories.phtml 中的非对象上调用成员函数 getFile()”
    • 太棒了!!!它就像 Oğuz Çelikdemir 一样工作...... +1 用更新来回答问题......谢谢
    【解决方案2】:
     <?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
     ?>
    

    " />

    更多说明see here

    【讨论】:

      【解决方案3】:

      如果你想调整类别图片大小,here 是一个基于核心图片调整大小的免费模块。当我自己如此挣扎时,最终创建了这个扩展来轻松调整类别图像的大小,就像调整产品图像大小一样。

      【讨论】:

      • 如果主题文件夹中没有占位符,您希望将 Helper 的第 33 行替换为:$this-&gt;placeHolder = Mage::getDesign()-&gt;getSkinUrl('images/catalog/product/placeholder/image.jpg'); 以避免无限嵌套(通过使用上面的代码,magento 将回退到默认占位符)。否则很棒的代码,谢谢分享
      【解决方案4】:

      我意识到我迟到了,但我最近有机会看到这个,使用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 函数的作用类似。

      【讨论】:

        【解决方案5】:

        如果您需要在类别图像不断缩小到 475 像素宽时调整其大小,您可以通过从以下模板中删除 'width="475"' 来实现: app/design/frontend/default/default/template/catalog/category/view.phtml

        您可能还需要在后端关闭或清除缓存:系统 --> 缓存管理 --> 图像缓存 --> 清除。

        发件人:http://www.pridedesign.ie/content/magento-resize-category-image

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-10-05
          • 2012-12-02
          • 2011-10-27
          • 1970-01-01
          • 1970-01-01
          • 2014-04-14
          • 2023-03-06
          相关资源
          最近更新 更多