2011-08-22 48 views
2

嗨,我有一種情況,我需要查找目錄/ product/view.phtml上最近查看的產品數量。在最近查看的'product_viewed.phtml'文件中,它調用Magento:從phtml訪問模型/塊

$_products = $this->getRecentlyViewedProducts() 

得到最近查看。我如何從catalog/product/view.phtml文件中訪問此方法?

我不知道這個方法在哪裏。我試過尋找它,但它似乎並不存在。當我寫雙擊它,在Netbeans和點擊去聲明它需要我

class Mage_Reports_Block_Product_Viewed extends Mage_Reports_Block_Product_Abstract 

實際上類本身。這個類只有_toHtml(),getCount()和getPageSize()方法。

我只需要知道是否有任何最近查看過的產品。

任何幫助最受讚賞!

比利

回答

3

如果你看看「Mage_Reports_Block_Product_Viewed」,你會發現:

$this->setRecentlyViewedProducts($this->getItemsCollection()); 

這getItemsCollection「方法在抽象類中定義的,而且你會發現這個抽象類將創建一個模式的基礎上(subclassed)塊中定義的$ _indexName。

如果你只是想收集,你也許可以矇混過關:

$_products = Mage::getModel('reports/product_index_viewed')->getCollection(); 

,然後添加任何你想要的集合:

$_products 
    ->addAttributeToSelect('*') 
    ->setAddedAtOrder(); 
    // optionally add other methods similar to Mage_Reports_Block_Product_Abstract::getItemsCollection 

另一種方法可能更適合將是要創建原始塊:

$productViewedBlock = $this->getLayout()->createBlock('reports/product_viewed'); 

在上面你可以簡單地調用什麼你想要的東西:

$_collection = $productViewedBlock->getItemsCollection(); 
$_count = $productViewedBlock->getCount(); 
+0

謝謝丹尼爾,非常有幫助:)這將幫助很多! – iamjonesy

1

getRecentlyViewedProducts功能是一個神奇吸氣劑那獲取已在app/code/core/Mage/Reports/Block/Product/Viewed.php設定setRecentlyViewedProducts的數據(它建立它使用app/code/core/Mage/Reports/Block/Product/Abstract.php的功能_getRecentProductsCollection)。

這是複雜的東西,你不想再現;它更好,國際海事組織製作你自己的塊,extends Mage_Catalog_Block_Product_Abstract,可以讓你訪問相同的功能,並將你的新塊放入你正在工作的頁面。