2012-01-27 9 views
4

でカートのアイテムにカスタムデータを追加します。もう存在しない。私がやっている何は、私はインターネットのまわりのチュートリアルの<strong>たくさん</strong>を読んでいましたが、Magentoのサイト上でもものは、バージョン1.5または<em>以下</em>ためのもので、さらにいくつかの機能を参照のMagentoの1.6

は、私はユーザーが設計し、顧客がクリックできるそこからカートに追加して、その背中Magentoのに追加可能Magentoのの外のカスタムスクリプトにアイテムを送信しています、簡単です。

私が必要とするのは、デザインされたイメージファイル名を、オーダープロセスで表示されるラインアイテム固有のデータと、クライアントと管理の両方のビューオーダー履歴にすることです。

checkout_cart_product_add_afterに接続し、次の情報を取得できるモジュールがあります:designsdesignIdです。 designIdは、ユーザーがデザインを編集するために戻った場合に使用されるため、デザインが再ロードされ、アイテムが戻されたときにはdesignsdesignIdの内容を別のものに置き換える必要があります。

現時点では、実際に追加する方法の例はある程度は機能していましたが、最終的にカートに保存できないため、URLを介してカートに追加しています。 MagentoコードのSTORE_IDといくつかのランダムなグリッチの違いは、私が推測します。

私は、これまでのドキュメントから抜け出すのに役立つものがあるかどうかを調べるよりも、より強固な情報へのポインタを高く評価しています。

+0

どのような方法を使用しましたか?あなたはURLパラメータオプションを試しましたが、サンプルコードを入力するのを忘れました。たぶん、あなたのコードは間違っています! –

+0

ドキュメントにもっと興味があります。カートを追加するコードは、モジュールが必要な情報を取得しているのであまり興味がありません。実際に追加しない限り、URLからカートに追加された広告申込情報に実際にデータを追加することに集中しています。コードを貼り付けます。 – user00265

答えて

7

このアプローチでは、多くの点を考慮する必要があります。何かあればそれは単純ではありません。

A)まず、既存の製品カスタムオプションでこれが達成できるかどうかを確認します。あなたがコア機能の多くを変更することなくそれを行うことができる方法があれば、それはあなたの人生をトラックの下で楽にするでしょう。

B)個人的には、カスタムコンテンツのモデルと、そのコンテンツとsales/quote_itemsales/order_itemの関係を作成することを検討します。これを表示するにはフロントエンドを変更し、情報を表示する管理者エリアも変更し、管理者にアイテムにカスタムコンテンツを追加する手段を与える必要があります。おそらくこれを行うことができる最も徹底的な方法です。

C)また、カスタムデータの配列を見積もりに追加して、見積もりに追加することもできます。このためには、カートに追加コントローラを完全にハイジャックする必要があります。まず、既存のコントローラからすべての機能を利用してください。 Mage_Sales_Model_Quote :: addProduct()関数を見て、あなたはそれがそうのような2つのパラメータを取ることがわかります:

$requestは、このようにフォーマットタイプ Varien_Objectである
$quote->addProduct($product, $request); 

$request = new Varien_Object(array(
    'qty'=>$qty, 
    'options'=>$options, 
    'custom_options'=>$custom_options 
)); 

$custom_optionsカスタムデータの配列です。

この方法は役に立ちますが、危険に満ちています。イベントをディスパッチしてすべてのセッションフラグを設定するなど、元のカートに追加されたコントローラの機能をすべて複製する必要があります。他にも考慮すべき点があります。データが広告申込情報固有のものである場合、特定のデータが特定の広告申込情報に適用されるため、Magentoがカート内の広告申込情報の数量を単純に増やすことは望ましくないと思います。これを行うには、Mage_Sales_Model_Quoteを上書きし、getItemByProduct()関数を複製して、広告申込情報に対して異なる一連のチェックを実行し、数量を増やすかどうかを決定します。

Aを実行できない場合は、Bさんが私の推奨する方法です。おそらく、短期間では時間がかかりますが、長期的にはより良い解決策です。

関連する問題

 関連する問題