Cómo conseguir enlaces de productos descargables después de la orden con éxito
Pregunta
Después de un exitoso fin me gustaría proponer directamente la URL descargable para productos comprador comprado en el archivo success.phtml.
Me escribió esta pieza de código para saber los valores del producto de la última orden:
// Get the latest Order ID
$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());
// Get every products on the latest order
$items = $order->getAllItems();
// Loop the products
foreach ($items as $item){
$product = Mage::getModel('catalog/product')->setStoreId($order->getStoreId())->load($item->getProductId());
// HERE I NEED FUNCTION TO GET DOWNLOADABLE URL LINK
}
Solución
He encontrado una solución, aquí está:
En primer lugar, crear un nuevo archivo en la plantilla .phtml / descargables /, llamé a la mina downloadablelist.phtml
A continuación, copie todos plantilla / descargables / cliente / productos / list.phtml en nuestra nueva downloadablelist.phtml
Esto nos dará una copia del cliente cuenta Mi lista de productos descargables.
Llame a nuestro bloque en la página éxito:
<?php echo $this->getLayout()->createBlock('downloadable/customer_products_list')->setTemplate('downloadable/checkout/downloadablelist.phtml')->toHtml(); ?>
Ahora Limpié lo que no necesito de la lista de productos. He quitado la mesa y añadí un lugar ul.
A continuación es para mostrar sólo los productos que están hechos de la última orden.
<?php
$_items = $this->getItems();
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
if(count($_items)):
$_group_id = Mage::helper('customer')->getCustomer()->getGroupId();
echo '<p><strong>'.$this->__('Downloadable products').' : </strong></p>'; ?>
<ul style="margin-left: 30px; list-style: disc;">
<?php foreach ($_items as $_item):
$itemOrderId = $_item->getPurchased()->getOrderIncrementId();
if($itemOrderId == $orderId) {?>
<li><?php echo $this->htmlEscape($_item->getPurchased()->getProductName()) ?> - <a href="<?php echo $this->getUrl('downloadable/download/link/', array('id' => $_item->getLinkHash(), '_secure' => true)) ?>" title="<?php echo Mage::helper('downloadable')->__('Start Download') ?>" <?php echo $this->getIsOpenInNewWindow()?'onclick="this.target=\'_blank\'"':''; ?>><?php echo $_item->getLinkTitle() ?></a></li>
<?php }
endforeach; ?>
</ul>
<?php endif; ?>
Me cambió la dirección URL del archivo descargable original tuvo que:
href="<?php echo $this->getUrl('downloadable/download/link/', array('id' => $_item->getLinkHash(), '_secure' => true)) ?>"
Gracias
Otros consejos
Esto funcionó para mí:
$links = Mage::getModel('downloadable/link_purchased_item')->getCollection()
->addFieldToFilter('order_item_id', $item->getId());
foreach ($links as $link) {
echo Mage::helper('downloadable')->__('download') .
$this->getUrl('downloadable/download/link',
array('id' => $link->getLinkHash(), '_store' => $order()->getStore(),
'_secure' => true, '_nosid' => true));
}