Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Скрыть опции, которые равны 0


mysubcult

Recommended Posts

Всем доброго времени суток, такой вот вопрос. В карточке товара отображаются опции, даже которых нет в наличии. Их конечно нельзя выбрать, но все же и соответственно фильтр товаров тоже выдает в поиске по опция те товары, которые отсутствуют. Вот отсюда и вопрос, как отключить эти опции, которых нет?

Надіслати
Поділитися на інших сайтах


Наверное даже не в контроллере а в моделе, допиливать функцию, чтоб с БД вытягивала опции у которых не 0

в файле: model/catalog/product

public function getProductOptions

 

там где запрос на в БД

$product_option_value_query = $this->db->query("SELECT * FROM "

Нужно ище количество добавить

AND quantity > 1

 

Змінено користувачем Eldaeron
  • +1 1
Надіслати
Поділитися на інших сайтах

1 hour ago, Eldaeron said:

Наверное даже не в контроллере а в моделе, допиливать функцию, чтоб с БД вытягивала опции у которых не 0

в файле: model/catalog/product

public function getProductOptions

 

там где запрос на в БД


$product_option_value_query = $this->db->query("SELECT * FROM "

Нужно ище количество добавить


AND quantity > 1

 

            $product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");
 

А, подскажите, пожалуйста, куда конкретно вставить?

Змінено користувачем mysubcult
Надіслати
Поділитися на інших сайтах


$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE quantity > 0 AND pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

Вот

Надіслати
Поділитися на інших сайтах

Только что, Eldaeron сказал:

$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE quantity > 0 AND pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

Вот

 

Коллега, не учите плохому, с таким запросом всё ляжет.. У вас ошибка в нём.

Надіслати
Поділитися на інших сайтах

$product_option_value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_option_value pov LEFT JOIN " . DB_PREFIX . "option_value ov ON (pov.option_value_id = ov.option_value_id) LEFT JOIN " . DB_PREFIX . "option_value_description ovd ON (ov.option_value_id = ovd.option_value_id) WHERE pov.quantity >0 AND pov.product_id = '" . (int)$product_id . "' AND pov.product_option_id = '" . (int)$product_option['product_option_id'] . "' AND ovd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY ov.sort_order");

Вот это правильный запрос.

Надіслати
Поділитися на інших сайтах

nexus, всмысле нельзя использовать WHERE quantity > 0 или pov.quantity > 0?

 

mysubcultНу тогда править контроллер можно:

foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
				$product_option_value_data = array();

				foreach ($option['product_option_value'] as $option_value) {
					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {

($option_value['quantity'] > 0) Должно быть

Надіслати
Поділитися на інших сайтах

4 minutes ago, Eldaeron said:

nexus, всмысле нельзя использовать WHERE quantity > 0 или pov.quantity > 0?

 

mysubcultНу тогда править контроллер можно:


foreach ($this->model_catalog_product->getProductOptions($this->request->get['product_id']) as $option) {
				$product_option_value_data = array();

				foreach ($option['product_option_value'] as $option_value) {
					if (!$option_value['subtract'] || ($option_value['quantity'] > 0)) {

($option_value['quantity'] > 0) Должно быть

Я совсем запутался, это что за контроллер?)

Надіслати
Поділитися на інших сайтах


mysubcult, файл catalog/controller/product/product.php - это контроллер продуктов...

Змінено користувачем Eldaeron
Надіслати
Поділитися на інших сайтах

nexus, Ошибки небудет но вы правы лучше конкретику что это именно pov.quantity, забыл исправить, вы оперативно среагировали :)

Надіслати
Поділитися на інших сайтах

  • 2 months later...

Такая же проблема. Опции с кол-вом = 0 не скрываются в карточке товара, т.е. их можно заказать. А вот насчет решения этой проблемы что-то из переписки так и не разобрался что куда добавить...

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.