10

Magento Community Edition ver 1.8.0.0 (デフォルト設定) をインストールしました。

システム -> 構成 -> 販売 -> チェックアウト -> チェックアウト オプション
ワンページ チェックアウトを有効にする: はい
ゲスト チェックアウトを許可する: はい

クエリ文字列メソッドを使用して商品をカートに追加しようとしています。
私が見つけたすべてのリソースによると、これらは正しい方法です。

[store]/checkout/cart/add/product/1/
[store]/checkout/cart/add?product=1&qty=1

しかし、彼らは働いていません...カートは空のままです。

しばらくして、私は実用的な解決策を見つけました:

[store]/checkout/cart/add/product/1/form_key/yu6b5VEzwSU2V7YE/

ただし、form_keyパラメーターを URLに入れたくありません。 私の場合、このセキュリティ機能は必要ありません。

たとえば、製品比較は form_key なしで正常に機能します。

[store]/catalog/product_compare/add/product/1/

アイデアは、他のいくつかの Web サイトに静的リンクを配置することです (そのため、動的に生成された form_key は不明です)。そのため、顧客がそれをクリックすると、カートがいっぱいになったストアにすぐにリダイレクトされます。

form_key パラメータを削除しても、製品をカートに追加することはできますか? もしそうなら、どのように?

4

7 に答える 7

21

これは、Magento C 1.8 で最適に機能します。

<?php
 
$formKey = Mage::getSingleton('core/session')->getFormKey();?>

<form action="/checkout/cart/add/product/<?php echo $productid; ?>" method="post">
    <input type="hidden" name="form_key" value="<?php echo $formKey; ?>" />

    <input type="text" name="qty"> QTY

    <input type="submit" value="Add to basket" />
</form>
于 2013-11-15T10:52:32.327 に答える
3

このステップはそれほど複雑ではありません。この助けを願っています。

//Namespace need to change with your namespace
//AddProduct need to change with your module name
class Namespace_AddProduct_AddController extends Mage_Core_Controller_Front_Action {
    public function indexAction() {
            $product_id = $this->getRequest()->getParam('products');
            $qty = $this->getRequest()->getParam('qty');  //used if your qty is not hard coded
            $cart = Mage::getModel('checkout/cart');
            $cart->init();
            if ($product_id == '') {
                continue;
            }
            $productModel = Mage::getModel('catalog/product')->load($product_id);

            //I added only Virtual product here. If no need, remove this condtion
            if ($productModel->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL) {
                try
                {
                   $cart->addProduct($productModel, array('qty' => '1'));  //qty is hard coded
                }
                catch (Exception $e) {
                   continue;
                }
            }
            $cart->save();
            if ($this->getRequest()->isXmlHttpRequest()) {
               exit('1');
            }
             $this->_redirect('checkout/cart');
    }
}
于 2013-10-03T10:40:06.333 に答える
2

Magento Web サイトの任意の場所で、製品の「カートに追加」リンクを使用します。

次のコードが役立つ場合があります。

$product = Mage::getModel('catalog/product')->load($YourProductID);

echo Mage::helper('checkout/cart')->getAddUrl($product);

Magento 1.8$formKey = Mage::getSingleton('core/session')->getFormKey();?>から、フォームキー を URL に追加する必要があります

于 2014-09-23T08:36:16.863 に答える
1

これは私がMagento 1.8.1でやっている方法です

<a href="<?= $this->getAddtoCartUrl($_product, array('qty' => $_price['price_qty'])) ?>">

http://docs.magentocommerce.com/Mage_Catalog/Mage_Catalog_Block_Product_Abstract.html#getAddToCartUrlを参照してください。

于 2014-01-15T15:48:11.640 に答える
0

以下は数量セットで使用できます。

$product = Mage::getModel('catalog/product')->load($getProductID);

echo Mage::helper('checkout/cart')->getAddUrl($product, array('qty'=>$getQty));
于 2016-05-11T23:27:20.967 に答える
0

最後に実際に行ったことは、新しい変更を古いコードと比較することでした。カートに追加ボタンが type="button" に設定されていて、送信されていないことがわかりました。

ボタンを単純に type="submit" に変更し、他の変更は実際には機能しませんでした。これは [theme]/template/catalog/product/view/addtocart にあります

存在しない場合は、ベース フォルダから移動する必要がある場合があります

于 2014-05-29T17:52:08.653 に答える