Magento 1.9.X 从外部站点将具有自定义选项的产品添加到购物车
Magento 1.9.X add product with custom options to cart from external site
我有一个外部网站,允许客户设计产品,然后使用 HTML 表格来 post 此数据。我需要获取此信息并将此产品(带有自定义选项)添加到我们 Magento 网站上的客户购物车,但我不确定如何进行此操作。
起初我尝试使用 URL 重定向进行一些简单的操作,但是 Magento 1.9.X 不再支持像这样添加到购物车:
$cart_url = "website.com/checkout/cart/add/product=" . $product_id . "&qty=1" //Include custom options somehow
<form action=<?php echo $cart_url?>>
<input type="hidden" value="pid"> product id </input>
<input type="hidden" value="option1"> custom option 1</input>
</form>
研究表明,我还可以通过编写自定义控制器或 Events/Observers 添加带有自定义选项的项目,但由于我是 Magento 的新手,所以我不确定如何添加从 Magento 外部触发事件和观察者函数。
如能为我指明正确的方向,我们将不胜感激。
您必须在 magento 中创建自定义模块。
创建文件app/etc/MyExtension_AddProductFromUrl.xml
<config>
<modules>
<MyExtension_AddProductFromUrl>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Checkout/>
</depends>
</MyExtension_AddProductFromUrl>
</modules>
</config>
创建文件app/code/local/MyExtension/AddProductFromUrl/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyExtension_AddProductFromUrl>
<version>0.1.0</version>
</MyExtension_AddProductFromUrl>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<MyExtension_AddProductFromUrl before="Mage_Checkout">MyExtension_AddProductFromUrl</MyExtension_AddProductFromUrl>
</modules>
</args>
</checkout>
</routers>
</frontend>
</config>
创建文件app/code/local/MyExtension/AddProductFromUrl/controllers/CartController.php
<?php
require_once 'Mage/Checkout/controllers/CartController.php';
class MyExtension_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)) || $formKey != Mage::getSingleton('core/session')->getFormKey()) {
$this->getRequest()->setParams(array('form_key' =>Mage::getSingleton('core/session')->getFormKey()));
}
// do parent actions
parent::addAction();
}
}
?>
另见
- Magento - Add a product to the cart via query string without form_key parameter
- https://magento.stackexchange.com/questions/37779/i-want-to-use-add-to-cart-via-url-in-magento-1-8-but-dont-know-which-files-to-c
我在 1.9.0.1 中与此斗争了一段时间,但 St0iK 上面的解决方案经过以下更改后有效:
1) place the module .xml file in app/etc/modules (as opposed to app/etc)
2) In the controller file - i had to remove _Checkout_
class MyExtension_AddProductFromUrl_Checkout_CartController extends Mage_Checkout_CartController {
至
class MyExtension_AddProductFromUrl_CartController extends Mage_Checkout_CartController {
经过这些微小的修改后,它可以完美运行。不确定这些是否仅对 1.9.0.1 是必需的,但无论出于何种原因,它们都是必需的。
要将产品添加到购物车,我只使用 URL 格式
YOURSTORE.com/checkout/cart/add/product/123/qty/1
外部 PPC
或 SEO
着陆页的绝佳解决方案需要一个简单的 "buy now" 按钮直接放入您的 magento 购物车。
我有一个外部网站,允许客户设计产品,然后使用 HTML 表格来 post 此数据。我需要获取此信息并将此产品(带有自定义选项)添加到我们 Magento 网站上的客户购物车,但我不确定如何进行此操作。
起初我尝试使用 URL 重定向进行一些简单的操作,但是 Magento 1.9.X 不再支持像这样添加到购物车:
$cart_url = "website.com/checkout/cart/add/product=" . $product_id . "&qty=1" //Include custom options somehow
<form action=<?php echo $cart_url?>>
<input type="hidden" value="pid"> product id </input>
<input type="hidden" value="option1"> custom option 1</input>
</form>
研究表明,我还可以通过编写自定义控制器或 Events/Observers 添加带有自定义选项的项目,但由于我是 Magento 的新手,所以我不确定如何添加从 Magento 外部触发事件和观察者函数。
如能为我指明正确的方向,我们将不胜感激。
您必须在 magento 中创建自定义模块。
创建文件app/etc/MyExtension_AddProductFromUrl.xml
<config>
<modules>
<MyExtension_AddProductFromUrl>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Checkout/>
</depends>
</MyExtension_AddProductFromUrl>
</modules>
</config>
创建文件app/code/local/MyExtension/AddProductFromUrl/etc/config.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<MyExtension_AddProductFromUrl>
<version>0.1.0</version>
</MyExtension_AddProductFromUrl>
</modules>
<frontend>
<routers>
<checkout>
<args>
<modules>
<MyExtension_AddProductFromUrl before="Mage_Checkout">MyExtension_AddProductFromUrl</MyExtension_AddProductFromUrl>
</modules>
</args>
</checkout>
</routers>
</frontend>
</config>
创建文件app/code/local/MyExtension/AddProductFromUrl/controllers/CartController.php
<?php
require_once 'Mage/Checkout/controllers/CartController.php';
class MyExtension_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)) || $formKey != Mage::getSingleton('core/session')->getFormKey()) {
$this->getRequest()->setParams(array('form_key' =>Mage::getSingleton('core/session')->getFormKey()));
}
// do parent actions
parent::addAction();
}
}
?>
另见
- Magento - Add a product to the cart via query string without form_key parameter
- https://magento.stackexchange.com/questions/37779/i-want-to-use-add-to-cart-via-url-in-magento-1-8-but-dont-know-which-files-to-c
我在 1.9.0.1 中与此斗争了一段时间,但 St0iK 上面的解决方案经过以下更改后有效:
1) place the module .xml file in app/etc/modules (as opposed to app/etc)
2) In the controller file - i had to remove
_Checkout_
class MyExtension_AddProductFromUrl_Checkout_CartController extends Mage_Checkout_CartController {
至
class MyExtension_AddProductFromUrl_CartController extends Mage_Checkout_CartController {
经过这些微小的修改后,它可以完美运行。不确定这些是否仅对 1.9.0.1 是必需的,但无论出于何种原因,它们都是必需的。
要将产品添加到购物车,我只使用 URL 格式
YOURSTORE.com/checkout/cart/add/product/123/qty/1
外部 PPC
或 SEO
着陆页的绝佳解决方案需要一个简单的 "buy now" 按钮直接放入您的 magento 购物车。