Перейти к содержанию
mysubcult

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

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

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

Поделиться сообщением


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

В контроллере.

Поделиться сообщением


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

Наверное даже не в контроллере а в моделе, допиливать функцию, чтоб с БД вытягивала опции у которых не 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, nexus said:

В контроллере.

А можно подробнее?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
$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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Только что, Eldaeron сказал:

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

 

В смысле если написать WHERE quantity > 0 будет ошибка..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
7 minutes ago, mysubcult said:

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

Так оно же там и стоит такое, или я что-то опять не то говорю?)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Just now, nexus said:

В смысле если написать WHERE quantity > 0 будет ошибка..

Ну, кстати, вариант @eldaeron у меня тоже заработал. ))

Поделиться сообщением


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

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

Поделиться сообщением


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

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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