RSS-подписка

RSS-лента

Новые статьи

Последние комментарии


Получать обновления на эл. почту

Ваш e-mail:

Рассылка новостей от Loco

Opencart: Как не показывать какой-либо товар в списке на странице производителей?

Opencart: Как не показывать какой-либо товар в списке на странице производителей? Работая с одним нашим клиентом пришли к необходимости скрыть часть дополнительных товаров какого-либо производителя на странице производителей. Такое разумно, если эти товары могут отвлекать и сбивать покупателя, например, если это аксессуары к основному товару, которые в принципе и не интересуют человека, пока он не определился с основным товаром.

Реализация в Opencart следующая: добавим в админке на форму редактирования товара на вкладку "Связи" радиокнопки "Показывать ли товар на странице производителя?"

не показывать товар в производителе

Это делаем в представлении product_form.tpl:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<i>Показывать ли товар на странице производителя?</i>&nbsp;
<?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 . "'");
В admin/controller/catalog/product аналогично как сделано для поля status, добавим
'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;
     }
 
 
 
Потом в catalog/model/product к status = '1' добавим и наше новое условие в getProducts и пожалуй в getAllProducts
... AND p.status = '1' AND p.status_showornot = '1' ...

ещё тонкий момент, проверьте ваши расширения и vqmod, там тоже надо дописать это условие, если какие-то из изменений кода vqmod или файлов расширений затрагивают и подменяют те куски в коде, которые выше мы дополняли.

У меня это было filterpro, популярный фильтр, который подвешивается и на страницу производителей.

Всем удачи в дорабатывании кода!

Источник: loco.ru

almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.

Вы можете почитать все статьи от almix'а.



Другие статьи по этой теме:

Комментарии (0)     Подпишитесь на RSS комментариев к этой статье.