您好我需要在catalog / product / view.phtml上查找最近查看过的产品数量。在最近查看的“product_viewed.phtml”文件中,它调用
$_products = $this->getRecentlyViewedProducts()
获取最近查看过的内容。我如何从catalog / product / view.phtml文件中访问此方法?
我不知道这种方法在哪里。我试过搜索但它似乎不存在。我写的时候在Netbeans中单击它,然后单击转到声明它将我带到
class Mage_Reports_Block_Product_Viewed extends Mage_Reports_Block_Product_Abstract
实际上是关于班级本身。该类只有_toHtml(),getCount()和getPageSize()方法。
我只需要知道最近是否有任何产品。
最值得赞赏的任何帮助!
比利
答案 0 :(得分:3)
如果您查看'Mage_Reports_Block_Product_Viewed',您会注意到:
$this->setRecentlyViewedProducts($this->getItemsCollection());
'getItemsCollection'方法是在抽象类中定义的......你会注意到这个抽象类将基于(子类)块中定义的$ _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();
答案 1 :(得分:1)
getRecentlyViewedProducts
函数是一个神奇的getter,可以获取setRecentlyViewedProducts
中使用app/code/core/Mage/Reports/Block/Product/Viewed.php
设置的数据(使用app/code/core/Mage/Reports/Block/Product/Abstract.php
的函数{{1}构建它})。
这是你不想重现的复杂事物;更好的是,IMO可以创建自己的_getRecentProductsCollection
块,它可以让您访问相同的功能,并将新块放到您正在处理的页面中。