Получить количество просмотров для продукта magento на основе product_id - PullRequest
7 голосов
/ 07 февраля 2012

Я хотел бы отобразить счетчик просмотров на странице списка категорий в Magento. Эти данные выглядят так, как будто раньше были доступны через reports / product_collection, но я не могу найти способ получить к ним правильный доступ.

Я бы в основном хотел предоставить идентификатор продукта и вернуть мне счетчик просмотров указанного продукта.

1 Ответ

15 голосов
/ 08 февраля 2012

Вы можете получить количество просмотров с помощью модели Mage_Reports_Model_Resource_Product_Collection.

// 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);

Каждый элемент в коллекции является экземпляром catalog/product с установленным свойством views, поэтому вы можете использовать $product->getViews() для получения количества.

Если вы не хотите загружать всю модель продукта и вам требуется только количество просмотров, вы можете получить его следующим образом:

$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);

Это дает вам массив, ключи - это идентификаторы продуктов, а значения - количество просмотров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...