Как получить загружаемые ссылки на продукты после успешного заказа

После успешного заказа я хотел бы предложить непосредственно загружаемый URL-адрес для продуктов, купленных покупателем в файле success.phtml.

Я написал этот фрагмент кода, чтобы узнать значения продукта последнего порядка:

// 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
}

person michelem    schedule 01.04.2010    source источник
comment
Во-первых, когда вы можете просто отправить их на их учетную запись клиента, где вся эта работа уже сделана за вас, зачем беспокоиться об этом? Во-вторых, если вы просто не можете справиться с этой функциональностью, уже находясь на странице учетной записи пользователя, смотрели ли вы код, который отображает ссылки на загружаемые продукты, и пытались ли вы смоделировать свой код по образцу их кода?   -  person Prattski    schedule 12.05.2010


Ответы (2)


Я нашел решение, вот оно:

Сначала создайте новый файл .phtml в template/downloadable/ , я назвал свой downloadablelist.phtml.

Затем скопируйте все файлы template/downloadable/customer/products/list.phtml в наш новый загружаемый список.phtml.

Это даст нам копию учетной записи клиента моего списка загружаемых продуктов.

Вызовите наш блок на странице успеха:

<?php echo $this->getLayout()->createBlock('downloadable/customer_products_list')->setTemplate('downloadable/checkout/downloadablelist.phtml')->toHtml(); ?>

Теперь я вычистил то, что мне не нужно из списка продуктов. Я удалил таблицу и вместо нее добавил ul.

Далее стоит показать только те товары, которые сделаны из последнего заказа.

<?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; ?>

Я изменил URL-адрес исходного загружаемого файла:

href="<?php echo $this->getUrl('downloadable/download/link/', array('id' => $_item->getLinkHash(), '_secure' => true)) ?>"

Спасибо

person Petedabeast    schedule 08.03.2012

Это сработало для меня:

$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));
}
person vektorrausch    schedule 14.01.2011