結論 : 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をご利用の方はぜひお試しください。

ECCUBE制作トップへ

EC-CUBEカスタマイズに関するお問い合わせはこちら


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ