Drupal 7、Ubercart 3.0の場合、一度にカートに複数の製品を追加するフォームを作成するのに役立つモジュールまたは詳細なハウツーがありますか?
これを行う1つの方法は、ビューの一括操作モジュールを使用することです。最近コミットされたパッチがあり、ここに「カートに追加」アクションを提供します http://drupal.org/node/15537
ビューが作成されたら(フィールドのみ)、コンテンツVBOフィールドを追加し、そこから[カートに追加]アクションを選択できます。理論的には、カートへのリダイレクトは、フォームが送信されたときに適用されるビューを呼び出すときに?destination = cartパラメータを含めることで実行できます。ただし、現時点では、選択されているすべてのアイテムではなく、1つのアイテムとリダイレクトのみが追加されているようです。
これはあなたを助けるはずです。以下のコードは、テンプレートファイルまたは関数に配置できます。ただし、関数で使用する場合は、フォームを返し、レンダリングされたHTMLに追加する必要があります。
$form = drupal_get_form('multi_add_form');
function multi_add_form() {
$form = array();
// Make the products array in the form a tree.
$form['products'] = array(
'#tree' => TRUE,
);
// Use an array of product nids to build the form.
$nids = array(1, 2);
// Add a quantity field for each product. from 0 to 10
foreach ($nids as $nid) {
$node = node_load($nid);
$x = 0;
$options = array();
while ($x <= 10) {
$options[$x] = $x;
$x++;
}
$form['products'][$nid]['qty'] = array(
'#type' => 'select',
'#options' => $options,
'#title' => t('Amount'),
'#default_value' => 0,
);
}
// Add an add to cart button.
$form['add_to_cart'] = array(
'#type' => 'submit',
'#value' => t('Add to cart'),
);
return $form;
}
function multi_add_form_submit($form, &$form_state) {
// Loop through the products array.
foreach ($form_state['values']['products'] as $key => $value) {
// The key is the product nid, the value holds the qty.
if ($value['qty'] > 0) {
// Add the item to the cart if the quantity was increased.
uc_cart_add_item($key, $value['qty']);
}
}
// Display a message and redirect to the cart.
drupal_set_message(t('Your cart has been updated.'));
$form_state['redirect'] = 'cart';
}
print drupal_render($form);