Php 跳过Magento中可下载产品的签出

Php 跳过Magento中可下载产品的签出,php,magento,download,product,Php,Magento,Download,Product,我正在使用Magento建立一个电子书网站。对于此次发行,我们计划推出一些免费的可下载书籍。我们希望能够使用正常的Magento“目录”功能添加产品类别。然而,由于这些都是免费下载的产品,所以当用户尝试下载时,通过签出发送给他们是没有意义的 有人知道一种方法来创建一个完全绕过结帐的免费下载产品吗?我注意到,对于可下载的产品,有一个“免费样品”选项,但如果可以的话,我不想使用这个选项,因为我计划在添加付费产品时使用这个字段 [编辑] 我注意到,你们中的一些人因为“问题不够清晰”而否决了这个问题。为

我正在使用Magento建立一个电子书网站。对于此次发行,我们计划推出一些免费的可下载书籍。我们希望能够使用正常的Magento“目录”功能添加产品类别。然而,由于这些都是免费下载的产品,所以当用户尝试下载时,通过签出发送给他们是没有意义的

有人知道一种方法来创建一个完全绕过结帐的免费下载产品吗?我注意到,对于可下载的产品,有一个“免费样品”选项,但如果可以的话,我不想使用这个选项,因为我计划在添加付费产品时使用这个字段

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

  • 知道是否有可能 在中创建可下载的产品 不需要用户的Magento 办理通常的结帐手续 进程(因为它是免费的)
  • 及 哪个不是“自由样本”字段 可下载产品的
  • 不幸的是,我想我不能再雄辩地问这个问题了。 [/EDIT]

    我最好的盲目猜测(查看Mage_可下载的模块和模型)是使用product type实例。因此,在产品模板中的某个地方,您可以做到:

    // $_product is the current product
    $links = $product->getTypeInstance(true)->getLinks();
    if(count($links)) {
        foreach($links as $link) {
            print "<a href='". $this->getUrl('downloadable/download/link', array(
                'id'        => $item->getLinkHash(),
                '_secure'   => true,
                '_nosid'    => true
            )) . "'>Download</a>";
        }
    }
    
    /$\u产品是当前产品
    $links=$product->getTypeInstance(true)->getLinks();
    如果(计算($links)){
    foreach($links作为$link){
    打印“”;
    }
    }
    
    如果没有,我希望至少能让你走上正确的道路

    希望有帮助。谢谢
    Joe

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

    将以下行添加到所需位置的
    目录/产品/列表.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 } ?>
    

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

    您可以循环浏览可下载链接的列表,并为每个链接添加一个链接

    $links=Mage::getModel('downloadable/link')
            ->getCollection()
            ->addFieldToFilter('product_id',array('eq'=>$_product->getId()));
    
    foreach($links as $link){
        echo "<a href='" . $link->getLink_url() . "'>Download</a>";
    }
    
    $links=Mage::getModel('downloadable/link')
    ->getCollection()
    ->addFieldToFilter('product_id',array('eq'=>$\u product->getId());
    foreach($links作为$link){
    回声“;
    }
    
    我猜人们可能不喜欢这个标题。听起来确实有点像垃圾邮件。也许是“跳过Magento中的签出”之类的东西?很好的反馈,-我已经更新了标题。你想将下载记录为“订单”还是只允许人们抓取它们。作为订单,您可以查看下载者的历史记录…谢谢。看起来我的一位同事设法用可配置的产品做到了这一点,但我不知道如何做到。如果我发现了,我会把它贴在这里。
    $links=Mage::getModel('downloadable/link')
            ->getCollection()
            ->addFieldToFilter('product_id',array('eq'=>$_product->getId()));
    
    foreach($links as $link){
        echo "<a href='" . $link->getLink_url() . "'>Download</a>";
    }