更新されない製品数の表示


11

製品の閲覧数を保存する3つの異なるテーブルがあります

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

製品の現在の閲覧数を取得したい場合は、これらのテーブルのいずれかから取得できます。しかし、問題は、フロントエンドで製品を開くたびに、これらのテーブルのいずれにもその製品に関連する結果が表示されないことです。

Magentoの組み込みの問題ですか?

ユーザーが製品を開いたときにMagento cronがこれらのテーブルを即座に更新するように設定する必要があると思いましたが、それも私にとっては機能しませんでした。


応答がありません:(
Muhammad Wasif

最初は、賞金を獲得した後に私の評判が差し引かれるとは知りませんでした:D
Muhammad Wasif

回答:



7

に移動しAdmin -> Reports -> Refresh Statistics、更新するレポートを選択して、[送信]ボタンをクリックします。

更新したら、レポートに戻り、必要な開始日と開始日を選択して、[レポートの表示]ボタンをクリックします。

必要に応じてレポートが表示されます。

それでも何もない場合は、report_viewed_product_*テーブルを調べて、実際にデータがあるかどうかを確認する必要があります。


あなたの時間と努力のために+1。
ムハンマドワシ

2

@Shoaib Munir@Rk Rathodの回答の後、これらのテーブルは実行時に更新されないため、毎回統計の更新を実行する必要がありますReports -> Statistics -> Refresh Statistics。ただし、統計を毎回手動で更新したくない場合は、cronを設定して統計を自動的に更新できます。

最初に、以下のようにdi.xmlを使用して、reportTypes引数をcronクラスに渡す必要があります(要件に応じて、渡すことができるすべての引数を渡しました)。

<type name="Vendor\Module\Cron\CronFile">
        <arguments>
            <argument name="reportTypes" xsi:type="array">
                <item name="sales" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Order</item>
                <item name="tax" xsi:type="string">Magento\Tax\Model\ResourceModel\Report\Tax</item>
                <item name="shipping" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Shipping</item>
                <item name="invoiced" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Invoiced</item>
                <item name="refunded" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Refunded</item>
                <item name="coupons" xsi:type="string">Magento\SalesRule\Model\ResourceModel\Report\Rule</item>
                <item name="bestsellers" xsi:type="string">Magento\Sales\Model\ResourceModel\Report\Bestsellers</item>
                <item name="viewed" xsi:type="string">Magento\Reports\Model\ResourceModel\Report\Product\Viewed</item>
            </argument>
        </arguments>
    </type>

すると、cronファイルは次のようになります。

<?php
namespace Vendor\Module\Cron;
use Magento\Reports\Model\ResourceModel\Refresh\Collection;

class CronFile extends Collection
{
    protected $logger;
    protected $reportTypes;

    public function __construct(
        \Magento\Framework\Data\Collection\EntityFactory $entityFactory,
        \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
        \Magento\Reports\Model\FlagFactory $reportsFlagFactory,
        \Psr\Log\LoggerInterface $logger,
        array $reportTypes
    ) {
        $this->logger = $logger;
        $this->reportTypes = $reportTypes;
        parent::__construct($entityFactory,$localeDate,$reportsFlagFactory);
    }
    /**
     * @return $this
     */
    public function execute()
    {
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();

        try {
            $codes = $this->loadData();

            foreach ($codes->_items as $codek=>$codev) {
                $objectManager->create($this->reportTypes[$codek])->aggregate();
            }
        } catch (\Magento\Framework\Exception\LocalizedException $e) {
            $this->logger->critical($e->getMessage());
        } catch (\Exception $e) {
           $this->logger->critical($e->getMessage());
        }
        return $this;
    }
}

お役に立てば幸いです。


あなたの時間と努力のために+1。Shoaib Munir
Muhammad Wasif

1
あなたの感謝をありがとう:)あなたのための+1。
Chirag Patel
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.