Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Решено] Еще одно изображение товара, нужна ваша помощь


 Поделиться

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

Хочу сделать полную копию функции "изображение товара", для своих идей и потребностей. 

post-681040-0-42603300-1423187802_thumb.png

Для полного счастья не хватает немного знаний, поэтому прошу немного ваших советов как это сделать и какие есть нюансы.

 

На сколько я понимаю мне нужно сделать копии всех файлов и кодов, ну и возможно переименовать.....

 

Основной вопрос, это в каких файл задействована функция изображения, подскажите какие файлы ковырять нужно?

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

Для версий 1.5.х

 

Сперва делаем SQL-запрос, чтоб добавить в таблицу поле нового изображения товара:

ALTER TABLE `oc_product` ADD `moreimage` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci 

Ваш префикс может отличаться, не забываем об этом.

 

 

Дальше идем в модель

admin/model/catalog/product.php

дважды находим такую конструкцию:

if (isset($data['image'])) {
$this->db->query("UPDATE " . DB_PREFIX . "product SET image = '" . $this->db->escape(html_entity_decode($data['image'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");
}
дважды вставляем после нее:
if (isset($data['moreimage'])) {
$this->db->query("UPDATE " . DB_PREFIX . "product SET moreimage = '" . $this->db->escape(html_entity_decode($data['moreimage'], ENT_QUOTES, 'UTF-8')) . "' WHERE product_id = '" . (int)$product_id . "'");
}
 
 
Теперь контроллер
admin/controller/catalog/product.php
Ищем
$this->data['entry_image'] = $this->language->get('entry_image');
За ним добавляем
$this->data['entry_moreimage'] = $this->language->get('entry_moreimage');
Ищем
if (isset($this->request->post['image'])) {
$this->data['image'] = $this->request->post['image'];
} elseif (!empty($product_info)) {
$this->data['image'] = $product_info['image'];
} else {
$this->data['image'] = '';
}
За ним добавляем
if (isset($this->request->post['moreimage'])) {
$this->data['moreimage'] = $this->request->post['moreimage'];
} elseif (!empty($product_info)) {
$this->data['moreimage'] = $product_info['moreimage'];
} else {
$this->data['moreimage'] = '';
}
Ищем
if (isset($this->request->post['image']) && file_exists(DIR_IMAGE . $this->request->post['image'])) {
$this->data['thumb'] = $this->model_tool_image->resize($this->request->post['image'], 100, 100);
} elseif (!empty($product_info) && $product_info['image'] && file_exists(DIR_IMAGE . $product_info['image'])) {
$this->data['thumb'] = $this->model_tool_image->resize($product_info['image'], 100, 100);
} else {
$this->data['thumb'] = $this->model_tool_image->resize('no_image.jpg', 100, 100);
$this->data['image'] = 'no_image.jpg';
}
За ним добавляем
if (isset($this->request->post['moreimage']) && file_exists(DIR_IMAGE . $this->request->post['moreimage'])) {
$this->data['morethumb'] = $this->model_tool_image->resize($this->request->post['moreimage'], 100, 100);
} elseif (!empty($product_info) && $product_info['moreimage'] && file_exists(DIR_IMAGE . $product_info['moreimage'])) {
$this->data['morethumb'] = $this->model_tool_image->resize($product_info['moreimage'], 100, 100);
} else {
$this->data['morethumb'] = $this->model_tool_image->resize('no_image.jpg', 100, 100);
$this->data['moreimage'] = 'no_image.jpg';
}
 
 
Теперь шаблон
admin/view/template/product_form.tpl
Ищем
<tr>
              <td><?php echo $entry_image; ?></td>
              <td><div class="image"><img src="<?php echo $thumb; ?>" alt="" id="thumb" /><br />
                  <input type="hidden" name="image" value="<?php echo $image; ?>" id="image" />
                  <a onclick="image_upload('image', 'thumb');"><?php echo $text_browse; ?></a>  |  <a onclick="$('#thumb').attr('src', '<?php echo $no_image; ?>'); $('#image').attr('value', 'no_image.jpg');"><?php echo $text_clear; ?></a></div></td>
            </tr>
За ним добавляем
<tr>
              <td><?php echo $entry_moreimage; ?></td>
              <td><div class="image"><img src="<?php echo $morethumb; ?>" alt="" id="morethumb" /><br />
                  <input type="hidden" name="moreimage" value="<?php echo $moreimage; ?>" id="moreimage" />
                  <a onclick="image_upload('moreimage', 'morethumb');"><?php echo $text_browse; ?></a>  |  <a onclick="$('#thumb').attr('src', '<?php echo $no_image; ?>'); $('#moreimage').attr('value', 'no_image.jpg');"><?php echo $text_clear; ?></a></div></td>
            </tr>
 
 
Ну и в языке не помешает
admin/language/russian/catalog/product.php
Ищем
$_['entry_image']            = 'Изображение товара:';
За ним добавляем
$_['entry_moreimage']            = 'Еще одно изображение товара:';
 
Вуаля! Теперь у нас есть доп. изображение для товара. На витрине вывод аналогичен. Получаем переменную - передаем в шаблон. Где там ваши идеи и потребности нужно организовать.
Как-то так.

 

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Благодарю за такую подробную инструкцию!
Сейчас возьмусь за реализацию

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

Спасибо еще раз, все получилось!

 

Я сделал возможность задавать самостоятельно мини картинки 170х170 которые выводятся в категориях...

Если кому такое решение понадобится, тогда, тогда смотрите ниже, уже продолжение от меня.

 

 

Файл

catalog/model/catalog/product.php

в нем ищем

'image'            => $query->row['image'],

и ниже добавляем 

'moreimage'        => $query->row['moreimage'],

Далее файл контролера

catalog/controller/product/category.php

находим

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'));
   $imagewidth = $this->config->get('config_image_product_width');
   $imageheight = $this->config->get('config_image_product_height');
} else {
   $image = false;
   $imagewidth = '';
   $imageheight = '';
}

Ниже добавляем код

if ($result['moreimage']) {
   $moreimage = $this->model_tool_image->resize($result['moreimage'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
   $imagewidth = $this->config->get('config_image_product_width');
   $imageheight = $this->config->get('config_image_product_height');
} else {
   $moreimage = false;
   $imagewidth = '';
   $imageheight = '';
}

Ищем

'thumb'       => $image,

Ниже добавляем

'morethumb'  => $moreimage,

Теперь идем к файлу шаблона для вывода в категории

catalog/view/theme/*/template/product/category.tpl

Находим

<?php if ($product['thumb']) { ?>
   <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
<?php } ?>

Заменяем на этот

<?php if ($product['morethumb']) { ?>
   <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['morethumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
<?php } ?>

Ну, вот и все, теперь в категориях можно выводить нужные миниатьюры самостоятельно.

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Вот это дело, я понимаю.

Предлагаю пойти дальше, и для этих доп.картинок размеры в админке в settings проставлять.

Вообще прекрасно будет =)

 

З.Ы. и в шаблоне все-же лучше условие ставить на пустую доп.картинку. Нет ее - выводим основное изображение.

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

Всё хотел себе такое же замутить с эскизами для категорий, но руки не доходили. Пощупаемся этот вариантик на предстоящих выходных.

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


Если с решением по поводу пустой картинки если основной нет все понятно, то вот на счет задания размера из админки, тут дело немного посложнее будет....((

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

Не так уж и сложно. Обратим внимание на следующий код:

$image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));

вот эти данные

config_image_product_width;
config_image_product_height

Задаются в

admin/controller/setting/setting.php

Это контроллер - остальное аналогично. Модель, шаблон, язык. Просто добавим дополнительные поля в Админка -> Система -> Настройки -> Изображения.

 

Ну и в базу два поля для размеров добавить.

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

Так ааа........  :-)

там уже есть эта настройка, задается размер из настроек "Размер изображения в списке товаров:"

 

хотя я уже и сообразил как это сделать, разве что с полями в базе мне сложнее

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

Пытался избавиться от ресайза для готовых эскизов (вырезав вызов $this->model_tool_image->resize), оно таким макаром выдает некорректный путь до картинки типа scr=data/product_icon_1.png.

Помню где-то тут проскакивала темка с отключением ресайза. Будем искать.

 

Вроде победил через

$image_thumb = '/image/'. $result['image_thumb'];
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

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

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