Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Drupal Commerce: программный вывод кнопки "Добавить в корзину"

Drupal Commerce: программный вывод кнопки "Добавить в корзину"
, by

Вопрос такой, мне нужно вывести программно кнопку "Add to cart" в шаблоне Views. Делаю по примеру http://drupal.org/node/1232470#comment-4801356 и по документации http://api.drupalcommerce.org/api/Drupal%20Commerce/sites!all!modules!commerce!modules!cart!commerce_cart.module/function/commerce_cart_add_to_cart_form/DC

вот так:

 

<?php
    // build the line items for shopping cart
    $line_item = commerce_line_item_new($view['product']->type, $order_id = 0);
    $line_item->data['context']['product_ids'] = array($view['product']->product_id);
    $line_item->quantity = 1;
   
    // need to create config for quantity
    $qty = 1;
   
    $form_id = commerce_cart_add_to_cart_form_id(array($view['product']->product_id), $qty);
    $addtocart_form = drupal_get_form($form_id, $line_item);
   
    // we alter the submit form to use our special theme function
    // need to move this to configuration
    $addtocart_form['submit']['#theme'][] = 'vtcommerce_button_small';
   
    $variables['cart'] = render($addtocart_form);
   
?>

так вот сама кнопка нормально выводится, а вот виджет с добавлением количества товаров нет, хотя $line_item->quantity = 1; и $qty = 1; .
Вопрос: почему?
1 answer
votes: 749
Answer

Если вы выводите через Views тогда можно выводить поле кнопки если выводите полями или если через тизеры выводите, тогда можно в шаблоне задать вывод кнопки, предварительно вывод тизера через отображение полей тоже нужно настроить. Если нужно использовать ни тизер, ни полную ноду, тогда добавляйте вариант отображения ноды в отображение полей и выводите через этот вариант.

 


Я вывожу данные о товаре через поля. Делаю шаблон для "Вывод в стиле строк: ". Когда я не задаю свой шаблон tpl.php для Views то у меня выводится и кнопка "Добавить в корзину" и виджет с  количеством товара, но мне нужно темизировать особым образом, поэтому я и создал шаблон, но виджета нету.  В настройках самого поля "(Product) Commerce Product: Add to Cart form (Add to Cart form)" напротив "Display a textfield quantity widget on the add to cart form. " галочка естественно стоит, да и вроде как от этого не должно зависеть я думаю, а должно завесеть от свойсвтва quantity в массиве $line_item, ведь кнопка же все таки с помощью функции создается, но на всякий случай я и в настройках поля нужную опцию отметил, но все равно не работает.


А если поставить unformatted list, переопредилить шаблон для вывода row,  где уже обработанные поля выводятся, то там все нормально выводится?

Вам нужно темизировать все отображение товара или только выбор в корзину?


Темизировать нужно именно вывод в каталоге, мне нужно сделать как тут http://ponomareva.sale-monster.ru например. Т.е. чтобы была кнопка "В корзину" и "Купить" рядом с ней.  Поменял стиль представления на "неформартированный список", название файла для row предлагаемое Drupal'ом осталось таким же. Ничего не изменилось. Увы...


А кнопки "купить" и "в корзину" одинаково работают?

 


Забыл отписать))Там есть поле quantity просто оно там hidden.


Попробуйте через hook_form_alter() переписать значение с hidden на textfield.


Да это то уже не проблема)Но спасибо что ответили)


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