Làm cách nào để cập nhật tùy chọn tùy chỉnh sản phẩm trên Trang giỏ hàng?


8

Tôi có một sản phẩm đơn giản với các tùy chọn tùy chỉnh. Khi ai đó chọn bất kỳ tùy chọn nào và nhấp vào thêm vào giỏ hàng sản phẩm với tùy chọn sẽ chuyển đến giỏ hàng nơi sản phẩm và tùy chọn đã chọn được hiển thị.

Bây giờ đến tình huống tôi cần thay đổi dòng chảy của Magento. Tôi muốn cập nhật giá trị tùy chọn đó trên trang giỏ hàng. Cụ thể hơn tôi muốn làm cho khách hàng có thể chọn hoặc thay đổi tùy chọn trên trang giỏ hàng.

Những gì tôi đã làm cho đến nay là tôi đã theo dõi rằng các mục được hiển thị từ template/checkoput/cart/item/default.phtml.

Tôi đã đặt danh sách tùy chọn thả xuống ở đó trong một hàng sản phẩm và đặt nút lưu gần danh sách thả xuống. Nhưng một lần nữa làm thế nào để tôi cập nhật nó?

Câu trả lời:


6

Câu hỏi thú vị. Tôi khuyên bạn không nên làm điều đó bằng cách thêm nút "Cập nhật" vào từng mục mà sử dụng thói quen "Cập nhật giỏ hàng" chung của Magento.

Trong trường hợp này, chúng tôi có thể giả định rằng các giá trị thả xuống của bạn sẽ được gửi cùng với biểu mẫu. Sau đó, bạn có thể quan sát checkout_cart_update_items_aftersự kiện, nhận các tùy chọn cập nhật Mage::app()->getFrontController()->getRequest()->getParam(...)và thay đổi tùy chọn đã chọn của từng mục.

Đây chỉ là giả định lý thuyết của tôi nhưng tôi chắc chắn rằng bạn không mong đợi mã hoàn chỉnh. Mặt khác, có một phần mở rộng thương mại ngoài kia đang làm chính xác những gì bạn cần.


Cảm ơn Tim đã giúp đỡ của bạn, tôi đã quản lý để làm điều này. Đối với điều này, tôi đã thực hiện một mô-đun tùy chỉnh.
Sarvagya

Tim, có thể nhận được giá trị được đăng trong sales_quote_collect_totals_b Before, tôi đã tạo tùy chọn tùy chỉnh trong nó cần đặt giá trị với dữ liệu được đăng đó không ??
Milople Inc

Tôi không chắc chắn nếu tôi hiểu bạn đúng nhưng bạn có thể tìm nạp nó từ đối tượng mục trích dẫn và đối tượng mục trích dẫn có thể được tìm nạp từ trích dẫn và người quan sát tương ứng.
dùng487772

4

Tôi đã hoàn thành công việc của mình, đây là cách tôi đã làm điều đó:

Tôi chỉ sử dụng jquery và ajax và tạo ra một mô-đun tùy chỉnh trong đó tôi đã thực hiện một hành động với mã:

  $options = $item->getOptions();

  foreach ($options as $option) 
{ 

switch (true) 
    {

        case (strtolower($option->getCode()) == 'info_buyrequest') :
            $unserialized = unserialize($option->getValue());
            $unserialized['options'][2] = $info_option_value;
            $option->setValue(serialize($unserialized));
            break;

            case ($option->getCode() == "option_2") :
            $option->setValue($info_option_value);
            break;
    }

}
$item->setOptions($options)->save(); 
Mage::getSingleton('checkout/cart')->save();

Khi bất kỳ ai nhấn nút, hành động này được gọi thông qua ajax và Xong !!!!

Nếu ai cần giải pháp chi tiết hơn hãy hỏi nó ở đây.


1
Làm thế nào để bạn biết rằng tùy chọn_2 là một trong những thay đổi?
Nuno Furtado

1
làm tốt lắm! Tôi đã đứng 2 ngày để tìm ra nó cho đến khi tôi tìm thấy giải pháp của bạn. cảm ơn!
Dan Ovidiu Boncut 4/03/2015

@Sarvagya, tôi phải làm tương tự trong magento2. bạn có thể vui lòng giúp đỡ
surbhi agr

2

Giả sử chúng ta có sản phẩm Magento có thể định cấu hình trong giỏ hàng và chúng tôi muốn cập nhật các tùy chọn của nó mà không xóa sản phẩm khỏi giỏ hàng và thêm lại.

Điều đó khá dễ dàng để đạt được với các bước sau, tuy nhiên tôi không thể viết hướng dẫn đầy đủ ở đây vì vậy bạn nên làm quen với Magento một chút để làm cho nó hoạt động.

Để biết thêm chi tiết, bạn có thể tham khảo liên kết sau: http://inchoo.net/ecommerce/magento/updating-options-of-configurable-product-that-is-alpered-in-the-cart/

Tôi hy vọng điều này sẽ giúp bạn :)


Làm thế nào chúng ta có thể làm điều này trong magento2
surbhi agr

1

Hãy thử mã này được sử dụng để thêm sản phẩm vào giỏ hàng với các tùy chọn theo yêu cầu.

$cart   = Mage::getModel("checkout/cart");

$params = $this->getRequest()->getParams();
$product =Mage::getModel('catalog/product')->load($product_id);

try{
$cart->addProduct($product,$params);
$cart->save();
}catch (Exception $ex) {
echo $ex->getMessage();
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.