EC-CUBE4、EC-CUBE3でお届け日指定を年末年始は除外する方法

年末年始はお届け日指定を避けたいという要望が時々あります。

避けるためには発送日目安を変更すれば対応可能ですが、商品が数千件となると対応するのがめんどくさいです。

その場合、以下の方法をお試しください。

EC-CUBE4の場合

176行目付近にある、for文の内容を以下に変更する事で対応可能です。

  • src/Eccube/Form/Type/Shopping/ShippingType.php
<?php
〜
〜
foreach ($period as $day) {
    // $deliveryDurations[$day->format('Y/m/d')] = $day->format('Y/m/d').'('.$dateFormatter->format($day).')';
    $tmp = $day->format('Ymd');
    if (
        $tmp == '20211229' ||
        $tmp == '20211230' ||
        $tmp == '20211231' ||
        $tmp == '20220101' ||
        $tmp == '20220102' ||
        $tmp == '20220103' ||
        $tmp == '20220104' ||
        $tmp == '20220105'
    ) {
        // 選択できないようにするためセットしない
    } else {
        $deliveryDurations[$day->format('Y/m/d')] = $day->format('Y/m/d').'('.$dateFormatter->format($day).')';
    }
}
〜
〜

EC-CUBE3の場合

ShoppingService.phpgetFormDeliveryDates関数内にある、for文の内容を以下に変更する事で対応可能です。

  • src/Eccube/Service/ShoppingService.php
<?php
〜
〜
foreach ($period as $day) {
    // $deliveryDates[$day->format('Y/m/d')] = $day->format('Y/m/d');
    $tmp = $day->format('Ymd');
    if (
        $tmp == '20211229' ||
        $tmp == '20211230' ||
        $tmp == '20211231' ||
        $tmp == '20220101' ||
        $tmp == '20220102' ||
        $tmp == '20220103' ||
        $tmp == '20220104' ||
        $tmp == '20220105'
    ) {
        // 選択できないようにするためセットしない
    } else {
        $deliveryDates[$day->format('Y/m/d')] = $day->format('Y/m/d');
    }
}
〜
〜

該当する年月日がなければif文の中へ追加してください。