1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[EC-CUBE4]「商品レビュー管理プラグイン」の総合評価を公開のみの平均に修正する

Posted at

まずはじめに

何してる人?
受託開発で飯食ってます。
EC-CUBEはパートナーさんから下請けでお仕事もらってたり、
直請けでお客様にECサイトを構築、提供する際に利用してます。
EC-CUBE4
オリジナルECサイトが作れるパッケージ
プラグイン
EC-CUBEを簡単に拡張ができるやつ
商品レビュー管理プラグイン
公式が配布しているプラグイン。よくある商品へのレビュー機能を実現。

プラグイン詳細はプラグインのダウンロードページから
商品レビュー管理プラグイン

事の経緯

ある案件で商品レビュー管理プラグインを利用したところ、
「非公開のレビューが総合評価の星に反映される」と指摘を受けました。

冷静に考えると、「非公開なんだから総合評価に反映するのはおかしい」と考える人も多いかと思います。

ちなみに私はそれまでは気にしてなかったけど、言われてからは気になって仕方がない。
見えてない内容が反映されるのは気持ち悪い。

修正内容

プラグイン内をちょろちょろっと修正します

app/Plugin/ProductReview4/Repository/ProductReviewRepository.php
   前省略

    public function getAvgAll(Product $Product)
    {
        $defaults = [
            'recommend_avg' => 0,
            'review_count' => 0,
        ];
        try {
            // 表示ステータスを「表示中」のみに変更
            $psrep = $this->getEntityManager()->getRepository(ProductReviewStatus::class);
            $Status = $psrep->find(ProductReviewStatus::SHOW);

            $qb = $this->createQueryBuilder('r')
                ->select('avg(r.recommend_level) as recommend_avg, count(r.id) as review_count')
                ->leftJoin('r.Product', 'p')
                ->where('r.Product = :Product')
                ->setParameter('Product', $Product)
                // ステータスを条件に追加
                ->andWhere('r.Status = :Status')
                ->setParameter('Status', $Status)
                ->groupBy('r.Product');

            return $qb->getQuery()->getSingleResult();
        } catch (\Exception $exception) {
            return $defaults;
        }
    }

最後に

総合評価をに非表示のレビューの星を含めるか含めないかは考え方しだいなのかなと。
そう考えると、プラグインでは設定で切り替えができるようにするほうが望ましいのかなと思ったりします。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?