ec-cube preferd shipping date picker.

ec-cube 2.11.2

お届け時間の指定にDatepicker

LC_Page_Shopping_Payment_Ex.phpで、action()をoverride。

Datepickerで使うため、新しく

$arrDelivFirstDate
$arrDelivLastDate
$arrDelivDateSelected

を定義する。

// お届け日一覧の取得
/* Add for Datepicker ---------------------------- */
$array_deliverDates = $objPurchase->getDelivDate($objCartSess, $cart_key);
$this->arrDelivDate = $array_deliverDates;

$num=0;
foreach ($array_deliverDates as $key => $value) {
    if($num===0){
        $this->arrDelivFirstDate = $value; 
    }
    if($num===(count($array_deliverDates)-1)){
        $this->arrDelivLastDate = $value;
    }
    $num++;
}

$this->arrDelivDateSelecter = $_SESSION['shipping'][0]['shipping_date'];
/* ----- */

payment.tplで、上で定義した変数を使って、datepickerを呼び出す。

下の記述がある辺りで、

お届け時間:
<select name="<!--{$key}-->" id="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
    <option value="" selected="">指定なし</option>
    <!--{assign var=shipping_time_value value=$arrForm[$key].value|default:$shippingItem.time_id}-->
    <!--{html_options options=$arrDelivTime selected=$shipping_time_value}-->
</select>

以下へ変更。

<!--add for datepicker-->
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
var minDate = '<!--{$arrDelivFirstDate}-->';
var maxDate = '<!--{$arrDelivLastDate}-->';
minDate = minDate.replace(/[^0-9\/]/g, "");
maxDate = maxDate.replace(/[^0-9\/]/g, "");
//console.log(minDate);
//console.log(maxDate);
var opt = {
    'dateFormat' : 'yy/mm/dd',
    'minDate' : minDate,
    'maxDate' : maxDate,
    'showAnim': 'clip'
};
$(function() {
$( "#datepicker" ).datepicker(opt);
});
</script>
<input type="text" id="datepicker"  id="<!--{$key}-->"  name="<!--{$key}-->" value="<!--{$arrDelivDateSelecter}-->"/>
<!-- / -->

jsやcssの読み込みは適宜調整。