Меняем генерацию изображений товаров на страницах категорий.

Тема в разделе "Opencart", создана пользователем White_S, 22 авг 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. White_S

    White_S

    Регистр.:
    27 май 2009
    Сообщения:
    474
    Симпатии:
    95
    Довольно много намучился с генерацией изображений на страницах категорий, и решил написать пост о том как это делается. Идея была взята здесь http://opencartforum.ru/topic/7505-razmer-izobrazheniia-tovara/?p=82493 там , правда речь идет о страницах товара, но как выяснил в процессе, там есть функция которая не только убирает белые поля, но и которая обрежет изображение в случае несоответствия пропорций. Для версии 1.5.6 файле не подошли, пришлось немного поправить. После того как залили файлы в catalog/controller/product/category.php делаем следующую замену:
    Для версии двига 1.5.6 (изображение обрезается если пропорции не соответствуют функция cropsize)
    заменяем:
    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        $image = false;
                    }
    на
    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->cropsize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        $image = false;
                    }
    Если хотите сделать изображение без белых полей (за максимум берется высота изображения) то используете функцию onesize, в том же файле делаете замену.
    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        $image = false;
    на

    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->onesize($result['image'], $this->config->get('config_image_product_height'));
                    } else {
                        $image = false;
    а также
    Код:
    if ($category_info['image']) {
                    $this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
                } else {
                    $this->data['thumb'] = '';
    на

    Код:
    if ($category_info['image']) {
                    $this->data['thumb'] = $this->model_tool_image->onesize($category_info['image'], $this->config->get('config_image_category_height'));
                } else {
                    $this->data['thumb'] = '';
    Если хотите чтобы изображение было создано на основе максимальной ширины изображения, то делаем так:
    заменяем
    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        $image = false;
    на

    Код:
    if ($result['image']) {
                        $image = $this->model_tool_image->onesize($result['image'], $this->config->get('config_image_product_width'));
                    } else {
                        $image = false;
    а также
    Код:
    if ($category_info['image']) {
                    $this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
                } else {
                    $this->data['thumb'] = '';
    на

    Код:
    if ($category_info['image']) {
                    $this->data['thumb'] = $this->model_tool_image->onesize($category_info['image'], $this->config->get('config_image_category_width'));
                } else {
                    $this->data['thumb'] = '';
    Если мне не изменяет память, то в версии 1.5.4.1 по аналогии, не помню точно в 1.5.6 работает это.
    Так генерируются изображения стандартно
    [​IMG]
    так работает функция cropsize
    [​IMG]
    так работает onesize с использованием в качестве максимального размера высоты картинки
    [​IMG]
    а так по ширине
    [​IMG]
    В принципе, если откроете файлы из приложения, понятно что там легко завернуть в Vqmod чтобы не делать замену файлов двига, но на это мне время тратить лень.
     

    Вложения:

    GigabiT, vava1, ioh и 3 другим нравится это.
  2. avb19

    avb19 Постоялец

    Регистр.:
    15 июл 2012
    Сообщения:
    50
    Симпатии:
    5
    То, что надо, с размещением изображения в opencart проблема.
     
  3. CO2

    CO2 Создатель

    Регистр.:
    17 апр 2012
    Сообщения:
    24
    Симпатии:
    2
    Любопытно, а который из вариантов подходит под OcStore 1.5.5.2 ?
     
  4. EarlVadim

    EarlVadim Писатель

    Регистр.:
    15 сен 2012
    Сообщения:
    8
    Симпатии:
    0
    В OpenShop все тоже самое?
     
  5. vava1

    vava1 Постоялец

    Регистр.:
    21 апр 2013
    Сообщения:
    50
    Симпатии:
    3
    Не пойму, а где именно менять, они встречаются в 3-4 экземплярах =\
     
  6. BestFish

    BestFish Постоялец

    Регистр.:
    14 июн 2014
    Сообщения:
    140
    Симпатии:
    9
    вопрос по теме отображения фото товара в Opencart, возможно сделать отображение полного размера изображения товара иконкой на открытой картинке, например как в ShopCMS см. скрин, спасибо

    [​IMG]