Как изменить размер изображений категорий в Magento?

Как изменить размер изображений категорий в Magento? Я использовал следующий код для изменения размера изображений продуктов, но я не могу использовать его для отображения изображений категорий:

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

person balanv    schedule 03.01.2012    source источник


Ответы (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) ?>
person Oğuz Çelikdemir    schedule 03.01.2012
comment
Я не могу использовать это, потому что использую Mage::getModel('catalog/category')-›load($_category-›getId()); чтобы получить экземпляр категории.. приведенный выше код работает для отдельных продуктов.. - person balanv; 03.01.2012
comment
Я пробовал это, но не могу использовать это. Когда я использую код $this-›helper('catalog/image')-›init($cur_category, 'thumbnail', $image->getFile())- ›изменить размер(100,100); он показывает ошибку, например вызов функции-члена getFile() для не-объекта в /app/design/frontend/default/default/template/easycatalogimg/subcategories.phtml - person balanv; 04.01.2012
comment
Большой!!! это работает именно так Oğuz Çelikdemir ... +1 за ответ на вопрос с обновлениями ... Спасибо - person balanv; 04.01.2012

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

" />

Дополнительные разъяснения см. здесь

person user3146094    schedule 08.02.2014

Если вы хотите изменить размер изображений категорий, здесь находится бесплатный модуль, основанный на ядре изменение размера изображения. Поскольку я боролся с собой, в итоге я создал это расширение для изменения размера изображений категорий с такой же легкостью, как и изменение размера изображения продукта.

person Damodar Bashyal    schedule 06.12.2012
comment
вы хотите заменить строку 33 помощника на это: $this->placeHolder = Mage::getDesign()->getSkinUrl('images/catalog/product/placeholder/image.jpg'); чтобы избежать бесконечного вложения, если в папке темы нет заполнителя (используя код выше, magento вернется к заполнителю по умолчанию). В остальном отличный код, спасибо, что поделились - person srgb; 09.03.2013

Я понимаю, что опаздываю на вечеринку, но недавно у меня была возможность посмотреть на это, и использование 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, за исключением работы с кучей логики с самим продуктом.

person dchayka    schedule 01.05.2017

Если вам нужно изменить размер изображения категории, так как оно продолжает уменьшаться до 475 пикселей в ширину, вы можете сделать это, удалив «width = «475»» из следующего шаблона: app/design/frontend/default/default/template/catalog/category. /view.phtml

Вам также может потребоваться отключить или очистить кеш в бэкэнде: Система --> Управление кешем --> Кэш изображений --> Очистить.

Из: http://www.pridedesign.ie/content/magento-resize-category-image

person sondoha    schedule 04.01.2012