[EC-CUBE] EC-CUBE 2.13
[レンタルサーバ] ロリポップ
[OS] Mac OS X
[PHP] 5.6
[ブラウザ] Chrome最新版
===
お支払い方法にコメントを表示させる
http://dalmore.blog7.fc2.com/blog-entry-160.html上のURLと同様に
支払方法に注釈をつけるカスタマイズをおこなっています。
最初はちゃんと表示されるのですが、
支払方法の上にある配送方法のラジオボタンをチェックし直すと
注釈部分のみ表示されなくなってしまいます。
実際に出力されたhtmlを見てみたところ、
<label for="pay_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrPayment[cnt].payment_method}--><br />
<!--{$arrPayment[cnt].note != ""}--></label>
チェックし直すことで「pay_」の数値が2から1に変わっていました。
2だと表示されていて、1の時は表示されません。
テンプレートは、
data\Smarty\templates\default\shopping\payment.tplで、
該当箇所は以下のとおりです。
<script type="text/javascript">//<![CDATA[
$(function() {
if ($('input[name=deliv_id]:checked').val()
|| $('#deliv_id').val()) {
showForm(true);
} 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);
}
}
}
});
});
/**
* 通信エラー表示.
*/
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();
}
}
});
//]]></script>
<div id="undercolumn">
<div id="undercolumn_shopping">
<p class="flow_area"><img src="<!--{$TPL_URLPATH}-->img/picture/img_flow_02.jpg" alt="購入手続きの流れ" /></p>
<h2 class="title"><!--{$tpl_title|h}--></h2>
<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="mode" value="confirm" />
<input type="hidden" name="uniqid" value="<!--{$tpl_uniqid}-->" />
<!--{assign var=key value="deliv_id"}--> <!--{if $is_single_deliv}-->
<input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" id="deliv_id" />
<!--{else}-->
<div class="pay_area">
<h3>配送方法の指定</h3>
<p>配送方法をご選択ください。</p>
<!--{if $arrErr[$key] != ""}-->
<p class="attention"><!--{$arrErr[$key]}--></p>
<!--{/if}-->
<table summary="配送方法選択">
<col width="20%" />
<col width="80%" />
<tr>
<th class="alignC">選択</th>
<th class="alignC" colspan="2">配送方法</th>
</tr>
<!--{section name=cnt loop=$arrDeliv}-->
<tr>
<td class="alignC">
<input type="radio" id="deliv_<!--{$smarty.section.cnt.iteration}-->" name="<!--{$key}-->"
value="<!--{$arrDeliv[cnt].deliv_id}-->" style="<!--{$arrErr[$key]|sfGetErrorColor}-->"
<!--{$arrDeliv[cnt].deliv_id|sfGetChecked:$arrForm[$key].value}--> />
</td>
<td>
<label for="deliv_<!--{$smarty.section.cnt.iteration}-->"><!--{$arrDeliv[cnt].name|h}-->
<!--{if $arrDeliv[cnt].remark != ""}--><p><!--{$arrDeliv[cnt].remark|h|nl2br}--></p><!--{/if}--></label> </td>
</tr>
<!--{/section}-->
</table>
</div>
<!--{/if}-->
<div class="pay_area">
<h3>お支払方法の指定</h3>
<p class="select-msg">お支払方法をご選択ください。</p>
<p class="non-select-msg">まずはじめに、配送方法を選択ください。</p>
<!--{assign var=key value="payment_id"}-->
<!--{if $arrErr[$key] != ""}-->
<p class="attention"><!--{$arrErr[$key]}--></p>
<!--{/if}-->
<table summary="お支払方法選択" id="payment">
<col width="20%" />
<col width="80%" />
<thead>
<tr>
<th class="alignC">選択</th>
<th class="alignC" colspan="<!--{if !$img_show}-->2<!--{else}-->3<!--{/if}-->" id="payment_method">お支払方法</th>
</tr>
</thead>
<tbody>
<!--{section name=cnt loop=$arrPayment}-->
<tr>
<td class="alignC">
<input type="radio" id="pay_<!--{$smarty.section.cnt.iteration}-->"
name="<!--{$key}-->" value="<!--{$arrPayment[cnt].payment_id}-->"
style="<!--{$arrErr[$key]|sfGetErrorColor}-->"
<!--{$arrPayment[cnt].payment_id|sfGetChecked:$arrForm[$key].value}--> /></td>
<td>
<label for="pay_<!--{$smarty.section.cnt.iteration}-->">
<!--{$arrPayment[cnt].payment_method}--><br />
<!--{$arrPayment[cnt].note != ""}--></label>
</td>
<!--{if $img_show}-->
<td>
<!--{if $arrPayment[cnt].payment_image != ""}-->
<img src="<!--{$smarty.const.IMAGE_SAVE_URLPATH}-->
<!--{$arrPayment[cnt].payment_image}-->" />
<!--{/if}-->
</td>
<!--{/if}-->
</tr>
<!--{/section}-->
</tbody>
</table>
</div>
「pay_」の数値が変わってしまうことで表示されないのだと思うのですが、
なぜチェックし直すことで変わってしまうのか、
この数値はpayment_idでもないようですし、どこから振られているのかわからず
ご存知の方がいましたらご教示いただけないでしょうか?
どうぞよろしくお願いいたします