gpt4 book ai didi

php - 在 Magento 中跳过结帐以获取可下载的产品

转载 作者:可可西里 更新时间:2023-10-31 22:13:44 24 4
gpt4 key购买 nike

我正在使用 Magento 构建一个电子书网站。对于该版本,我们计划提供一些免费的可下载书籍。我们希望可以使用普通的 Magento“目录”功能来添加产品类别。但是,由于这些是可免费下载的产品,因此在用户尝试下载时让他们通过结帐功能确实没有意义。

有谁知道创建完全绕过结帐的免费可下载产品的方法吗?我注意到可下载产品有一个“免费 sample ”选项,但如果可以的话我不想使用它,因为我计划在添加付费产品时将此字段用于预期目的。

[编辑]我注意到你们中的一些人因为“问题不够清晰”而否决了这个问题。为了清楚起见,我想要:

  1. 知道是否有可能创建一个可下载的产品不需要用户的 Magento通过通常的结帐过程(因为它是免费的)
  2. 和这不是“免费 sample ”字段可下载的产品

不幸的是,我认为我不能再更有说服力地问这个问题了。[/编辑]

最佳答案

此代码将允许已登录的客户“下订单”购买免费的虚拟产品,同时绕过结帐并将他们直接重定向到其帐户的“我的下载”部分。

将以下行添加到 catalog/product/list.phtml 中您想要的位置。

<?php if($_product->isVirtual() && $_product->getFinalPrice()==0) { ?>
<a href="/modulename/checkout/purchase/id/<?php echo $_product->getId()?>"><?php echo $this->__('Download and Install') ?></a>
<?php } ?>

然后使用包含以下代码的 controllers/CheckoutController.php 创建一个新模块:

public function purchaseAction() {
if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
$this->_redirectUrl(Mage::getBaseUrl().'customer/account');
return;
}
$request = $this->getRequest();
$id = $request->getParam('id');
$product = Mage::getModel('catalog/product')
->load($id)
->setStoreId(Mage::app()->getStore()->getId());
if(!($product->getIsVirtual() && $product->getFinalPrice() == 0)){
Mage::getSingleton('checkout/session')->addError($this->__('Method only available for Free Downloadable Items'));
return $this;
}
$onepage = Mage::getSingleton('checkout/type_onepage');
/* @var $onepage Mage_Checkout_Model_Type_Onepage */
try{
$quote = $onepage->getQuote();
/* @var $quote Mage_Sales_Model_Quote */
$quote->addProduct($product);
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
$onepage->initCheckout();
$payment=array('method'=>'free');
$onepage->savePayment($payment);
$onepage->saveOrder();
$this->getResponse()->setRedirect('/downloadable/customer/products');
}
catch(Exception $e){
$result = $e->getMessage();
Mage::getSingleton('checkout/session')->addError($result);
}
}

您需要更好地处理异常,但这在功能上应该是正确的。

关于php - 在 Magento 中跳过结帐以获取可下载的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2627036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com