1

私はこれをしばらくの間機能させようとしています。

私の製品はコンタクト レンズです。注文するときは、半径、厚さ、ディオプターなどのオプションを 2 回 (左目と右目) 記入する必要があります。

[カートに追加] を押したときに、同じ製品をカートに 2 回追加したい (1 回目は左目のオプション、2 回目は右目のオプション)。

これは Opencart で可能ですか?

4

1 に答える 1

1

基本的に、(特定の製品について) すべての製品情報とオプションを画面に 2 回表示し、[カートに追加] をクリックすると両方のセットがカートに追加されるようにして、それらが別々の製品として表示されるようにします。

特定の条件下でオプションを繰り返すことは、かなり簡単です。

残念なことに、OpenCart の Add To Cart は、1 セットの製品データのみを想定しています。これは、次の 4 つの場所で期待されます。

  • Ajax 経由でオプションを送信する jQuery スクリプト
  • Ajax 送信から実際に製品を追加するルーチン
  • 標準フォーム送信から製品を追加するルーチン
  • 「成功!Bongo Contact Lens をカートに追加しました!」というルーチン。

それでも、製品を追加するコード内には、製品オプションの 1 つのセットが想定されています。

変更が必要になる可能性のあるコードや、一般的にいじりたくないコードがたくさんあります。

しかし、方法があります。

index.php?route=checkout/cart/add を台無しにしたくなく、コードを product.tpl テンプレートと JavaScript 内に保持したいと仮定します。

最初に行う必要があるのは、製品入力 (非表示の入力を含む) を .lens-left などの一意のクラスで div にラップし、行内の .product-info のすべてのインスタンスの代わりにそのクラス名を使用することです。

data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),

次に、読み込み時に関連する製品ページで起動される JS をいくつか書きます。

  1. クラス lens-right を持つ新しい div を追加し、lens-left の内容をそれにコピーします。
  2. 標準呼び出しの正確なコピーであるが、2 番目のセットのクラス名を使用する 2 番目の Ajax 呼び出しをカート ボタンにバインドします。

これらすべてが整ったら、[カートに追加] をクリックすると、最初の製品がカートに追加され、次に 2 番目の製品がカートに追加されます。これをまとめて行うのではなく順番に行うということは、一度に 1 つのデータ セットのみを渡すことを意味します。JS を使用して 2 番目のセットを追加すると、JS を使用しないユーザーには表示されません。

これは、オンロード JS に「左目と右目で異なるレンズが必要です」というボタンを追加することでさらに改善できます。これにより、他のすべてのものが起動されます。

于 2012-11-16T17:53:35.707 に答える