2010-09-23 25 views
5

Tôi có một sản phẩm nhất định cần phải có trong giỏ hàng trong một số trường hợp nhất định. Tôi đã xem tài liệu hướng dẫn Ubercart api và tôi không thấy bất kỳ móc nào có thể là nơi hiển nhiên để xem một mục nào đó tồn tại trước khi thanh toán hay không.Drupal/Ubercart Kiểm tra xem một sản phẩm nhất định có trong giỏ hàng khi thanh toán

Tôi có thể sử dụng móc hook_add_to_cart để thêm mục đặc biệt bất cứ khi nào mục đầu tiên được thêm vào, nhưng tôi lo ngại rằng khách truy cập có thể xóa mục và sau đó hoàn tất giao dịch mua mà không cần mục.

Bất kỳ đề xuất nào về cách đảm bảo mặt hàng đặc biệt trong giỏ hàng khi thanh toán?

Trả lời

2

Bạn có thể có một mô-đun và chạy một cái gì đó như:

function mymodule_init() { 
    if (preg_match('/checkout/', request_uri()) { 
     $items = uc_cart_get_contents(); 
     foreach ($items as $item) { 
     // code 
     } 
    } 
} 

Đó sẽ cháy lên trên trang thanh toán, và lấy các nội dung giỏ hàng . Mỗi khi họ truy cập trang thanh toán, uc_cart_get_contents() trả về nội dung giỏ hàng.

http://www.ubercart.org/docs/api/uc_cart_get_contents

Có nhiều cách có lẽ tốt hơn để làm những gì bạn muốn làm dù, như sử dụng một hành động có điều kiện để ngăn chặn thanh toán nếu mục B là trong giỏ hàng nhưng Mục A thì không. Bạn cũng có thể xem Bộ sản phẩm, nhưng tôi không có nhiều kinh nghiệm về điều đó.

2

Từ những gì bạn nói có vẻ như mô-đun bộ sản phẩm có thể rất đáng để xem như một cách đảm bảo bất kỳ mục nào liên quan đến sản phẩm chính được lưu trong giỏ hàng.

Bộ sản phẩm đến như là một phần của ubercart và bạn sẽ tìm thấy nó trên trang mô-đun trong 'Ubercart - extra'. Nếu đây là không tốt thì chúng ta có thể thấy về việc sử dụng API :)

+0

Tôi không nghĩ rằng mô-đun bộ sản phẩm sẽ hoạt động trong tình huống của tôi nhưng cảm ơn đề xuất, đó có thể là nơi tôi có thể nhận được một số ý tưởng về cách triển khai giải pháp. – Icode4food

2

Câu hỏi cũ, nhưng tôi đã tìm thấy một giải pháp tuyệt vời.

hook_uc_cart_item_delete() hoạt động cụ thể trên các thực thể nhất định khi chúng được xóa. Bạn chỉ có thể đặt móc này trong mô-đun của mình, kiểm tra đối tượng cụ thể đang bị xóa phụ thuộc vào mục khác và sau đó sử dụng uc_cart_remove_item() trên mục bạn muốn xóa.

Các vấn đề liên quan