Рабочий вариант для версии 1.5.3:
1. Качаем архив отсюда (прямая ссылка на файл).
2. Распаковываем на сайт с заменой (заменяются файлы system/library/image.php и catalog/model/tool/image.php, при желании делаем их предварительный бэкап)
3. Ищем в файле catalog/controller/product/product.php, следующее:
$this->data['thumb'] = $this->model_tool_image->resize($product_info['image'], $this->config->get('config_image_thumb_width'), $this->config->get('config_image_thumb_height'));
и заменяем на:
$this->data['thumb'] = $this->model_tool_image ->onesize($product_info['image'], $this->config->get('config_image_thumb_width'));
Таким образом мы поменяли генерацию миниатюры для основного изображения товара. Для того, чтобы поменять миниатюры дополнительных изображений, ищем там же
'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get('config_image_additional_width'), $this->config->get('config_image_additional_height'))
и заменяем на:
'thumb' => $this->model_tool_image ->onesize($result['image'], $this->config->get('config_image_popup_width'))
Подобным же образом заменяем код для всплывающих картинок, только вместо config_image_thumb_width пишем config_image_popup_widthВ результате миниатюры генерируются пропорционально исходному изображению по большей стороне. Если же мы хотим, чтобы все картинки генерировались исходя только из ширины исходного изображения, то в файле system/library/image.php ищем код
// calculate dimensions
if ($photo_width > $maxsize OR $photo_height > $maxsize) {
if ($photo_width == $photo_height) {
$width = $maxsize;
$height = $maxsize;
}elseif($photo_width > $photo_height) {
$scale = $photo_width / $maxsize;
$width = $maxsize;
$height = round ($photo_height / $scale);
}else{
$scale = $photo_height / $maxsize;
$height = $maxsize;
$width = round ($photo_width / $scale);
}
}else{
$width = $photo_width;
$height = $photo_height;
}
и меняем на
// calculate dimensions
if ($photo_width > $maxsize OR $photo_height > $maxsize) {
if ($photo_width == $photo_height) {
$width = $maxsize;
$height = $maxsize;
}else{
$scale = $photo_width / $maxsize;
$width = $maxsize;
$height = round ($photo_height / $scale);
}
}else{
$width = $photo_width;
$height = $photo_height;
}
После этого ширина изображений будет та, что указана в настройках сайта, высота - пропорциональной исходному изображению.