Как программно скрыть товар с витрины?

[10 ноября 2016 г.]    Российская сборка Magento 2.49.12
Magento 2: модули и услуги
#1 zenka
  • Группа: Заблокирован
  • Сообщений: 4
  • Регистрация: 10.10.2011

10.10.2011 22:19

Можно ли установить в поле in_stock в ноль, чтобы не отображалось на сайте ? Т.е. будет ли при этом работать корректно сайт ?

#2 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.10.2011 22:22

В чём конкретно одним предложением состоит ваша прикладная задача?

#3 zenka
  • Группа: Заблокирован
  • Сообщений: 4
  • Регистрация: 10.10.2011

10.10.2011 22:32

Состоит в том, чтобы легко можно было менять статус товара (отображать его на сайте или нет) путем изменения одного поля в одной таблице. (через UPDATE)

Для тех, кто не знает.
## 6100 ## QUERY
SQL: DELETE FROM `catalog_product_flat_1` WHERE (entity_id IN('1852'))
AFF: 1
TIME: 0.0033

Вот таким действием отключается товар по-умолчанию в магенто.

#4 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.10.2011 22:47

Как программно скрыть товар с витрины

#5 zenka
  • Группа: Заблокирован
  • Сообщений: 4
  • Регистрация: 10.10.2011

10.10.2011 22:54

Спасибо конечно, но я пишу свой код, и могли бы просто намекнуть на визибилити.
---
Для остальных.
В своем коде (PHP) пишем
UPDATE `catalog_product_flat_1` SET `visibility` = '1' WHERE `entity_id` = 3125;
3125 это ай ди товара. можно конечно и через SKU поле. Но лучше через ай ди.

Второй вопрос (тоже горячий)
Товары можно группировать. Для этого нужно проделать целый ритуал. В базе изучил таблица, но пока не нашел, где ключ завязки.
Т.е. когда открываем один товар, например пепси, то можно выбрать из выпадающего списка литраж.(разумеется коды разные у литража)
Пепси 1л код24523
Пепси 2л код45
Пепси 0,5л код3534

#6 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.10.2011 22:56

Дело в том, что ваш способ неправилен: catalog_product_flat_1 - это денормализованное представление товара, эта таблица автоматически перестраивается системой после индексирования. Поэтому ваши изменения пропадут после переиндексации.

#7 zenka
  • Группа: Заблокирован
  • Сообщений: 4
  • Регистрация: 10.10.2011

10.10.2011 22:59

тогда в какой таблице попутно еще обновлять ? тут cataloginventory_stock_item поля визибилити нет(
Здесь catalog_category_product_index есть поле.

#8 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8884
  • Регистрация: 20.02.2010

10.10.2011 23:05

Magento использует модель хранения данных EAV.
Поэтому атрибуты одного товара размещены сразу в нескольких таблицах.
Более того, как я уже заметил выше, Magento выполняет денормализацию и собирает результаты в таблицах catalog_product_flat_*
Более того, внутренняя структура хранения товаров в базе данных может меняться от версии к версии, а также от некоторых административных настроек системы.
Поэтому работать напрямую с БД крайне не рекомендуется.
Вместо этого надо использовать программный интерфейс Magento.

Поделиться темой: