4

私は初心者です。広範な調査と調査の後、次のことがわかりました。

カートに製品を追加するには、使用できます

/checkout/cart/add?product= 76 &qty= 1

使用できる割引コードを適用するには

/checkout/cart/couponPost?coupon_code= WQ9D-XXXX

そのコードは次のファイルにあります。

/public_html/app/code/local/Mage/Checkout/controllers/ -

次のような 1 つのリンクで製品を追加し、割引コードを適用したいと考えています。

/checkout/cart/couponPost?product= 76 &qty= 1 &coupon_code= WQ9D-XXXX

また

/checkout/cart/add?product= 76 &qty= 1 &coupon_code= WQ9D-XXXX

または他の手段はありますか?

これを機能させる方法はありますか?アイデアは、このリンクをニュースレターに埋め込んで、ユーザーがワンクリックで製品をカートに追加して割引を受けることができるようにすることです.

$this->couponPostAction();からfunction addAction()、またはその逆に電話をかけてみましたが、うまくいきません!

4

3 に答える 3

5

rukpat の回答は Magento 1.8 では機能しません。CartController の addAction メソッドを拡張したら、次のように URL とクエリ文字列をフォーマットする必要があります。

http://www.example.com/checkout/cart/add?product=76&qty=1&return_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D-XXXX

最後の return_url パラメータを省略することもできます。; を含める必要はありません。(セミコロン)。

次のようにして、複数の製品を複数の数量で URL に追加することもできます。

http://www.example.com/checkout/cart/add?product=76&related_product=28,28,28&return_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D-XXXX

したがって、&related_product=28,28,28 を追加して製品 ID への複数の参照を追加するだけで、そのアイテムの複数の数量を追加できます。あまりエレガントではありませんが、機能します。

もちろん、CartController の addAction メソッドを拡張した方がよいでしょう。

このソリューションを Magento 1.8 以降で機能させるには、次のように CartController を変更する必要があります。

: 「名前空間」を独自の名前空間 (会社名や自分の名前など) に置き換えます。

etc/modules/Namespace_AddProductFromUrl.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Namespace_AddProductFromUrl>
            <active>true</active>
            <codePool>local</codePool>
        </Namespace_AddProductFromUrl>
    </modules>
</config>

アプリ/コード/ローカル/名前空間/AddProductFromUrl/コントローラー/チェックアウト/CartController.php

<?php
    require_once 'Mage/Checkout/controllers/CartController.php';

    class Namespace_AddProductFromUrl_Checkout_CartController extends Mage_Checkout_CartController {
        # overloaded addAction
        public function addAction()
        {        
            // generate form_key if missing or invalid
            if ( ! ($formKey = $this->getRequest()->getParam('form_key', null)) or $formKey != Mage::getSingleton('core/session')->getFormKey())
            {
                $this->getRequest()->setParams(array('form_key' => Mage::getSingleton('core/session')->getFormKey()));
            }        

            // do parent actions
            parent::addAction();
        }
    }

アプリ/コード/ローカル/名前空間/AddProductFromUrl/etc/config.xml

<config>
    <frontend>
        <routers>
            <checkout>
                <args>
                    <modules>
                        <Namespace_AddProductFromUrl before="Mage_Checkout">Namespace_AddProductFromUrl_Checkout</Namespace_AddProductFromUrl>
                    </modules>
                </args>
            </checkout>
        </routers>
    </frontend>
</config>
于 2014-03-19T16:42:28.720 に答える
5

コードを変更せずに動作するようになりました。

'http://www.example.com/checkout/cart/add?Product=76&qty;=1&return;_url=http://www.example.com/index.php/checkout/cart/couponPost?coupon_code=WQ9D- XXXX&return;_url=http://www.example.com/checkout/cart/'

return_url はエンコードする必要があります。

参照してください: http://www.magentocommerce.com/boards/viewthread/296763/

于 2012-11-05T22:42:26.887 に答える
0

上記の Namespace_AddProductFromUrl を使用した Gaz のコードが 1.8 で動作することを確認できます。

さらに、たまたま製品がバンドルされている場合は、次の形式の URL を使用する必要があります。

http://domain.com/en/checkout/cart/add?product=24&qty=1&bundle_option[2]=4&bundle_option[3]=8

于 2014-06-05T05:17:45.403 に答える