getListも検索したのですが発見できず、
SC_Helper_Deliveryということがわかりませんでした。
本当に、本当に、ありがとうございます。
システムエラーの嵐でしたが、
最終的に下記のように変更しました。
/**
* 配送方法一覧の取得.
*
* @param integer $product_type_id 商品種別ID
* @param boolean $has_deleted 削除された支払方法も含む場合 true; 初期値 false
* @return array
*/
public function getList($product_type_id = null, $has_deleted = false, $mail_delivery_available = true)
{
$mail_deliv_id = 20;
$objQuery = & SC_Query_Ex::getSingletonInstance();
$objQuery->setOrder('rank DESC');
$where='product_type_id = ? AND del_flg = 0';
$arrval=array($product_type_id);
if(!$mail_delivery_available){
$where .= ' AND deliv_id ! = ?';
$arrval[] = $mail_deliv_id;
}
$objQuery =& SC_Query_Ex::getSingletonInstance();
$col = '*';
$where = '';
$arrVal = array();
if (!$has_deleted) {
$where .= 'del_flg = 0';
}
if (!is_null($product_type_id)) {
if (!$has_deleted) {
$where .= ' AND ';
}
$where .= 'product_type_id = ?';
$arrVal[] = $product_type_id;
}
$table = 'dtb_deliv';
$objQuery->setOrder('rank DESC');
$arrRet = $objQuery->select($col, $table, $where, $arrVal);
return $objQuery->select('*', 'dtb_deliv', $where ,$arrval );
}
$objQuery = & SC_Query_Ex::getSingletonInstance();
$objQuery->setOrder('rank DESC');
などは重複しているのですが、削除すべきなのでしょうか。
検索等を行ったのですが、解決できず、上記のようになってしまいました。
その後、
EC-CUBE メール便では着日指定できないようにしておく
http://tech.bandersnatch.jp/387上記カスタマイズにて、
/data/Smarty/templates/default/shopping/payment.tplを
<!--{if $cartKey != $smarty.const.PRODUCT_TYPE_DOWNLOAD}-->
<div class="pay_area02">
<h3>お届け時間の指定</h3>
<div class="pay_area02_display">
<p class="select-msg">ご希望の方は、お届け時間を選択してください。</p>
<p class="non-select-msg">まずはじめに、配送方法を選択ください。</p>
<!--{foreach item=shippingItem name=shippingItem from=$arrShipping}-->
<!--{assign var=index value=$shippingItem.shipping_id}-->
<div class="delivdate top">
<!--{if $is_multiple}-->
<span class="st">▼<!--{$shippingItem.shipping_name01}--><!--{$shippingItem.shipping_name02}-->
<!--{$arrPref[$shippingItem.shipping_pref]}--><!--{$shippingItem.shipping_addr01}--><!--{$shippingItem.shipping_addr02}--></span><br/>
<!--{/if}-->
<!--★お届け日★-->
<!--{assign var=key value="deliv_date`$index`"}-->
<span class="attention"><!--{$arrErr[$key]}--></span>
お届け日:
<!--{if !$arrDelivDate}-->
ご指定頂けません。
<!--{else}-->
<select name="<!--{$key}-->" id="<!--{$key}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->">
<option value="" selected="">指定なし</option>
<!--{assign var=shipping_date_value value=$arrForm[$key].value|default:$shippingItem.shipping_date}-->
<!--{html_options options=$arrDelivDate selected=$shipping_date_value}-->
</select>
<!--{/if}-->
<!--★お届け時間★-->
<!--{assign var=key value="deliv_time_id`$index`"}-->
<span class="attention"><!--{$arrErr[$key]}--></span>
お届け時間:
<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>
</div>
<!--{/foreach}-->
</div>
<div class="pay_area02_display_mail">
※メール便は指定できません。
</div>
</div>
<!--{/if}-->
上記のようにし、さらにjavascriptを、
<script type="text/javascript">//<![CDATA[
$(function() {
if ($('input[name=deliv_id]:checked').val()
|| $('#deliv_id').val()) {
showForm(true);
changeForm(deliv_id);
} else {
showForm(false);
}
$('input[id^=deliv_]').click(function() {
showForm(true);
var data = {};
data.mode = 'select_deliv';
data.deliv_id = $(this).val();
data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->';
$.ajax({
type : 'POST',
url : location.pathname,
data: data,
cache : false,
dataType : 'json',
error : remoteException,
success : function(data, dataType) {
if (data.error) {
remoteException();
} else {
// 支払い方法の行を生成
var payment_tbody = $('#payment tbody');
payment_tbody.empty();
for (var i in data.arrPayment) {
// ラジオボタン
<!--{* IE7未満対応のため name と id をベタ書きする *}-->
var radio = $('<input type="radio" name="payment_id" id="pay_' + i + '" />')
.val(data.arrPayment[i].payment_id);
// ラベル
var label = $('<label />')
.attr('for', 'pay_' + i)
.text(data.arrPayment[i].payment_method);
// 行
var tr = $('<tr />')
.append($('<td />')
.addClass('alignC')
.append(radio))
.append($('<td />').append(label));
// 支払方法の画像が登録されている場合は表示
if (data.img_show) {
var payment_image = data.arrPayment[i].payment_image;
$('th#payment_method').attr('colspan', 3);
if (payment_image) {
var img = $('<img />').attr('src', '<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->' + payment_image);
tr.append($('<td />').append(img));
} else {
tr.append($('<td />'));
}
} else {
$('th#payment_method').attr('colspan', 2);
}
tr.appendTo(payment_tbody);
}
// お届け時間を生成
var deliv_time_id_select = $('select[id^=deliv_time_id]');
deliv_time_id_select.empty();
deliv_time_id_select.append($('<option />').text('指定なし').val(''));
for (var i in data.arrDelivTime) {
var option = $('<option />')
.val(i)
.text(data.arrDelivTime[i])
.appendTo(deliv_time_id_select);
}
}
changeForm(deliv_id);
}
});
});
/**
* 通信エラー表示.
*/
function remoteException(XMLHttpRequest, textStatus, errorThrown) {
alert('通信中にエラーが発生しました。カート画面に移動します。');
location.href = '<!--{$smarty.const.CART_URL}-->';
}
/**
* 配送方法の選択状態により表示を切り替える
*/
function showForm(show) {
if (show) {
$('#payment, div.delivdate, .select-msg').show();
$('.non-select-msg').hide();
} else {
$('#payment, div.delivdate, .select-msg').hide();
$('.non-select-msg').show();
}
}
function changeForm(deliv_id) {
var deliv_time_id_select = $('select[id^=deliv_time_id]');
var deliv_date_select = $('select[id^=deliv_date]');
if (deliv_id=='20') {
if(deliv_time_id_select){
deliv_time_id_select.attr("disabled", "disabled");
}
if(deliv_date_select){
deliv_date_select.attr("disabled", "disabled");
}
$('div.pay_area02_display_mail').show();
$('div.pay_area02_display').hide();
} else {
$('div.pay_area02_display').show();
$('div.pay_area02_display_mail').hide();
if(deliv_time_id_select){
deliv_time_id_select.removeAttr("disabled");
}
if(deliv_date_select){
deliv_date_select.removeAttr("disabled");
}
}
}
});
//]]></script>
上記のように変更致しました。
ですが、
宅急便商品でもメール便が表示されたままで、
配送方法を選択すると、
「通信中にエラーが発生しました。カートへ移動します。」
のメッセージとともにカートへ戻されてしまいます。
ただただ間違っていることしかわからない状態で、
WEB等で調べに調べているのですが、なかなか解決に至りません。
何卒、ご教示頂ければ幸いです。