2010-06-24 24 views
6

Tôi có một số sản phẩm danh mục đơn giản trong Magento, vì vậy tôi có SKU & ID của SKU. Bây giờ tôi muốn tạo một sản phẩm đi kèm bằng cách sử dụng các phần tử mảng "bundle_options" & "bundle_selections" của các mục Bundle, được sử dụng bởi mã quản trị Magento trong lớp Observer của nó.Lập trình thêm các sản phẩm bó trong Magento, sử dụng SKU/ID của các mục đơn giản

Cũng trong lớp Observer, có các cuộc gọi phương thức của hai hàm "setBundleOptionsData()" & "setBundleSelectionsData()", vì tôi không thể tìm thấy bất kỳ định nghĩa hàm nào.

Hãy đăng bất kỳ bài đăng chuyên nghiệp nào tại đây, vì tôi cần một số cách thích hợp để thực hiện việc này. Nếu cần, hãy ghi đè các mô-đun hoặc sử dụng các sự kiện, tôi sẽ làm, nhưng tôi cần sự trợ giúp thực sự chuyên nghiệp. Cảm ơn trước.

Chỉnh sửa: -
Về hai phương pháp nêu trên "setBundleOptionsData()" & "setBundleSelectionsData()", những gì tôi gần như chắc chắn là họ đang sử dụng một số loại phương pháp kỳ diệu PHP, nhưng tôi không biết nơi logic chính của các phương pháp ma thuật này được viết?

Vui lòng cung cấp một số câu trả lời đúng. Bất kỳ trợ giúp nào cũng được đánh giá rất cao.

+0

tôi vẫn đang chờ đợi đối với một số cơ thể để cung cấp một số thông tin hữu ích hơn. –

+0

Vui lòng kiểm tra liên kết này để biết thêm thông tin có giá trị về cách thêm Sản phẩm theo gói theo cách chính xác, theo cách chính xác. http://stackoverflow.com/questions/6161128/magento-programatically-added-bundle-product-isnt-showing-up-in-frontend/6161246#6161246 –

Trả lời

0

Tôi hiện không sử dụng bất kỳ Dịch vụ web nào cho việc này. Tôi chỉ đơn giản là sử dụng các phương pháp sau đây có nghĩa đặc biệt cho các sản phẩm đi kèm, đó là: -

  1. setBundleOptionsData()
  2. setBundleSelectionsData()
  3. setCanSaveBundleSelections (true)

Đối với phương pháp đầu tiên , các chi tiết của các tùy chọn Bundle được cung cấp cho phương thức như tham số dưới dạng một mảng. Tương tự, đối với phương thức thứ hai "setBundleSelectionsData()", chúng tôi đang cung cấp chi tiết về các lựa chọn gói cho phương thức này làm tham số dưới dạng một mảng.

Đây là logic chính trong những gì cần thực hiện để thêm bất kỳ Sản phẩm được nhóm nào trong Magento. Hy vọng điều này sẽ giúp cho bất kỳ người mới nào !!!


Vui lòng kiểm tra this link để biết thêm chi tiết về Gói sản phẩm Tạo đúng cách.

2
  $MyOptions[0] = array (
      'title' => 'My Bad','default_title' => 'My Bad', 
      'delete' => '', 
      'type' => 'radio', 
      'required' => 0, 
      'position' => 0 
     ); 

hoặc

$ optionModel = Mage :: getModel ('bó/tùy chọn') -> addSelection ('op111') -> setTitle ('op111') -> setDefaultTitle (' op111 ') -> setParentId ($ product_id) -> setStoreId ($ product-> getStoreId()); $ optionModel-> save();

+0

Cảm ơn bạn thân, giải pháp thứ hai của bạn đã làm việc cho tôi. –

4

Đã có một thời gian khó khăn với điều này, nhưng thấy rằng điều này đã cho tôi qua cái bướu:

   $items[] = array(
       'title' => 'test title', 
       'option_id' => '', 
       'delete' => '', 
       'type' => 'radio', 
       'required' => 1, 
       'position' => 0); 

      $selections = array(); 
      $selectionRawData[] = array(
       'selection_id' => '', 
       'option_id' => '', 
       'product_id' => '159', 
       'delete' => '', 
       'selection_price_value' => '10', 
       'selection_price_type' => 0, 
       'selection_qty' => 1, 
       'selection_can_change_qty' => 0, 
       'position' => 0); 
      $selections[] = $selectionRawData; 

      $productId = 182; 
      $product = Mage::getModel('catalog/product') 
      ->setStoreId(0); 
      if ($productId) { 
       $product->load($productId); 
      } 
      Mage::register('product', $product); 
      Mage::register('current_product', $product); 
      $product->setCanSaveConfigurableAttributes(false); 
      $product->setCanSaveCustomOptions(true); 

      $product->setBundleOptionsData($items); 
      $product->setBundleSelectionsData($selections); 
      $product->setCanSaveCustomOptions(true); 
      $product->setCanSaveBundleSelections(true); 

      $product->save(); 

Cụ thể,

   Mage::register('product', $product); 
      Mage::register('current_product', $product); 

là chìa khóa

EDIT :: Cũng giống như có một chút đặc thù khi cố gắng thêm nhiều tùy chọn/lựa chọn. Các setBundleOptionsData mất một loạt các tùy chọn tức là

Array(
[1] => Array 
    (
     [title] => Option 2 
     [option_id] => 
     [delete] => 
     [type] => select 
     [required] => 1 
     [position] => 
    ) 

[0] => Array 
    (
     [title] => Option 1 
     [option_id] => 
     [delete] => 
     [type] => select 
     [required] => 1 
     [position] => 
    )) 

Và sau đó các lựa chọn sẽ là một mảng của các lựa chọn mảng với chỉ số của họ tương ứng với các tùy chọn mảng:

Array(
[1] => Array 
    (
     [2] => Array 
      (
       [selection_id] => 
       [option_id] => 
       [product_id] => 133 
       [delete] => 
       [selection_price_value] => 0.00 
       [selection_price_type] => 0 
       [selection_qty] => 1 
       [selection_can_change_qty] => 1 
       [position] => 0 
      ) 

     [3] => Array 
      (
       [selection_id] => 
       [option_id] => 
       [product_id] => 132 
       [delete] => 
       [selection_price_value] => 0.00 
       [selection_price_type] => 0 
       [selection_qty] => 1 
       [selection_can_change_qty] => 1 
       [position] => 0 
      ) 

    ) 

[0] => Array 
    (
     [0] => Array 
      (
       [selection_id] => 
       [option_id] => 
       [product_id] => 206 
       [delete] => 
       [selection_price_value] => 0.00 
       [selection_price_type] => 0 
       [selection_qty] => 1 
       [selection_can_change_qty] => 1 
       [position] => 0 
      ) 

     [1] => Array 
      (
       [selection_id] => 
       [option_id] => 
       [product_id] => 159 
       [delete] => 
       [selection_price_value] => 0.00 
       [selection_price_type] => 0 
       [selection_qty] => 1 
       [selection_can_change_qty] => 1 
       [position] => 0 
      ) 

    )) 
+0

Cảm ơn TON thân yêu, bạn đã cứu tôi khỏi một sự hỗn loạn lớn. Đặc biệt là mã cho nhiều tùy chọn và sản phẩm là cứu tinh cuộc sống. Cảm ơn rất nhiều. –

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