製品の最も閲覧されたファイルは次の場所にあります。
App/code/local/Mage/Catalog/Block/Product/Mostviewed.php
次のコードを追加しました。
class Mage_Catalog_Block_Product_Mostviewed extends Mage_Catalog_Block_Product_Abstract
{
public function __construct(){
parent::__construct();
$storeId = Mage::app()->getStore()->getId();
$collection = Mage::getResourceModel('reports/product_collection')->addViewsCount();
$collection->getSelect()->joinInner(array('e2' => 'catalog_product_flat_'.$storeId), 'e2.entity_id = e.entity_id');
$collection->addAttributeToSelect('*');
//$collection->printlogquery(true);
//exit();
$this->setProductCollection($collection);
}
protected function _prepareLayout()
{
parent::_prepareLayout();
$toolbar = $this->getLayout()->createBlock('catalog/product_list_toolbar', microtime())
->setCollection($this->getProductCollection());
$pager = $this->getLayout()->createBlock('page/html_pager', microtime());
$toolbar->setChild('product_list_toolbar_pager', $pager);
$this->setChild('toolbar', $toolbar);
$this->getProductCollection()->load();
return $this;
}
public function getPagerHtml()
{
return $this->getChildHtml('toolbar');
}
}
追加されていないaddViewsCount()
印刷SQL:
SELECT `e`.*, `e2`.*
FROM `catalog_product_entity` AS `e`
INNER JOIN `catalog_product_flat_1` AS `e2`
ON e2.entity_id = e.entity_id
追加されたaddViewsCount()
印刷SQL:
SELECT COUNT(report_table_views.event_id) AS `views`, `e`.*, `e2`.*
FROM `report_event` AS `report_table_views`
INNER JOIN `catalog_product_entity` AS `e`
ON e.entity_id = report_table_views.object_id AND e.entity_type_id = 4
INNER JOIN `catalog_product_flat_1` AS `e2`
ON e2.entity_id = e.entity_id
WHERE (report_table_views.event_type_id = 1)
GROUP BY `e`.`entity_id`
HAVING (COUNT(report_table_views.event_id) > 0)
ORDER BY `views` DESC
addViewsCount()
動作しないことによるソートを追加し、削除で動作しaddViewsCount()
ます。
修正方法は?
編集: これで問題は解決しました。私の mysql DB に何か問題があります。コードは問題ありません。@liyakat @Alex に感謝します。