Перейти к содержанию
velius

[Решено] убрать ресайз фото товара в категориях

Рекомендуемые сообщения

Здравствуйте! Мало знаний по Опенкарт, чтобы сделать самостоятельно. Поиск дал решения для старых версий. Подскажите, как убрать ресайз миниатюр в категориях и модулях бестселлеры и новые поступления? У меня миниатюры отдельные, разных размеров. То есть они не результат уменьшения основной картинки. Они предоставлены оптовиком. Нужно, чтобы опенкарт их не сжимал/не растягивал.

 

ВОт, например, из модуля  лучших товаров. Я так понимаю, этот кусок кода отвечает за ресайз миниатюры.  Файл catalog/controller/module/bestseller.php

 

foreach ($results as $result) {
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height']);
} else {
$image = false;
}

 

 

Но как изменить, чтобы не было ресайза?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В общем, пошла простейшим путем. В файле catalog/model/tool/image.php 

 

Продублировала функцию resize, переименовала ее в resize1 и в return у первой функции, которая осталась называться как resize прописала вместо $new_image переменную $old_image

 

Теперь файл выглядит так:

 

<?php
class ModelToolImage extends Model {
public function resize($filename, $width, $height) {
if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) {
return;
 
$info = pathinfo($filename);
$extension = $info['extension'];
 
$old_image = $filename;
$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
 
if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) {
$path = '';
 
$directories = explode('/', dirname(str_replace('../', '', $new_image)));
 
foreach ($directories as $directory) {
$path = $path . '/' . $directory;
 
if (!file_exists(DIR_IMAGE . $path)) {
@mkdir(DIR_IMAGE . $path, 0777);
}
}
 
list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);
 
if ($width_orig != $width || $height_orig != $height) {
$image = new Image(DIR_IMAGE . $old_image);
$image->resize($width, $height);
$image->save(DIR_IMAGE . $new_image);
} else {
copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
}
}
 
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return HTTPS_IMAGE . $old_image;
} else {
return HTTP_IMAGE . $old_image;
}
}
 
 
public function resize1($filename, $width, $height) {
if (!file_exists(DIR_IMAGE . $filename) || !is_file(DIR_IMAGE . $filename)) {
return;
 
$info = pathinfo($filename);
$extension = $info['extension'];
 
$old_image = $filename;
$new_image = 'cache/' . utf8_substr($filename, 0, utf8_strrpos($filename, '.')) . '-' . $width . 'x' . $height . '.' . $extension;
 
if (!file_exists(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) {
$path = '';
 
$directories = explode('/', dirname(str_replace('../', '', $new_image)));
 
foreach ($directories as $directory) {
$path = $path . '/' . $directory;
 
if (!file_exists(DIR_IMAGE . $path)) {
@mkdir(DIR_IMAGE . $path, 0777);
}
}
 
list($width_orig, $height_orig) = getimagesize(DIR_IMAGE . $old_image);
 
if ($width_orig != $width || $height_orig != $height) {
$image = new Image(DIR_IMAGE . $old_image);
$image->resize($width, $height);
$image->save(DIR_IMAGE . $new_image);
} else {
copy(DIR_IMAGE . $old_image, DIR_IMAGE . $new_image);
}
}
 
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return HTTPS_IMAGE . $new_image;
} else {
return HTTP_IMAGE . $new_image;
}
}
 
 
}
 
 
?>

 

 

В файлах, где необходимо было оставить ресайз, заменила resize на resize1

 

А там, где нужна была изначальная фотка, оставила resize

 

Так ведь можно было сделать?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$this->model_tool_image->resize($result['image'], $this->config->get('config_image_popup_width'), $this->config->get('config_image_popup_height'))

$this->model_tool_image->resize($result['image'], $setting['image_width'], $setting['image_height'])
...
итпд
>>

'image/' . $result['image']

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за помощь!

 

решено

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.