Вывод формы добавления товара по условию (Ubercart)

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

Аватар пользователя winch winch 23 июня 2012 в 10:45

Для некоторых товаров требуется убрать кнопку "добавить в корзину" и заменить ее надписью типа: "временно нет в продаже".
При этом совсем НЕ требуется автоматически отслеживать количество остатков товара на складе, хотелось бы просто иметь возможность в настройках товара вручную устанавливать галочку есть/нет в продаже.
Подскажите плиз: без заморочек это как-нибудь решается?
Предпочтение при решении — лучше написать несколько строк более-менее понятного кода, чем ставить какой-нибудь непонятный дополнительный модуль, типа uc_out_of_stock.

Комментарии

Аватар пользователя rimen rimen 23 июня 2012 в 12:58

Создать филд аля field_show_price.
в hook_preprocess проверяете значение вашего поля и, если нужно, изменяете $vars['content']['add_to_cart']['#form']['actions']['submit']['#value'] на "Может хоть что-нить осталось?"

UPD: оказывается, вам не текст кнопки нужно сменить, а убрать кнопку. Тогда форме add_to_cart ставите '#access' = FALSE или просто делаете <?php unset($vars['content']['add_to_cart'])?> и добавляете свой маркап -
<?php $vars['content']['not_available'] = array('#markup' => t("Нету тута"));?>
а уж это поле выведется само или можно руками через render() в темплейте

UPD2: вместо филда можно алтерить форму добавления / редактирования товаров, разместить свою галку где-нить в настройках убера (так по сути логичнее было б), но при этом нужно самому заботиться о сохранении и выдергивании инфы, например посредтвом добавления своего столбца в uc_products (через hook_schema_alter)

Аватар пользователя winch winch 24 июня 2012 в 10:06

Спасибо за подробное руководство.

Что бы не заморачиваться с дополнительным полем, или столбцом в uc_products, решил использовать существующее поля. Например, действуем если значение цены нулевое или отрицательное. Так же еще поддумал о возможности использовать стандартные, но редко задействованные поля уберкарта, типа вес и размеры.

И еще, Вы не сказали какой именно hook_preprocess надо использовать, методом экспериментов вычислил что это hook_preprocess_node. Правильно?

Аватар пользователя rimen rimen 24 июня 2012 в 10:33

Да, node.
Для вьюх что-то подобное придется делать посредством views_php - выводить кнопку или сообщение "Нету тута" в зависимости от значения вашего поля.

Решение по поводу существующих полей, пожалуй, не совсем правильное, но, будем считать, оправданное ))

Аватар пользователя rimen rimen 24 июня 2012 в 10:39

Еще, возможно, тему стоит изменить на что-то типа "Вывод формы добавления товара по условию (Ubercart)" - авось пригодится кому