Opencart: Как не показывать какой-либо товар в списке на странице производителей?
Реализация в Opencart следующая: добавим в админке на форму редактирования товара на вкладку "Связи" радиокнопки "Показывать ли товар на странице производителя?"
Это делаем в представлении product_form.tpl:
<i>Показывать ли товар на странице производителя?</i> <?php if ($status_showornot) { ?> <input type="radio" name="status_showornot" value="1" checked="checked" /> <?php echo $text_yes; ?> <input type="radio" name="status_showornot" value="0" /> <?php echo $text_no; ?> <?php } else { ?> <input type="radio" name="status_showornot" value="1" /> <?php echo $text_yes; ?> <input type="radio" name="status_showornot" value="0" checked="checked" /> <?php echo $text_no; ?> <?php } ?>
Заводим в БД в таблице product поле status_showornot (tyniint(1) по умолчанию выставим значение 1, что соответствует показу товара на странице производителя). Потом для ненужных товаров выберем в админке "Нет".
Далее в admin/model/product допишем его передачу и сохранение в функции editProduct
public function editProduct($product_id, $data) { $this->db->query("UPDATE " . DB_PREFIX . "product SET model = '" . $this->db->escape($data['model']) . "', sku = '" . $this->db->escape($data['sku']) . "', upc = '" . $this->db->escape($data['upc']) . "', location = '" . $this->db->escape($data['location']) . "', quantity = '" . (int)$data['quantity'] . "', minimum = '" . (int)$data['minimum'] . "', subtract = '" . (int)$data['subtract'] . "', stock_status_id = '" . (int)$data['stock_status_id'] . "', date_available = '" . $this->db->escape($data['date_available']) . "', manufacturer_id = '" . (int)$data['manufacturer_id'] . "', shipping = '" . (int)$data['shipping'] . "', price = '" . (float)$data['price'] . "', points = '" . (int)$data['points'] . "', weight = '" . (float)$data['weight'] . "', weight_class_id = '" . (int)$data['weight_class_id'] . "', length = '" . (float)$data['length'] . "', width = '" . (float)$data['width'] . "', height = '" . (float)$data['height'] . "', length_class_id = '" . (int)$data['length_class_id'] . "', status = '" . (int)$data['status'] . "', tax_class_id = '" . $this->db->escape($data['tax_class_id']) . "', sort_order = '" . (int)$data['sort_order'] . "', date_modified = NOW(), status_showornot = '" . (int)$data['status_showornot'] . "' WHERE product_id = '" . (int)$product_id . "'");
'status_showornot' => ($result['status_showornot'] ? $this->language->get('text_enabled') : $this->language->get('text_disabled')),
if (isset($this->request->post['status_showornot'])) { $this->data['status_showornot'] = $this->request->post['status_showornot']; } elseif (!empty($product_info)) { $this->data['status_showornot'] = $product_info['status_showornot']; } else { $this->data['status_showornot'] = 1; }
... AND p.status = '1' AND p.status_showornot = '1' ...
ещё тонкий момент, проверьте ваши расширения и vqmod, там тоже надо дописать это условие, если какие-то из изменений кода vqmod или файлов расширений затрагивают и подменяют те куски в коде, которые выше мы дополняли.
У меня это было filterpro, популярный фильтр, который подвешивается и на страницу производителей.
Всем удачи в дорабатывании кода!
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 0 Opencart: Скидки для пользователей, надо указывать в колонке "количество" значение, отличное от нуля! (02.07.2014)
- 0 Как оперативно создать интернет-магазин на основе шаблона OpenCart? (05.06.2014)
- 0 Opencart: Установка мета тега Keywords для главной страницы через админку (05.12.2013)
- 0 Opencart: война модулей FilterPro mega, Intelligent Product Labels, AStickers - Ajax стикеры (24.10.2013)
- 0 Opencart: Модуль Filter Product OpenCart_v1.5.x: Как скрывать недоступные опции в фильтре (23.10.2013)
- 0 Ошибка xml файла Opencart для Яндекс Маркета: <b>Notice</b>: iconv(): Detected an illegal character in input string... (04.09.2013)
- 0 Opencart: Выводить изображения подкатегорий на странице категории. (11.07.2013)
- 0 Opencart: Вывод атрибутов вместо описания в категориях. (23.10.2013)
- 0 Opencart: Обновление движка с версии 1.4.9 до 1.5.1.3! (05.02.2015)
- 0 Opencart: Вставляем имя покупателя в модуле JV_QuickOrder - быстрый заказ товара (22.04.2013)
- 0 OpenCart: Fancybox (или colorbox)+"cloud-zoom" одновременно. Значок-ссылка поверх изображения товара на просмотр в полный вид (03.06.2013)
- 0 OpenCart: Делаем шаблон растягиваемым и добавляем отступы. (10.01.2014)
- Как включить SSL и сделать редирект на HTTPS. На примере Opencart 2 (03.12.2017)
- Opencart 2: Цена за квадратный метр, за штуку и др. (05.10.2017)
- Opencart 2: Cлайдер Owl Carousel в OcStore 2.1.0.2. Что делать, если слайдер не работает? (10.05.2017)
- Opencart 2: Добавляем новую позицию в макет для вывода модуля (27.04.2017)
- SEO оптимизация хлебных крошек breadcrumbs в Opencart 2 (27.04.2017)
- Opencart 2: Закладки без регистрации (Wishlist without registration) (26.04.2017)
- Opencart 2: сделать разные валюты в админке и на сайте (24.04.2017)
- Opencart 2: OCMOD замена нескольких строк (12.04.2017)
- Как установить расширение в Opencart 2 (27.04.2017)
- Загрузка файлов (картинок) по ajax через форму для Opencart (04.09.2016)
- Opencart: Как не показывать какой-либо товар в списке на странице производителей? (29.07.2015) ← вы тут
- Порядок баннеров в Opencart (15.05.2015)
- Устанавливаем ionCube Loader на MAMP за пару минут. (06.02.2015)