2016-05-13 54 views
0

在我的Magento商店中,我添加了可下载的产品,如果用户想下载此产品,用户需要订阅我们的通讯。为此,我在view.phtml file.code中添加了通讯录订阅块。获取可下载的产品样本链接通讯SubscriberController Magento

<?php $download = Mage::registry('current_product')->getTypeId();?> 
      <?php 
       if($download == 'downloadable') 
       { ?> 

       <div class="pop-upss"> 
        <input type="button" onclick="showMrnlePopup();" value="To Download This Product You Need To Subscribe Our Newsletter" name="submit"/> 
       </div> 
      <?php }  ?> 

所以我设置了onclick函数,当用户点击这个按钮时,通讯弹出窗口会打开。

在通讯PHTML文件

我得到当前产品的ID使用下面的代码

<input type="hidden" name="pro_id" value="<?php echo Mage::registry('current_product')->getId();?>"> 

好了,现在我们去SubscriberController.php文件和它的newAction()。我使用下面的代码在newAction()中获取当前产品ID。

$product_id = $this->getRequest()->getPost('pro_id'); 

现在我想用这个产品ID:

1)。我需要关于当前产品的所有数据。 - >我得到这是使用下面的代码:

if($product_id) { 
    $obj = Mage::getModel('catalog/product'); 
    $_product = $obj->load($product_id); 

    echo '<pre>'; 
    print_r($_product->getData()); 
    die; 
} 

2)。如果这个产品是可下载的,那么我希望它是样本数据,它是下载产品的链接,但我无法获得当前产品的下载链接。我的代码获取下载链接如下。

if($_product->hasSamples()) { 
    $_samples = $this->getSamples(); 

    foreach ($_samples as $_sample){ 
     echo $samplePath = $_sample->getBasePath(); 
     echo $sampleFile = $_sample->getSampleFile(); 
    } 
} else { 
    echo 'not getting anything here...'; 
} 

当我运行上面的代码时,它会进入其他部分并回显'没有得到任何东西......'。 所以请任何人知道我如何获得可下载的产品链接请帮助我。

谢谢。

+0

你能告诉我从你的控制器完整的'newAction()'方法吗? – codedge

回答

2

获取这些链接有点复杂。我准备了一小段如何获取示例文件和正常链接。

public function indexAction() 
{ 

    $product_id = $this->getRequest()->getPost('pro_id'); 

    if($product_id) { 
     /** @var Mage_Catalog_Model_Product $product */ 
     $product = Mage::getModel('catalog/product')->load($product_id); 

     if($product->getTypeId() == 'downloadable') { 
      /** @var Mage_Downloadable_Model_Resource_Sample_Collection $samples */ 
      $samples = Mage::getModel('downloadable/sample')->getCollection()->addProductToFilter($product_id); 

      if($samples->count() > 0) { 
       foreach($samples as $sample) { 
        /** @var Mage_Downloadable_Model_Sample $sample */ 
        $url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'downloadable/files/samples' . $sample->getSampleFile(); 
        echo 'Sample URL: ' . $url . "<br>"; 
       } 
      } 

      /** @var Mage_Downloadable_Model_Resource_Link_Collection $links */ 
      $links = Mage::getModel('downloadable/link')->getCollection()->addProductToFilter($product); 

      if($links->count() > 0) { 
       foreach($links as $link) { 
        /** @var Mage_Downloadable_Model_Link $link */ 
        $url = Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'downloadable/files/links' . $link->getLinkFile(); 
        echo 'Link URL: ' . $url; 
       } 
      } 
     } 
    } 
} 

你需要加载的downloadable/sampledownloadable/link收集和传递产品型号或产品ID给它。这是Magento的方式;-)

+0

@codeedge我用你的代码,我在SubscriberController.php中下载产品链接,但是当我点击这个链接时,它会重定向到主页,但是当我点击相同的链接,这是默认的可下载产品在查看页面上打开PDF文件那么你能告诉我这个问题的原因是什么? – Dhaval

+0

现在,如果我希望在下载的产品链接中自动下载SubscriberController.php的newaction时调用此方法,那么我需要做什么?你有什么主意吗? – Dhaval

+0

@watson请在StackOverflow上为此创建一个新问题,因为这与此问题无关。谢谢! – codedge

相关问题