Güncellenmeyen ürün sayısını görüntüle


11

Görüntülenen ürün sayısını depolayan 3 farklı tablo var

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

Bir ürünün geçerli görüntülenen sayısını almak istersem, bu tablolardan herhangi birinden alabilirim. Ancak sorun, ürünü ön uçta açtığımda, bu tabloların hiçbirinde bu ürünle ilgili herhangi bir sonuç gösterilmiyor.

Magento yerleşik bir sorun mu?

Kullanıcı ürünü açtığında bu tabloları anında güncellemek için Magento cron'u ayarlamam gerektiğini düşündüm, ancak benim için de işe yaramadı.


Herhangi bir yanıt
alamıyorum

İlk başta, ünümün cömertliğe başladıktan sonra düşeceğini bilmiyordum: D
Muhammed Wasif

Yanıtlar:



7

Öğesine gidin Admin -> Reports -> Refresh Statistics, ardından yenilemek istediğiniz raporları seçin, ardından gönder düğmesine basın.

Yenilendikten sonra, rapora geri dönün ve tarihler arasında ve tarihlerden istediğinizi seçin, ardından raporları göster düğmesini tıklayın.

Raporu gerektiği gibi görmelisiniz.

Hala bir şey yoksa, report_viewed_product_*tablolarda dolaşmanız ve orada herhangi bir veri olup olmadığını görmeniz gerekebilir .


Zaman ve çabalarınız için +1.
Muhammed Wasif

2

Cevap sonrasında @Shoaib Münir & @Rk Rathod çalıştırmak için gereken böylece, Bu tablolar çalışma zamanı üzerinde güncelleme olmaz Yenile İstatistikleri gelen Reports -> Statistics -> Refresh Statisticsher zaman. ancak İstatistikleri her seferinde manuel olarak yenilemek istemiyorsanız, bunun için cron'u ayarlayabilirsiniz, böylece İstatistikler otomatik olarak yenilenir.

İlk olarak, aşağıdaki gibi di.xml kullanarak reportTypes argümanını cron sınıfınıza geçirmeniz gerekir (Gereksiniminize göre geçirebileceğiniz tüm argümanları geçtim).

<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>

Sonra cron dosyanızda böyle olmalıdır.

<?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;
    }
}

Umut ediyorum bu yardım eder!


Zaman ve çaba için +1. Shoaib Munir'in ilk cevabını düzelttim
Muhammed Wasif

1
Takdiriniz için teşekkürler :) +1 sizin için.
Chirag Patel
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.