且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

根据product_id获取magento产品的观看次数

更新时间:2023-11-30 15:52:52

您可以通过Mage_Reports_Model_Resource_Product_Collection模型获取视图计数.

You can get the view count through the Mage_Reports_Model_Resource_Product_Collection model.

// set $to and $from to an empty string to disable time range filtering
$from = '2012-01-01';
$to = now();
$productIds = array(9, 35); // your product ids, (works as an int, too) 

$reports = Mage::getResourceModel('reports/product_collection')
    ->addViewsCount($from, $to)
    ->addFieldToFilter('entity_id', $productIds);

集合中的每个项目都是一个设置了views属性的catalog/product实例,因此您可以使用$product->getViews()来获取计数.

Each item in the collection is a catalog/product instance with a views property set, so you can use $product->getViews() to get the count.

如果您不想加载整个产品模型,而只需要视图计数,则可以这样获得:

If you don't want to load the whole product model and only require the view count, you can get it like this:

$resource = Mage::getResourceModel('reports/event');
$select = $resource->getReadConnection()->select()
    ->from(array('ev' => $resource->getMainTable()), array(
        'product_id' => 'object_id',
        'view_count' => new Zend_Db_Expr('COUNT(*)')
    ))
    // join for the event type id of catalog_product_view
    ->join(
        array('et' => $resource->getTable('reports/event_type')),
        "ev.event_type_id=et.event_type_id AND et.event_name='catalog_product_view'",
        ''
    )
    ->group('ev.object_id')

    // add required filters
    ->where('ev.object_id IN(?)', productIds)
    ->where('ev.logged_at >= ?', $from)
    ->where('ev.logged_at <= ?', $to);

$result = $resource->getReadConnection()->fetchPairs($select);

这为您提供了一个数组,键是产品ID,值是视图计数.

This gives you an array, the keys are the product ids and the values are the view counts.