Magento:从phtml访问模型/块

时间:2011-08-22 08:56:54

标签: zend-framework magento

您好我需要在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()方法。

我只需要知道最近是否有任何产品。

最值得赞赏的任何帮助!

比利

2 个答案:

答案 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块,它可以让您访问相同的功能,并将新块放到您正在处理的页面中。