在时事通讯SubscriberController中获取可下载的产品样本链接Magento

时间:2016-05-13 07:19:33

标签: php magento magento-1.9 product

在我的Magento商店,我添加了可下载的产品,如果用户想要下载此产品,则用户需要订阅我们的新闻通讯。为此我在view.phtml file.code中添加了newsletter subscriber block。

<?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)。我想要有关当前产品的所有数据。 - &GT;我得到的是使用下面的代码:

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...';
}

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

感谢。

1 个答案:

答案 0 :(得分: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的方式; - )