2016-05-13 78 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

相關問題