Сообщество добрый день.
Столкнулся с проблемой и кажется сам решил ее :-)
Интернет магазин на базе Commerce 7.x-1.13:
товар в наличии -> работает кнопка "Добавить в корзину"
товара нет в наличии -> работает кнопка "Заказать"
Что сделал. Скачал модуль Commerce Buy One Click 7.x-1.9
Этот модуль добавляет к форме добавления товара в корзину кнопку "Buy now with 1-Click" ("Купить в один клик"), по нажатию на которую во всплывающем окне (fancybox) выводится форма, в которую покупатель вводит свои данные. (Спасибо ссылке)
В итоге получилось 2 кнопки в одной форме "Добавить в корзину"и "Купить в один клик" ("Купить в один клик"переименовал в "Заказать").
Очень хотелось управлять статусом, т.е. кроме состояния 1- Активный и 0-Отключено добавить статус 2-Заказать.
Для этого внес изменения в код модулей:
commerce_product.forms.inc:57,
<?php
//Было
'#options' => array(
'1' => t('Active'),
'0' => t('Disabled'),//Стало
'#options' => array(
'2' => t('Zakaz'),
'1' => t('Active'),
'0' => t('Disabled'),
?>
commerce_product.inline_entity_form.inc: 191
<?php
//Было
'#options' => array(1 => t('Active'), 0 => t('Disabled')),
//Стало
'#options' => array(2 => t('Zakaz'), 1 => t('Active'), 0 => t('Disabled')),
?>
inline_entity_form.module:153,
<?php
//Было
return array(
0 => t('Disabled'),
1 => t('Active'),
);//Стало
return array(
0 => t('Disabled'),
1 => t('Active'),
2 => t('Zakaz'),
);
?>
Итак, статус появился...
Далее разрешил выводить продукты со статусом 1 и 2, со статусом 0 - продукты по прежнему не выводятся.
commerce_cart.module: 1783
<?php
//Было
$products = commerce_product_load_multiple($product_ids, array('status' => 1));
//Стало (ввел новую переменную)
$cawa_arr['status'] = array(1, 2);
$products = commerce_product_load_multiple($product_ids, $cawa_arr);
?>
Итак, все работает. Осталось разобраться с кнопками, чтобы одна появлялась. а другая исчезала.
Для этого в template.phpтемы добавил функцию:
<?php
function ТЕМА_form_alter(&$form, &$form_state, $form_id) {
if (strpos($form_id, "commerce_cart_add_to_cart_form") === 0) {
if (isset($form['product_id']['#value'])) {
$product = commerce_product_load($form['product_id']['#value']);
if($product->status == '2'){
unset($form['submit']);// т.е. "Заказ", удаляю кнопку "Добавить в корзину"
$form['commerce_buy_one_click_button']['#disabled'] = FALSE;
} else {
$form['submit']['#disabled'] = FALSE;
unset($form['commerce_buy_one_click_button']);// т.е. "Добавить в корзину", удаляю кнопку "Заказ"
}}}}
?>
ИТОГО: Пока все работает... Кликаю "Заказать" - высвечивается форма обратной связи.
Далее - я по почте получаю извещение о заказе и ВАЖНО Заказ отражается у меня в заказах.