結論 : ShoppingServiceのgetFormDeliveryDates()を確認する。
config.ymlでdeliv_date_end_maxを設定すると表示される選択肢の日数を変更できる。
注文時に選択可能なお届け日を調整する方法をご紹介します。
この選択可能な日付のリストはShoppingServiceというサービスクラスのgetFormDeliveryDatesメソッドによって作られています。
/** * お届け日を取得 * * @param Order $Order * @return array */ public function getFormDeliveryDates(Order $Order) { // お届け日の設定 $minDate = 0; $deliveryDateFlag = false; // 配送時に最大となる商品日数を取得 foreach ($Order->getOrderDetails() as $detail) { $deliveryDate = $detail->getProductClass()->getDeliveryDate(); if (!is_null($deliveryDate)) { if ($minDate < $deliveryDate->getValue()) { $minDate = $deliveryDate->getValue(); } // 配送日数が設定されている $deliveryDateFlag = true; } } // 配達最大日数期間を設定 $deliveryDates = array(); // 配送日数が設定されている if ($deliveryDateFlag) { $period = new \DatePeriod ( new \DateTime($minDate . ' day'), new \DateInterval('P1D'), new \DateTime($minDate + $this->app['config']['deliv_date_end_max'] . ' day') ); foreach ($period as $day) { $deliveryDates[$day->format('Y/m/d')] = $day->format('Y/m/d'); } } return $deliveryDates; }
コードを簡単に説明すると配送時に最大となる商品日数を取得し、そこにdeliv_date_end_maxで指定した日数分の配列を作成しています。(デフォルト21日)
選択できる日付を変更するには、このメソッドでreturnする配列を修正してやればOKです。
EC-CUBEをご利用の方はぜひお試しください。
EC-CUBEに関するお問い合わせ
[重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。