2016-05-13 6 views
0

私のMagentoストアではダウンロード可能な製品が追加されており、この製品をダウンロードするにはニュースレターを購読する必要があります。そのために私はview.phtmlのfile.codeにnewsletter subscriber blockを追加しました。ニュースレターのダウンロード可能なサンプルのサンプルリンクを取得する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ファイル内

は、私は今、私たちが行くファイルをSubscriberController.phpする

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

OKコードの下に使用して、現在の製品のIDを取得し、それは()newActionをです。 newAction()で現在の製品IDを取得するには、以下のコードを使用します。

1):

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

は、今私はIdがあり、この製品を使って何をしたいです。私は現在の製品に関するすべてのデータが必要です。 - >私はこれを以下のコードを使用して得ました:

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に製品リンクをダウンロードしますが、このリンクをクリックするとホームページにリダイレクトされますが、ビューのページでダウンロード可能な製品のgenetatedデフォルトと同じリンクをクリックすると、この問題の理由は何ですか? – Dhaval

+0

このメソッドが呼び出されたときに自動的にダウンロードしたい場合は、SubscriberController.phpのnewactionでダウンロード可能な製品リンクを取得します。何か考えていますか? – Dhaval

+0

@watson StackOverflowで新しい質問を作成してください。ここではこの質問とは関係ありません。ありがとう! – codedge

関連する問題