商品公開日時設定・期間限定販売プラグイン
オンラインマニュアル

商品の公開開始日時・終了日時を指定し、タイムセールや期間限定販売を完全自動化するEC-CUBE専用プラグインです。

EC-CUBE 4.2 / 4.3 PHP 7.4 〜 8.3 MySQL / PostgreSQL 独立CSS設計

1. プラグイン概要と特長

「商品公開日時設定プラグイン」は、EC-CUBE上の各商品に対して「公開開始日時」および「公開終了日時」を分単位で設定可能にする拡張プラグインです。

タイムセールの完全自動化
指定日時になると自動で販売が開始され、終了日時を過ぎると自動で非公開化・購入不可になります。深夜や休日の手動作業は不要です。
リアルタイムカウントダウン
商品詳細ページに終了までの残り時間を秒単位でリアルタイム表示。タイマーが0になると自動で購入ボタンが無効化されます。
多層ガードで購入保護
詳細ページのボタン無効化に加え、カート投入・購入フロー・注文確定直前の3段階で期間外商品の購入をブロックします。
テーマ非依存の専用CSS
デザイン崩れを防ぐため、テーマのCSSに依存しない専用スタイルシートを同梱。レスポンシブ(4列/3列/2列)に最適化されています。

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. インストール・有効化

管理画面からのインストール手順

  1. EC-CUBE管理画面にログインします。
  2. 「オーナーズストア」 > 「プラグイン」 > 「プラグイン一覧」 を開きます。
  3. 「プラグインのアップロード」エリアに対象のアーカイブファイル(.tar.gz または .zip)を選択してアップロードします。
  4. 一覧に追加された「商品公開日時設定プラグイン」の右側にある 「有効にする」 ボタンをクリックします。
  5. 「コンテンツ管理」 > 「キャッシュ管理」 からキャッシュをクリアします。
[補足] CLI(コマンドライン)での操作 コンソールからインストール・有効化する場合は以下のコマンドを実行してください。
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. フロントブロック「期間限定・公開予定商品」の配置

  1. 管理画面の 「コンテンツ管理」 > 「レイアウト管理」 を開きます。
  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」出力項目に 「公開開始日時」「公開終了日時」 が自動登録されます。

  1. 管理画面の 「設定」 > 「店舗設定」 > 「CSV出力項目設定」 を開きます。
  2. 「商品CSV」を選択します。
  3. 出力項目一覧に「公開開始日時」「公開終了日時」が追加されていることを確認し、出力順を調整して保存します。
  4. 「商品管理」 > 「商品一覧」から通常通りCSVダウンロードを行うと、スケジュール日時が含まれたCSVファイルが出力されます。

10. よくある質問

Q. スケジュールを設定したのにトップページのブロックに表示されません。
以下の点をご確認ください。
1. 商品のステータスが「公開」になっているか。
2. 現在の日時が「公開開始日時 〜 公開終了日時」の有効期間内に入っているか(期間外の商品は表示されません)。
3. プラグイン設定の「フロントブロック表示件数」が適切に設定されているか。
Q. 公開待ち(開始前)の商品を事前に確認できますか?
はい、EC-CUBE管理画面にログインしている同一ブラウザであれば、公開開始前の商品詳細ページにアクセスしてプレビュー表示を確認することが可能です。一般の未ログイン顧客には404が表示されます。
Q. タイムゾーンの基準は何ですか?
EC-CUBEサーバーのシステムタイムゾーン(通常は Asia/Tokyo: JST)を基準に正確に秒単位で判定されます。
Q. PostgreSQL環境でも利用できますか?
はい、MySQL / MariaDB に加え、PostgreSQL 12以降の環境でも自動的に TIMESTAMP WITH TIME ZONE 型としてテーブルを構築し、完全な動作保証を行っております。
Q. カスタムデザインや他社製テーマと競合しませんか?
本プラグインのフロントエンドUIは独自のプレフィックス(.pps-...)で完全にスコープ分離されたCSSを使用しているため、Bootstrapや独自テーマのCSSとクラス名が衝突することはありません。

11. アンインストール時の注意

プラグインをアンインストール(削除)する場合、以下の処理が安全に実行されます。

  • レイアウト管理に配置された「期間限定・公開予定商品」ブロックの自動登録解除。
  • プラグイン設定テーブル(plg_product_publish_schedule_config)の削除。
  • 公開アセット(html/plugin/ProductPublishSchedule)の自動削除。
[補足] 商品データについて 誤ったアンインストールによるデータ消失事故を防ぐため、dtb_product に登録された過去のスケジュール日時データ(カラム)は安全のため保持されます。