Перегляд кількості товарів не оновлюється


11

Є 3 різні таблиці, в яких зберігається кількість переглянутих товарів

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

Якщо я хочу отримати кількість переглянутого продукту, я можу отримати його з будь-якої з цих таблиць. Але проблема полягає в тому, що коли я відкриваю продукт на передній панелі, жодна з цих таблиць не відображає жодного результату, пов'язаного з цим продуктом.

Це magento вбудований випуск?

Я подумав, що мені потрібно встановити Magento cron для того, щоб миттєво оновлювали ці таблиці, коли користувач відкривав продукт, але це також не працювало для мене.


Не отримавши жодної відповіді :(
Мухаммед

Спочатку я не знав, що моя репутація буде відраховуватися після старту заборгованості: D
Мухаммед

Відповіді:


10

Ці таблиці не оновлюються під час виконання

Вам потрібно запустити оновити статистику з:

Звіти -> Статистика -> Оновити статистику

Якщо ви хочете запустити його з cronjob, перейдіть за цим посиланням: https://magento.stackexchange.com/a/243187/31910


Це справді задовільно. Дякую за роз’яснення :)
Мухаммад

7

Перейдіть Admin -> Reports -> Refresh Statistics, а потім виберіть звіти, які потрібно оновити, а потім натисніть кнопку для надсилання.

Після оновлення поверніться до звіту та виберіть необхідні дати та дати, а потім натисніть кнопку показу звітів.

Ви повинні побачити звіт як потрібно.

Якщо все ще немає нічого, можливо, вам доведеться розкопатись по report_viewed_product_*таблицях і побачити, чи є там насправді якісь дані.


+1 за ваш час та зусилля.
Мухаммад

2

Після відповіді @Shoaib Мунір & @rk Rathod , ці таблиці не оновлюються під час виконання , так що вам потрібно запустити Оновити статистику від Reports -> Statistics -> Refresh Statisticsкожного разу. але якщо ви не хочете кожен раз оновлювати статистику вручну, ви можете встановити cron для цього, щоб оновити статистику автоматично.

По-перше, вам потрібно передати аргумент reportTypes вашому класу cron, використовуючи di.xml, як показано нижче (я передав усі аргументи, які ви можете передати відповідно до вашої вимоги).

<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 за ваш час та зусилля. Я маю правильну першу відповідь Шойба Муніра
Мухаммад

1
Дякуємо за вашу оцінку :) +1 для вас.
Chirag Patel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.