В Commerce нужно скрывать кнопку добавления в корзину и цену на основании значения поля в Product variation

Главные вкладки

Аватар пользователя сельский библиотекарь сельский библио... 12 октября 2014 в 12:59

В магазине не все товары есть в наличии, что-то продано, что ожидается.
Я хочу, чтобы пользователи имели возможность видеть их в общем каталоге, но не могли купить и не видели цену.
Наличие товаров (через Stock) вводить не удобно т.к. товары продаются не только через сайт и возникает много путаницы.
Хотелось бы делать это вручную.

А именно, добавить поле в Product variation. Если значение этого поля = "Нет в наличии", то кнопка Добавить в корзину и цена не отображаются.

Как можно решить эту задачу? Я так понимаю, что тут в основном JS должно быть достаточно.

Комментарии

Аватар пользователя klimp klimp 12 октября 2014 в 14:40

У товара есть свойство "статус". Выставьте "отключен" кнопка "Добавить в корзину" будет неактивна.

"сельский библиотекарь" wrote:
Я так понимаю, что тут в основном JS должно быть достаточно.

Я бы делал на стороне сервера, js легко обойти и путницы в ваших товарах может возникнуть еще больше.

Для того, чтобы не выводить еще и цену - воспользуйтесь hook_views_post_execute для вьюса с товарами и hook_entity_view для commerce product: проверили какой статус - скрыли поля от рендера.

Аватар пользователя сельский библиотекарь сельский библио... 12 октября 2014 в 23:20

Мне нравится вот это решение с опциональным отключением возможности добавить в корзину
http://banoodleland.com/2013/09/24/drupal-commerce-indicating-a-sold-out...
Но у меня не работает... Может быть из-за использования сторонней темы. Не могу пока найти причину.
Подозреваю, что если развить это направление, то можно заодно отключать и отображение цены.

> У товара есть свойство "статус". Выставьте "отключен" кнопка "Добавить в корзину" будет неактивна.

Это было бы очень просто. Но продукты с таким статусом не выводятся в общий каталог через views наравне с активными. Или есть способ?

Аватар пользователя Dorian76453 Dorian76453 14 октября 2014 в 13:35

как вариант можно в шаблоне карточки товара написать условие по полю Product variation.
типа
if ($Product_variation == "Нет в наличии")
{
echo "Нет в наличии";
}
else
{
выводим кнопку в корзину
};

Аватар пользователя klimp klimp 16 октября 2014 в 12:52

"сельский библиотекарь" wrote:
Это было бы очень просто. Но продукты с таким статусом не выводятся в общий каталог через views наравне с активными. Или есть способ?

Снимите фильтр по статусу в вашем views - будут выводиться и неактивные.