업데이트되지 않은 제품 수보기


11

제품 조회수를 저장하는 3 개의 서로 다른 테이블이 있습니다.

  • report_viewed_product_aggregated_daily
  • report_viewed_product_aggregated_monthly
  • report_viewed_product_aggregated_yearly

제품의 현재 조회 수를 얻으려면 다음 표 중 하나에서 얻을 수 있습니다. 그러나 문제는 프론트 엔드에서 제품을 열 때마다 해당 제품과 관련된 결과를 보여주는 표가 없습니다.

마 젠토 내장 문제입니까?

사용자가 제품을 열 때 이러한 테이블을 즉시 업데이트하려면 Magento cron을 설정해야한다고 생각했지만 나에게도 효과가 없었습니다.


응답이 없습니다 :(
Muhammad Wasif 2016 년

D : 처음에는 몰랐에서 내 평판은 현상금 시작한 후 공제합니다
무하마드 Wasif

답변:



7

로 이동 Admin -> Reports -> Refresh Statistics한 다음 새로 고칠 보고서를 선택한 다음 제출 단추를 누르십시오.

새로 고침을 마치면 보고서로 돌아가서 원하는 날짜와 날짜를 선택한 다음 보고서 표시 버튼을 클릭하십시오.

필요에 따라 보고서가 표시되어야합니다.

여전히 아무것도 없다면 report_viewed_product_*테이블 을 파고 실제로 데이터가 있는지 확인 해야 할 수도 있습니다.


시간과 노력을 +1하십시오.
Muhammad Wasif 2016 년

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>

그런 다음 크론 파일에서 다음과 같아야합니다.

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