在 Download.php 上访问 $item->getNumberOfDownloadsUsed() 函数

Get access to $item->getNumberOfDownloadsUsed() function on Download.php

我需要获取购买和使用的下载数量,这是 $item 对象上可用的两种方法。但是我无法在我正在处理的文件上实例化 $item:

app/code/core/Mage/Downloadable/Helper/Download.php

在这个文件上,我需要检索已购买下载的购买数量和使用数量。

我也在尝试获取订单 ID 或至少 link 哈希值,以识别具有购买唯一 ID 的 boughts/used 下载次数。

例如,我试试这个:

Mage::getModel('downloadable/link_purchased_item')
            ->load($this->getOrderItem()->getOrder()->getId(), 'order_id');

但是 $this->getOrderItem()Download.php 文件中不可用。我在尝试这个:

Mage::getModel('downloadable/link_purchased_item')->getCollection()
            ->addFieldToFilter('order_item_id', $this->getOrderItem()->getId());

但显然getOrderItem()不可用。

Fatal error: Call to undefined method Mage_Downloadable_Helper_Download::getOrderItem() in /[...]/app/code/core/Mage/Downloadable/Helper/Download.php on line 135

但我可以像这样使用客户单例来检索客户数据:

$cliente = Mage::getSingleton('customer/session')->getCustomer();

所以在这个文件上我可以访问其他方法,但我无法获得以下详细信息:

请教如何获取当前订单实例和/或当前link实例,在Download.php与文件下载相关。

谢谢!

你做错了,如果没有 set/declaring 它们,你无法得到任何像这样的对象 $this->getOrderItem()。当您尝试在帮助器中获取 order_iditem_id 时,您正在从客户可下载产品重定向的自定义页面上使用它们。这是你必须做的

步骤 - 1

从客户我的可下载产品,在重定向 url 中,您必须将产品 order_iditem_id 作为参数传递。您可以从下面的代码中获取它们

$orderId = $_item->getPurchased()->getOrderId();
$itemId = $_item->getId();

步骤-2

现在在您的模板文件中使用您的辅助函数时将此 order_iditem_id 传递给方法参数。喜欢下面的代码

$orderId = $this->getRequest()->getParam('order_param');
$itemId = $this->getRequest()->getParam('item_param');

//Your helper function
Mage::helper('your_helper')->yourMethod($orderId, $itemId);

步骤 - 3

在您的帮助文件中,您可以使用以下代码

public function yourMethod($orderId, $itemId)
{
    $linkPurchasedItem = Mage::getModel('downloadable/link_purchased_item')
            ->load($orderItem, 'order_id');


    $LinkPurchaseOrderItemId = Mage::getModel('downloadable/link_purchased_item')->getCollection()
            ->addFieldToFilter('order_item_id', $itemId);
}

注意:不要对核心文件进行任何更改,而是覆盖它们