Попробовал применить на ocStore 2.3. Поругалось на HTTPS_IMAGE и HTTP_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;
}
на
if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) {
return HTTPS_SERVER . 'image/' . $new_image;
} else {
return HTTP_SERVER . 'image/' . $new_image;
}
Работает отлично. Утилита очень помогла.
Исправленный вариант под 2.3 прикрепил.
Как применять.
Во-первых, закидываем данный файл в catalog/model/tool
Затем заходим в любой контроллер, где у нас происходит ресайз картинок. Например, catalog/controller/category.php
Находим
$this->load->model('tool/image');
Ниже дописываем
$this->load->model('tool/imagecrop');
Далее находим место, которое отвечает за размер изображения товара в списке товаров на странице категории. В ocStore 2.3 оно выглядит так
if ($result['image']) {
$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
} else {
$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
}
Меняем на
if ($result['image']) {
//$image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
$image = $this->model_tool_imagecrop->resize($result['image'], 200, 0);
} else {
$image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
}
Я специально оставил закомментированным стандартный код. Вы спокойно можете взять из него ширину, которая указывается в конфиге магазина, что может быть весьма удобно. Это одни из множества возможных примеров. В моем конкретном случае было необходимо сохранить пропорцию для изображений разного размера.
imagecrop.php