查看产品数量未更新


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

Answers:



7

转到Admin -> Reports -> Refresh Statistics,然后选择要刷新的报告,然后点击提交按钮。

刷新后,返回报告,并选择所需的日期和日期,然后单击“显示报告”按钮。

您应该按要求查看该报告。

如果仍然没有任何内容,则您可能需要在report_viewed_product_*表中进行挖掘,看看实际上是否有任何数据。


为您的时间和精力+1。
穆罕默德·瓦西夫

2

答案后@Shoaib穆尼尔@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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.