私はこれをしばらくの間機能させようとしています。
私の製品はコンタクト レンズです。注文するときは、半径、厚さ、ディオプターなどのオプションを 2 回 (左目と右目) 記入する必要があります。
[カートに追加] を押したときに、同じ製品をカートに 2 回追加したい (1 回目は左目のオプション、2 回目は右目のオプション)。
これは Opencart で可能ですか?
基本的に、(特定の製品について) すべての製品情報とオプションを画面に 2 回表示し、[カートに追加] をクリックすると両方のセットがカートに追加されるようにして、それらが別々の製品として表示されるようにします。
特定の条件下でオプションを繰り返すことは、かなり簡単です。
残念なことに、OpenCart の Add To Cart は、1 セットの製品データのみを想定しています。これは、次の 4 つの場所で期待されます。
それでも、製品を追加するコード内には、製品オプションの 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 をいくつか書きます。
これらすべてが整ったら、[カートに追加] をクリックすると、最初の製品がカートに追加され、次に 2 番目の製品がカートに追加されます。これをまとめて行うのではなく順番に行うということは、一度に 1 つのデータ セットのみを渡すことを意味します。JS を使用して 2 番目のセットを追加すると、JS を使用しないユーザーには表示されません。
これは、オンロード JS に「左目と右目で異なるレンズが必要です」というボタンを追加することでさらに改善できます。これにより、他のすべてのものが起動されます。