Jump to content
Sign in to follow this  
velius

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

Recommended Posts

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

 

ВОт, например, из модуля  лучших товаров. Я так понимаю, этот кусок кода отвечает за ресайз миниатюры.  Файл 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;
}

 

 

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

Share this post


Link to post
Share on other sites

В общем, пошла простейшим путем. В файле 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

 

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

Share this post


Link to post
Share on other sites

$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']

Share this post


Link to post
Share on other sites

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

 

решено

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.