商品レビューポイント付与プラグイン
VoteProduct — 顧客のレビュー投稿(画像付き)を促進し、承認時に自動でポイントを報酬として付与する仕組み
1プラグイン概要
商品レビューポイント付与プラグインは、EC-CUBE 4.2 / 4.3 サイトにて商品評価(5つ星)、レビュー内容(タイトル・詳細)、および商品写真(画像アップロード最大5枚)を受け付け、管理者がそのレビューを承認した際に自動でショップ会員へポイントを報酬として付与するための高機能プラグインです。
レビューを集めるための配送完了後「レビュー依頼メール」の自動送信機能、役に立ったボタン、スパムフィルター、画像拡大表示など、レビュー促進と運用の自動化に必要な機能が一通り揃っています。
2インストール・有効化
2-1. ファイル配置
プラグインのプログラムファイルを EC-CUBEのプラグインディレクトリへ配置します。
/path/to/eccube/app/Plugin/VoteProduct/ ← ここに配置
VoteProduct (大文字・小文字含む)で一致させてください。2-2. コマンドでの有効化
EC-CUBEのルートディレクトリにて以下のコマンドを実行します。
cd /path/to/eccube
php bin/console eccube:plugin:install --code=VoteProduct
php bin/console eccube:plugin:enable --code=VoteProduct
php bin/console cache:clear
3フロントエンドのレビュー機能
本プラグインはショップのテーマに依存しない完全独立のスタイルシート(vote_product.css)と専用スクリプトを採用しており、サイトのデザイン崩れを防ぎながら洗練されたデザインと快適な操作性を提供します。
3-1. 商品詳細ページのレビューセクション
商品詳細ページ(/products/detail/{id})の適切な位置へレビューブロックが自動で展開されます。テーマ標準の簡易レビューブロックがある場合は自動で非表示化・統合されます。
- 評価サマリーカード: 全体平均スコア(★1.0〜5.0)、総レビュー数、星1〜星5ごとの投稿件数とパーセンテージバーを視覚的に表示します。
- 最新レビュー一覧: 最新5件のレビューをカード形式で表示。購入者バッジ(認証済み)、投稿日、評価星数、タイトル、詳細コメント、添付画像が表示されます。
- ショップからの返信: 管理者が返信を投稿したレビューには、「ショップからの返信」ブロックがお礼や補足として分かりやすく掲載されます。
- 全件一覧リンク: レビューが多数ある場合、「すべてのレビューを見る(◯件)」ボタンから全件一覧ページへワンクリックで遷移できます。
- 投稿後アンカー自動スクロール: レビュー投稿完了後、商品詳細ページのレビュー表示位置(
#vp-review-section)へスムーズにスクロールし、完了メッセージを確認できます。
3-2. レビュー全件一覧ページ(絞り込み・ソート・役に立ったボタン)
URL: /products/{id}/reviews
商品に寄せられたすべてのレビューを閲覧・検索できる専用ページです。
- 評価(星数)絞り込み: 「すべて」「★★★★★ (5)」「★★★★☆ (4)」など指定の星評価のみを瞬時に抽出できます。
- 写真付きレビュー絞り込み: 「写真付きのみ」をチェックすることで、商品写真が添付されたレビューのみを素早く絞り込んで閲覧できます。
- ソート切り替え: 「新しい順」「古い順」「役に立った順」へリアルタイムに並び替えが可能です。
-
「役に立った(👍)」ボタン:
- レビューごとに「👍 役に立った (◯)」ボタンが配置され、他の利用者が参考になったレビューを評価できます。
- 会員限定・二重投票防止: 1会員につき各レビューへ1回のみ投票可能。
- 非同期更新と保護機能: ページ再読み込みなしで即座にカウントが反映され、投票済み状態になります。
- ゲスト自動誘導: 未ログインの訪問者がボタンをクリックした場合は、ログインページへスムーズに案内されます。
- ページネーション: 1ページあたり10件ずつ、快適にページ送りできます。
3-3. レビュー投稿画面 & 投稿前確認画面
URL: /products/{id}/review/write
購入者が迷わず快適にレビューを投稿できるように最適化された入力フォームです。
- インタラクティブな星評価セレクター: 1〜5つ星を直感的にクリックして選択可能。
- 画像アップロード(最大5枚): スマートフォンやパソコンから写真・使用イメージをドラッグ&ドロップまたはクリックで簡単に追加。リアルタイムサムネイルプレビューと削除機能付き。
- リアルタイム文字数カウンター: 入力中に「あと◯文字必要」「◯文字超過」などのステータスが色分け表示され、設定された最小・最大文字数を即座に案内します。
- 安心の投稿確認画面: 入力後に「確認画面へ進む」を押すと、評価・タイトル・本文・添付画像の一覧を確認でき、誤送信を防止します。
- ログイン後の自動復帰: 未ログイン状態でアクセスした場合、ログイン完了後に自動で対象商品のレビュー投稿画面へ復帰します。
3-4. 画像拡大プレビュー(全画面モーダル表示)
レビューカードに添付された画像サムネイルをクリックすると、画面全体に高解像度の拡大画像が表示されます。
- 高解像度画像を画面いっぱいに鮮明に拡大表示。
- 複数画像がある場合は「前へ」「次へ」ボタンやキーボードの矢印キー(
←/→)で送り閲覧が可能。 Escキーや背景クリックでスムーズに閉じることができます。
3-5. マイページのレビュー履歴・獲得ポイント確認
URL: /mypage/reviews
ログイン会員のマイページ(/mypage)内に「投稿レビュー」メニューが追加されます。
- 自身が過去に投稿した全レビューの内容(商品名、評価、投稿日、ステータス)を一覧確認できます。
- ステータスバッジ: 「承認待ち」「承認済み」「却下」を視覚的に表示。
- 「承認待ち」レビューの自主編集・取り消し機能(新機能): 管理者の承認前であれば、お客様自身でレビュー内容(星評価・ニックネーム・タイトル・本文・添付画像)の「編集」や「削除(取り消し)」が可能です。誤字や写真添付ミスがあった場合でも安心してお使いいただけます。
- 獲得ポイント履歴: レビューが承認された際に付与されたポイント数(基本ポイント、画像ボーナス、長文ボーナスの合計)を明快に確認可能。
- 商品や注文データが管理画面で整理・削除された場合でも、マイページがクラッシュしない堅牢な保護設計を採用しています。
3-6. 商品一覧ページ(カテゴリ・検索結果)での星評価 & 件数表示
URL: /products/list
カテゴリ一覧やキーワード検索結果ページにおいて、各商品の名前の直下にゴールドの星評価(★)と平均点、総レビュー件数(例: ★★★★★ 4.8 (15))が自動表示されます。
- 一括取得による高速化: ページ内に表示されている全商品の評価統計を1回のクエリでまとめて取得するため、商品数が多くてもページ読み込み速度に影響を与えません。
- 商品の人気度を即座にアピール: 訪問者が商品一覧をスクロールするだけで高評価商品が一目で分かり、商品詳細ページへのクリック率や購買意欲を大幅に向上させます。
- 自動スマート表示: レビューが投稿・承認されている商品のみに評価バッジがスマートに表示され、未レビュー商品の一覧デザインを損ないません。
3-7. トップページ/サイドバー用レイアウトブロック(新機能)
EC-CUBE管理画面(コンテンツ管理 > レイアウト管理)から自由にドラッグ&ドロップで配置できる専用ブロックが2種類提供されます。
| ブロック名 | 識別子(ファイル名) | 主な特徴 & メリット |
|---|---|---|
| 新着レビュー | vote_product_new_reviews |
ショップに投稿・承認された最新レビューをカード形式で表示。購入者のリアルな声(評価・写真・コメント)をトップページやサイドバーに掲載し、利用者のリアルな実績としてサイト全体の信頼性を大幅に向上させます。 |
| 高評価商品 | vote_product_top_rated |
★4.0〜5.0の高評価を獲得している人気アイテムをランキングバッジ(#1, #2...)付きで表示。訪問者に満足度の高いおすすめ商品をスマートにアピールできます。 |
- 安全設計(
ignore_missing = true採用): プラグインを一時的に無効化した場合でも、レイアウトに配置されたブロックがサイトの表示崩れやシステムエラーを引き起こさない堅牢なスタブ設計を採用しています。 - マルチレイアウト適応: トップページのメインエリア(グリッド配置)はもちろん、サイドバー(コンパクト配置)にも自動で最適化されます。
4ポイント報酬システムの仕組み
優良なレビューの収集を促すため、インセンティブ(ポイント付与)の柔軟な調整ルールが用意されています。
細分化された報酬ルール
| 報酬項目 | 設定例 | 詳細 |
|---|---|---|
| 基本ポイント | 10 pt | レビューが管理者に承認された際に付与される標準ポイント数(0〜1,000ポイントで設定可能)。 |
| 画像投稿ボーナス | 5 pt | 画像が1枚以上添付されたレビューの場合に上乗せして付与されるボーナス(最大1,000ポイントまで設定可能)。 |
| 長文投稿ボーナス | 5 pt | 設定された閾値(例: 200文字以上)を超えるレビュー文章に対して付与されるボーナス(最大1,000ポイントまで設定可能)。 |
| 月間獲得上限設定 | 5 件 | 同一会員による過度なポイント稼ぎを防ぐため、月間で承認時にポイントを付与する最大件数を制限します。 |
5メール自動通知・レビュー依頼設定
レビュー投稿の促進および運用自動化のため、イベントやスケジュールに応じた多彩なメール通知機能が搭載されています。
5-1. 送信されるメールの種類
- 新規レビュー通知(管理者宛): 顧客が新規レビューを投稿した際、管理者へ承認待ちを知らせるアラートメール。
- レビュー承認・ポイント獲得通知(顧客宛): 管理者がレビューを承認しポイントが付与された際、顧客へ結果をお知らせするメール。
- レビュー依頼メール(顧客宛): 注文商品の出荷後に、レビューの投稿を依頼するステップメール。
5-2. レビュー依頼メールの高度な配信制御
レビュー依頼メールの配信タイミングや対象商品は、管理画面から細かくカスタマイズできます。
| 設定項目 | デフォルト値 | 機能・動作詳細 |
|---|---|---|
| 送信までの日数(出荷後) | 0 日(即時送信) |
「0」日:注文ステータスを「出荷済み」に変更した時点でメールが即時送信されます。 「1」日以上:出荷時には送信されず、定期実行バッチにて出荷から指定日数が経過した受注を自動抽出して送信されます(例: 7日後)。 |
| 複数商品を1通のメールにまとめて送信 | 有効 | 同一受注内に複数の商品が含まれる場合、商品ごとにメールを別送するのではなく、1通のメール内に全商品をリスト表示し各商品の投稿ページリンクを案内します。顧客へのメール過多を防止します。 |
| すでに投稿済みの商品は依頼から除外する | 有効 | 同一商品を以前にレビュー投稿済みの顧客には、該当商品をメール内の一覧から自動除外します。受注内のすべての商品がレビュー済みの場合は、メール送信自体を安全にスキップします。 |
| 二重送信防止システム | 常時有効(自動) |
受注ごとの送信履歴を記録する専用テーブル(plg_vote_product_mail_log)を備え、管理者が注文ステータスを再保存・変更した場合でも、同じ注文に対して2回以上レビュー依頼メールが送信されることを完全に防止します。
|
5-3. メール件名・本文の自由カスタマイズ
管理画面の「設定」ページから、レビュー依頼メールの件名および本文をいつでも自由に変更できます。
本文にはテンプレート構文やプレースホルダー変数が利用可能です。
| 利用可能変数 | 説明 |
|---|---|
{{ customer.name01 }} / {{ customer.name02 }} |
購入者の氏名(姓 / 名) |
{% for item in products %} ... {% endfor %} |
購入商品一覧のループ処理(複数商品まとめ時) |
{{ item.name }} / {{ product.name }} |
商品名(ループ内 / 単一商品) |
{{ url('vote_product_write', {id: item.id}) }} |
該当商品のレビュー投稿ページリンク |
{{ BaseInfo.shop_name }} / {{ BaseInfo.email01 }} |
店舗名 / 店舗代表メールアドレス |
{{ Config.basePoints }} / {{ Config.imageBonusPoints }} / {{ Config.longReviewPoints }} |
プラグイン設定で定義されている各ポイント数 |
設定画面内のボタンをクリックすると、推奨の初期文面テンプレートをワンクリックで復元・挿入できます。
5-4. テストメール送信機能
入力中の件名・本文でどのようにメールが送信されるかを、本番保存前にショップ宛てにテスト送信して確認できます。
- 設定画面の「テストメール送信」ボタンをクリックするとモーダルが開きます。
- 送信先メールアドレス(デフォルトは店舗メールアドレス)を確認し、「送信する」を押すと即座にサンプルデータ(顧客名・商品名・ポイント設定値など)が展開されたテストメールが届きます。
- テンプレート構文エラーや改行の崩れなどを事前にチェックするのに最適です。
5-5. 定期実行バッチの設定方法
「送信までの日数」を 1 日以上に設定している場合、サーバーの crontab に以下のコマンドを登録して定期実行(通常は毎日1回)させます。
# 毎日午前10:00に出荷から指定日数が経過した注文者へレビュー依頼メールを自動送信する記述例
0 10 * * * cd /path/to/eccube && php bin/console voteproduct:request-email >> var/log/vote_request.log 2>&1
6管理画面でのレビュー・ポイント管理
EC-CUBE管理画面のサイドメニューに 「商品レビュー管理」 グループが追加されます。
6-1. レビュー一覧・検索・承認
投稿された全レビューを一覧管理します。
- 高度な検索フィルター: キーワード検索(タイトル・コメント)、商品コード、商品名オートコンプリート選択、評価星数(★1〜★5)、ステータス別(承認待ち・承認済み・却下)、投稿日の範囲指定(開始日〜終了日)で柔軟に絞り込み可能。「クリア」ボタンで瞬時にリセットも行えます。
- 大文字・小文字の区別なし検索: データベース環境を問わず、英数字の大文字・小文字を区別せずスムーズに検索が行えます。
- 検索条件と連動したCSV出力: 商品コードや投稿日などで絞り込んだ結果をそのままCSVファイルとしてダウンロード可能です。
- ワンクリック承認・却下: 一覧または詳細画面から「承認」または「非承認(却下)」を選択するだけ。承認時は設定に基づいて自動的にポイントが顧客へ即時付与されます。
- 未承認バッジ通知(左ナビゲーション連動): 承認待ち(未承認)レビューが存在する場合、管理画面左側のサイドメニュー(親メニュー「商品レビュー管理」および子メニュー「レビュー一覧」)に赤色の数字バッジ(例: 3件ある場合は 3)がリアルタイムで表示されます。どの画面を操作していても未チェックの投稿が一目で把握でき、確認漏れを防ぎます。
- 削除済みデータの安全対応: 過去に削除された商品へのレビューであっても管理画面がクラッシュせず安全に操作可能です。
6-2. ショップ返信機能(顧客コミュニケーション)
レビュー詳細画面から、顧客のレビューに対する管理者からの返信(お礼や使用アドバイスなど)を入力・編集できます。
返信内容は商品詳細ページやレビュー一覧ページにて「ショップからの返信」として掲載され、ショップの信頼度向上に繋がります。
6-3. ダッシュボード・ポイント履歴・CSV一括登録 / 出力
- 統計ダッシュボード: 累計レビュー数、未承認レビュー件数、平均星評価、高評価商品ランキングなどを視覚的に把握。
- ポイント付与履歴管理: 各会員への付与日時、対象商品、ポイント内訳(基本・画像・長文)を完全ログ管理。
- CSV一括登録(レビューの一括投入・更新): ショップ管理者が商品の注目度を高めるため、あらかじめ用意したレビューを一括投入可能。商品ID、投稿者名(ニックネーム)、星評価(1〜5)、タイトル、コメント本文、ステータス(承認済み等)、役立った数(👍)、投稿日時を柔軟に指定できます。既存IDを指定した場合は一括更新にも対応。
- CSV出力(一括登録との完全互換): 登録されている全レビュー、または検索条件で絞り込んだレビューデータをCSV出力。インポートと同じ列構成(Excel対応の文字コード)のため、出力したファイルを編集してそのまま再登録することも可能です。
- 雛形ダウンロード: 入力例(サンプル2件)が含まれたCSV雛形テンプレートをワンクリックでダウンロードできます。
6-4. プラグイン詳細設定画面
「商品レビュー管理 ➔ 設定」画面では、以下の項目を一元管理できます。
- 基本設定: レビュー機能の有効/無効、承認制の有効/無効、購入者限定投稿の切り替え、画像添付の許可。
- コメント設定: 最小文字数(例: 10文字)、最大文字数(例: 1,000文字)。
- 通知・メール設定: 新規投稿通知(管理者宛)、レビュー依頼メール(即時/指定日数)、複数商品まとめ、投稿済み除外、件名・本文の自由編集、テスト送信機能。
- ポイント設定: 基本ポイント、画像ボーナス、長文ボーナス、長文閾値文字数、月間獲得上限件数。
- スパムフィルター設定: 自動スパム検出エンジンの有効/無効、カスタムNGワードリスト登録。
7スパム・NGワードフィルター
ロボットによる自動スパム投稿や嫌がらせ投稿を防ぐため、2つのセキュリティ機構を搭載しています。
- スパム検出エンジン: 同一文字の連続(機械的スパム)、大量のリンクや特殊記号の繰り返しを検知し、投稿をブロックします。
- カスタムNGワードリスト: 管理画面の「スパムフィルター設定」から、1行に1ワードずつNGワードを登録可能です。投稿内容にNGワードが含まれる場合、エラーメッセージを表示して投稿を防ぎます。
8よくあるご質問
Q1. レビューが投稿されたのに反映されません。
A. プラグイン設定で「承認制」が有効になっている場合、管理者が「商品レビュー管理 ➔ レビュー一覧」から該当レビューを「承認」するまでフロントには表示されません。
Q2. ポイント付与なしでレビュー機能だけを使えますか?
A. はい、可能です。プラグイン設定の「ポイント設定」にて、基本ポイント、画像ボーナス、長文ボーナスの値をすべて「0」に設定してください。
Q3. 「役に立った(👍)」ボタンは誰でも押せますか?
A. 悪質な水増し投票を防ぐため、会員ログイン時のみ投票可能です。未ログインのユーザーがクリックした場合は自動的にログイン画面へ案内され、1会員につき1つのレビューに対して1回のみ投票できます。
Q4. ショップの独自テーマやスタイルと干渉・デザイン崩れは起きませんか?
A. ご安心ください。本プラグインは独自の識別名(.vp-*)を持った完全独立したスタイルシート(vote_product.css)を使用しており、既存のデザインフレームワークやショップ固有のテーマスタイルと競合・干渉しないように設計されています。
Q5. レビュー依頼メールが同じ注文に対して二重に送信されることはありますか?
A. いいえ、二重送信防止システム(専用ログテーブル plg_vote_product_mail_log)が組み込まれており、同一受注に対しては1回しか送信されません。管理画面で注文ステータスを再度更新した場合でも重複配信は自動ブロックされます。
Q6. 注文の中にすでにレビューを書いた商品がある場合、どうなりますか?
A. 設定画面で「すでに投稿済みの商品は依頼から除外する」が有効になっている場合、未レビューの商品のみがリストアップされて案内されます。注文内のすべての商品がレビュー済みの場合は、メール配信自体が安全にスキップされます。
Q7. レビュー依頼メールの文面を事前にテスト確認できますか?
A. はい、可能です。管理画面の「商品レビュー管理 ➔ 設定」ページにある「テストメール送信」ボタンから、入力中の件名・本文でサンプルメールを店舗メール宛てにワンクリックで送信して仕上がりを確認できます。
Q8. 商品や注文を管理画面から削除した場合にエラーは発生しますか?
A. いいえ、関連する商品や注文がデータベース上から削除された場合でも、マイページや管理画面がエラー(例外)で停止しないよう、安全な例外処理機構を実装しています。