まずはじめに
- 何してる人?
- 受託開発で飯食ってます。
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;
}
}
最後に
総合評価をに非表示のレビューの星を含めるか含めないかは考え方しだいなのかなと。
そう考えると、プラグインでは設定で切り替えができるようにするほうが望ましいのかなと思ったりします。