Доброго времени суток уважаемые посетители нашего сайта, все мы знаем что в opencart производители выводятся на отдельной странице, но часто владельцы интернет магазинов хотели бы выводить производителя товара прям в карточку,ну что же если нужно значить будем делать, и так в данной статье мы прикрутим фото нашего производителя именно в карточку товара с возможностью его включения и отключения из административной панели,а так же с возможностью менять размер самого изображения производителя,и так приступим.
1. Для начала давайте создадим нужные нам поля в админ панели.
Изменения будем вносить в следующие файлы:
1 2 3 |
“admin/language/russian/setting/setting.php” – здесь мы добавим перевод языковых переменных. “admin/controller/setting/setting.php” – а здесь уже мы получим и обработаем языковые переменные и настройки. “admin/view/template/setting/setting.tpl” – выведем настройки в форму с настройками магазина. |
1. Файл “admin/language/russian/setting/setting.php”. В любое место файла (между ) вставляем:
1 2 |
$_['entry_manufacturer_image'] = 'Размер логотипа производителя в карточке товара:'; $_['entry_show_manufacturer_image'] = 'Показывать логотип производителя:'; |
Все языковые переменные мы добавили, теперь нам понадобится перенести данные переменные в видимость шаблона ну и соответственно создать/получить и обработать настройки.
2. Файл “admin/controller/setting/setting.php”. В функции index() (~30 строка) после кода:
1 |
$this->data['heading_title'] = $this->language->get('heading_title'); |
Мы добавим:
1 2 |
$this->data['entry_manufacturer_image'] = $this->language->get('entry_manufacturer_image'); $this->data['entry_show_manufacturer_image'] = $this->language->get('entry_show_manufacturer_image'); |
Все мы закончили с языковыми переменными. Далее после кода (~330 строка):
1 2 3 4 5 |
if (isset($this->request->post['config_name'])) { $this->data['config_name'] = $this->request->post['config_name']; } else { $this->data['config_name'] = $this->config->get('config_name'); } |
Нам нужно добавить:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# Ширина изображения if (isset($this->request->post['config_manufacturer_image_width'])) { $this->data['config_manufacturer_image_width'] = $this->request->post['config_manufacturer_image_width']; } else { $this->data['config_manufacturer_image_width'] = $this->config->get('config_manufacturer_image_width'); } # Высота изображения if (isset($this->request->post['config_manufacturer_image_height'])) { $this->data['config_manufacturer_image_height'] = $this->request->post['config_manufacturer_image_height']; } else { $this->data['config_manufacturer_image_height'] = $this->config->get('config_manufacturer_image_height'); } # показать/отключить изображение производителя if (isset($this->request->post['config_show_manufacturer_image'])) { $this->data['config_show_manufacturer_image'] = $this->request->post['config_show_manufacturer_image']; } else { $this->data['config_show_manufacturer_image'] = $this->config->get('config_show_manufacturer_image'); } |
3. Файл “admin/view/template/setting/setting.tpl”. Все Настройки получены и обработаны, и сейчас у нас в шаблоне уже доступны переменные:
1 2 3 4 5 |
$entry_manufacturer_image; # Размер логотипа производителя в карточке товара: $entry_show_manufacturer_image; # Показывать изображение производителя: $config_manufacturer_image_width; # (Настройка) ширина логотипа $config_manufacturer_image_height; # (Настройка) высота логотипа $config_show_manufacturer_image; # (Настройка) показать/скрыть логотипы |
Все настройки мы будем создавать во вкладке “Изображения”. Ищем код (~684 строка):
1 2 3 4 5 6 7 8 9 10 |
<tr> <td><span class="required">*</span> <?php echo $entry_image_cart; ?></td> <td><input type="text" name="config_image_cart_width" value="<?php echo $config_image_cart_width; ?>" size="3" /> x <input type="text" name="config_image_cart_height" value="<?php echo $config_image_cart_height; ?>" size="3" /> <?php if ($error_image_cart) { ?> <span class="error"><?php echo $error_image_cart; ?></span> <?php } ?></td> </tr> </table> |
И перед вставим:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<tr> <td><?php echo $entry_manufacturer_image; ?></td> <td><input type="text" name="config_manufacturer_image_width" value="<?php echo $config_manufacturer_image_width; ?>" size="3" /> x <input type="text" name="config_manufacturer_image_height" value="<?php echo $config_manufacturer_image_height; ?>" size="3" /> </td> </tr> <tr> <td><?php echo $entry_show_manufacturer_image; ?></td> <td><?php if ($config_show_manufacturer_image) { ?> <input type="radio" name="config_show_manufacturer_image" value="1" checked="checked" /> <?php echo $text_yes; ?> <input type="radio" name="config_show_manufacturer_image" value="0" /> <?php echo $text_no; ?> <?php } else { ?> <input type="radio" name="config_show_manufacturer_image" value="1" /> <?php echo $text_yes; ?> <input type="radio" name="config_show_manufacturer_image" value="0" checked="checked" /> <?php echo $text_no; ?> <?php } ?></td> </tr> |
Теперь нам нужно перейти в настройки и ввести значения настроек т.к. по умолчанию они пусты. Пример настроек в админке должен выглядеть так:
2. Вторым шагом мы будем выводить наш логотип производителя непосредственно в карточке товара.
В какие файлы мы будем вносить изменения:
1 2 3 |
1. “catalog/model/catalog/product.php” – Здесь мы изменим запрос данных товара к базе данных, чтоб он возвращал фото нашего производителя. 2. “catalog/controller/product/product.php” – Здесь мы будем изменять размер фото производителя и добавим его к переменной, которая далее будет доступна в шаблоне. 3. “catalog/view/theme/название шаблона/template/product/product.tpl” – добавим фото, которое получили из контроллера, в сам шаблон. |
1 |
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price……….. |
1 |
$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, m.image AS mimage, (SELECT price……….. |
1 |
'sku' => $query->row['sku'], |
1 |
'mimage' => $query->row['mimage'], |
2. Файл “catalog/controller/product/product.php”. В функции index() находим код (~199 строка):
1 |
$this->load->model('tool/image'); |
1 2 |
$this->data['mimage'] = $this->model_tool_image->resize($product_info['mimage'], $this->config->get('config_manufacturer_image_width'), $this->config->get('config_manufacturer_image_height')); $this->data['config_show_manufacturer_image'] = $this->config->get('config_show_manufacturer_image'); |
3. Файл “catalog/view/theme/название шаблона/template/product/product.tpl”. Унас теперь есть доступна переменная $mimage, в ней находится путь к фото производителя (120×50). Так же еще уже доступна переменная $manufacturers, в которой находится ссылка на страницу производителя в магазине и переменная $config_show_manufacturer_image.
Теперь мы перейдем к добавлению самого изображения-ссылки. После кода (~24 строка):
1 |
<div class="right"> |
1 2 3 4 5 |
<?php if ($config_show_manufacturer_image && (!empty($mimage))): ?> <a href="<?php echo $manufacturers; ?>"> <img style="float:right;margin-top:10px;" width="120" height="50" src="<?php echo $mimage; ?>" title="<?php echo $manufacturer; ?>" /> </a> <?php endif ?> |
Всем спасибо за внимание,если есть вопросы задавайте в комментариях.
2 комментария
Большое спасибо!
В актуальной версии Opencart в представленных выше кодах следует менять переменную (в самом начале) «$this->data» на «$data» — тогда будет все работать
Верно, но небольшое уточнение… Актуальная версия имеется ввиду opencart второй ветки, для веток ниже это действие не требуется!
Ну а вообще если мы уже начали говорить о второй ветке то прошу почитать здесь Адаптация модулей под Opencart 2.x