3

シンプルな製品のすべてのオプション/プロパティを使用して、Magento にバンドルされた製品をプログラムで追加しました。バンドル オプション専用の 3 つのメソッドを使用します。

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

その結果、新しく追加されたバンドル製品は、次のプロパティからいくつかのデフォルト値が取得されて、管理セクションに問題なく表示されます:-

  1. sku_type
  2. 体重タイプ
  3. 出荷タイプ
  4. price_view
  5. price_type

ただし、このバンドル製品はフロントエンドにまったく表示されません。理由はわかりません。誰か助けてくれませんか?検索してみましたがだめでした。私が間違っていることについて誰か提案してください。

また、バンドル製品の上記の特別なプロパティを制御して、プログラムによる挿入中にも変更できるようにする必要があります。この点でも誰か助けてもらえますか?

どんな助けでも大歓迎です。

4

1 に答える 1

2

かなり多くのテストの後、私はその中に何らかの方法を見つけました。
「Adminhtml」モジュールの「ProductController.php」ページの「saveAction()」メソッドをよく見ると、「 」のような行があることがわかります$product->save();

この「save()」メソッドに侵入すると、Magento が単純な製品のプロパティに「setData()」メソッドを使用していることがわかります。

したがって、「price」、「weight」、「sku」、「name」、「description」、「short_description」などのフィールドを 1D 配列として使用している場合は、バンドルの必要なプロパティを追加するだけです。この配列リストに製品を追加すると、Magento が残りを行います。

つまり、配列には次のような単純な要素が含まれるということです:-

Array
(
  ['name'] => 'simple',
  ['description'] => 'test',
  ['short_description'] => 'simple test',
  ['sku_type'] => 0,
  ['sku'] => 'simple01',
  ['weight_type'] => 1,
  ['weight'] => 12,
  ['price_type'] => 1,
  ['price'] => 250,
  ['shipment_type'] => 0
)

setData()次に、この配列を " " メソッドに渡す必要があります。

Magento は本当に美しいと思います。
それが役に立てば幸い!

于 2010-06-28T15:37:59.083 に答える