1. プラグイン概要と特長
「商品公開日時設定プラグイン」は、EC-CUBE上の各商品に対して「公開開始日時」および「公開終了日時」を分単位で設定可能にする拡張プラグインです。
2. 動作環境
| 項目 | 対応仕様 |
|---|---|
| EC-CUBE 本体バージョン | EC-CUBE 4.2.0 〜 4.2.x, 4.3.0 〜 4.3.x |
| PHP バージョン | PHP 7.4 / 8.0 / 8.1 / 8.2 / 8.3 |
| データベース | MySQL 5.7+ / MySQL 8.0+ / MariaDB 10.3+ / PostgreSQL 12+ |
| 対応ブラウザ | Chrome, Safari, Edge, Firefox, iOS Safari, Android Chrome (最新版) |
3. インストール・有効化
管理画面からのインストール手順
- EC-CUBE管理画面にログインします。
- 「オーナーズストア」 > 「プラグイン」 > 「プラグイン一覧」 を開きます。
- 「プラグインのアップロード」エリアに対象のアーカイブファイル(.tar.gz または .zip)を選択してアップロードします。
- 一覧に追加された「商品公開日時設定プラグイン」の右側にある 「有効にする」 ボタンをクリックします。
- 「コンテンツ管理」 > 「キャッシュ管理」 からキャッシュをクリアします。
php bin/console eccube:plugin:install --code=ProductPublishSchedule
php bin/console eccube:plugin:enable --code=ProductPublishSchedule
php bin/console cache:clear --no-warmup
4. プラグイン基本設定
管理画面の 「設定」 > 「プラグイン一覧」 > 「商品公開日時設定プラグイン」 > 「設定」 をクリックすると基本設定画面が開きます。
| 設定項目 | 初期値 | 説明 |
|---|---|---|
| カウントダウンタイマー | 有効 | 商品詳細ページに、販売終了(または公開開始)までのリアルタイムカウントダウンタイマーを表示するかどうかを設定します。 |
| 販売期間インフォ表示 | 有効 | 商品詳細ページに「販売期間: YYYY/MM/DD HH:mm 〜 YYYY/MM/DD HH:mm」の案内枠を表示するかどうかを設定します。 |
| フロントブロック表示件数 | 8 | レイアウトブロック「期間限定・公開予定商品」で表示する最大商品件数を指定します(1〜100件)。 |
5. 商品ごとのスケジュール設定
商品登録・編集画面での設定
「商品管理」 > 「商品登録」または「商品一覧」からの編集画面 を開くと、「基本情報」エリアに以下の入力項目が追加されます。
- 公開開始日時 (publish_start_date): 販売を開始する日時を指定します。未入力の場合は登録直後から公開されます。
- 公開終了日時 (publish_end_date): 販売を終了する日時を指定します。未入力の場合は無期限で公開されます。
管理画面 商品一覧での絞り込みとバッジ表示
商品一覧画面(/admin/product)の上部に専用のフィルターボタンが追加されます。ワンクリックで対象商品を絞り込みできます。
- すべて: 全ての商品を表示
- 期間内 (公開中): 現在販売期間内の商品のみを絞り込み
- 公開待ち (開始前): 公開開始日時が未来の商品のみを絞り込み
- 期間終了 (終了): 公開終了日時を過ぎた商品のみを絞り込み
- スケジュール設定あり: 開始または終了日時が設定されている商品を絞り込み
6. フロントエンド表示仕様
1. 商品詳細ページ
- カウントダウンタイマー: 販売終了までの「日・時間・分・秒」がリアルタイムにカウントダウンされます。
- 期間終了時のリアルタイム無効化: ページを開いたまま終了時刻を迎えた場合、タイマーが「※ 販売期間が終了いたしました。」に切り替わり、「カゴに入れる」ボタンが即座に無効化されます。
- 未公開・終了商品のアクセス制御: 一般顧客が販売期間外の商品URLに直接アクセスした場合は、安全に404(ページが見つかりません)が表示されます。管理者がログイン中の場合のみプレビュー可能です。
2. 商品一覧(カテゴリ・検索結果)ページ
販売終了日時が設定されている商品には、一覧カード画像の上に自動で 「期間限定」 バッジが表示され、顧客の購買意欲を高めます。
3. フロントブロック「期間限定・公開予定商品」の配置
- 管理画面の 「コンテンツ管理」 > 「レイアウト管理」 を開きます。
- トップページやサイドバーなど、配置したいレイアウトの「編集」をクリックします。
- 未使用ブロック一覧から 「期間限定・公開予定商品」 をドラッグ&ドロップで任意のエリア(メイン上部など)に配置して保存します。
7. カート・購入制御仕様
本プラグインは表示制御だけでなく、購入処理における完全なガード機能を実装しています。
| 検証フェーズ | 動作内容 |
|---|---|
| カート投入時 | 期間外の商品をカートに入れようとした場合、処理を遮断し「販売期間外です」というエラーメッセージを表示します。 |
| 注文手続き画面 | カートに入ったまま時間が経過して期間外になった商品がある場合、購入手続きに進むのを自動でブロックします。 |
| 注文確定直前 | 最終決済ボタンを押した瞬間のシステム時刻で再検証を行い、期間終了商品の不正注文を完全に防ぎます。 |
8. cron自動ステータス同期
公開期間が終了した商品や、公開開始を迎えた商品のEC-CUBE標準ステータス(公開 / 非公開)をバッチ処理で一括更新するためのSymfonyコンソールコマンドが用意されています。
コマンドの基本構文
# 実行テスト(データベースは更新せず対象件数のみ確認)
php bin/console product-publish-schedule:update-status --dry-run
# 本番実行(ステータスを即時同期更新)
php bin/console product-publish-schedule:update-status
サーバーのcrontab設定例
サーバーのcrontabに登録することで、毎時または毎分定期的に自動同期させることができます。
# 毎時0分に実行する場合の例
0 * * * * cd /path/to/eccube && /usr/bin/php bin/console product-publish-schedule:update-status >> var/log/publish_schedule.log 2>&1
# 10分ごとに実行する場合の例
*/10 * * * * cd /path/to/eccube && /usr/bin/php bin/console product-publish-schedule:update-status >> var/log/publish_schedule.log 2>&1
9. CSV出力連携
プラグイン有効化時に、EC-CUBEの「商品CSV」出力項目に 「公開開始日時」「公開終了日時」 が自動登録されます。
- 管理画面の 「設定」 > 「店舗設定」 > 「CSV出力項目設定」 を開きます。
- 「商品CSV」を選択します。
- 出力項目一覧に「公開開始日時」「公開終了日時」が追加されていることを確認し、出力順を調整して保存します。
- 「商品管理」 > 「商品一覧」から通常通りCSVダウンロードを行うと、スケジュール日時が含まれたCSVファイルが出力されます。
10. よくある質問
1. 商品のステータスが「公開」になっているか。
2. 現在の日時が「公開開始日時 〜 公開終了日時」の有効期間内に入っているか(期間外の商品は表示されません)。
3. プラグイン設定の「フロントブロック表示件数」が適切に設定されているか。
11. アンインストール時の注意
プラグインをアンインストール(削除)する場合、以下の処理が安全に実行されます。
- レイアウト管理に配置された「期間限定・公開予定商品」ブロックの自動登録解除。
- プラグイン設定テーブル(plg_product_publish_schedule_config)の削除。
- 公開アセット(html/plugin/ProductPublishSchedule)の自動削除。
dtb_product に登録された過去のスケジュール日時データ(カラム)は安全のため保持されます。