在我的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...';
}
当我在上面运行代码时,它会进入其他部分并回显“没有得到任何东西......”。 所以请那些知道如何获得可下载产品链接的人帮助我。
感谢。
答案 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/sample
和downloadable/link
的集合,并将产品型号或产品ID传递给它。那是Magento的方式; - )