2016.11.13
【カラーミー】「カートに入れる」を複数設置する方法
ネットショップの作成・運営が簡単にできる人気のサービス「カラーミーショップ」ですが、商品を購入するページで、標準では「カートに入れる」ボタンが1つしか置けません。
スマートフォン等、ページが長くなるときに上下2つ設置したい場合があると思います。その方法をメモメモ。
▼テンプレート「商品詳細」
<form name="product_form" method="post" action="<{$cart_url}>">
(中略)
<{if $product.soldout_flg == 0 && $shop_stop_flg == false && $product.login_sale_flg == false }>
<tr>
<th>購入数</th>
<td style="padding: 0px 5px;">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="padding: 0px;">
<input type="text" name="product_num" value="<{$product.init_num}>" style="width: 50px;" onKeyUp="change_key_num()"/>
</td>
<td style="padding: 0px;">
<div style="width: 15px; margin: 0px;">
<a href="<{$num_up_url|regex_replace:'/f_change_num2/':'change_button_num'}>"><img src="<{$num_up_img_url}>"></a>
<a href="<{$num_dw_url|regex_replace:'/f_change_num2/':'change_button_num'}>"><img src="<{$num_dw_img_url}>"></a>
</div>
</td>
<td style="padding: 0px;"><{$product.unit}></td>
</tr>
</table>
</td>
</tr>
<{/if}>
(中略)
<{if $product.soldout_flg == 0 && $shop_stop_flg == false && $product.login_sale_flg == false }>
<tr>
<th>購入数</th>
<td style="padding: 0px 5px;">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td style="padding: 0px;">
<input type="text" name="product_num2" value="<{$product.init_num}>" style="width: 50px;" onKeyUp="change_key_num2()" />
</td>
<td style="padding: 0px;">
<div style="width: 15px; margin: 0px;">
<a href="<{$num_up_url|regex_replace:'/f_change_num2\(document.product_form.product_num/':'change_button_num(document.product_form.product_num2'}>"><img src="<{$num_up_img_url}>"></a>
<a href="<{$num_dw_url|regex_replace:'/f_change_num2\(document.product_form.product_num/':'change_button_num(document.product_form.product_num2'}>"><img src="<{$num_dw_img_url}>"></a>
</div>
</td>
<td style="padding: 0px;"><{$product.unit}></td>
</tr>
</table>
</td>
</tr>
<{/if}>
(中略)
</form>
▼JavaScript
function change_key_num(){
document.product_form.product_num2.value = document.product_form.product_num.value;
}
function change_key_num2(){
document.product_form.product_num.value = document.product_form.product_num2.value;
}
//***********************************
//個数UP・DOWNボタン処理(差し替え版)
//***********************************
function change_button_num(select, pType, pMinNum, pStockNum) {
if( select.value.match(/[^0-9]/)){ select.value = pMinNum; return; }
wNum = parseInt(select.value);
if (pType == "0" && wNum > pMinNum) {
document.product_form.product_num.value = String(wNum-1);
document.product_form.product_num2.value = String(wNum-1);
}
if (pType == "1") {
if (pStockNum) {
if (wNum >= pStockNum) return;
}
document.product_form.product_num.value = String(wNum+1);
document.product_form.product_num2.value = String(wNum+1);
}
}
さらにサイズやカラーなどのオプション項目も連動させる方法をメモメモ。
▼テンプレート「商品詳細」
<!--1つ目-->
<{section name=num loop=$option}>
<div class="cell_mar">
<select name="<{$option[num].select_name}>" onchange="option_change(<{$option[num].id}>, 1)" id="s<{$option[num].id}>1">
<option value="">選択してください</option>
<{html_options values=$option_value[num].id output=$option_value[num].name selected=$key }>
</select>
</div>
<{/section}>
<!--2つ目-->
<{section name=num loop=$option}>
<div class="cell_mar">
<select name="<{$option[num].select_name}>2" onchange="option_change(<{$option[num].id}>, 2)" id="s<{$option[num].id}>2">
<option value="">選択してください</option>
<{html_options values=$option_value[num].id output=$option_value[num].name selected=$key }>
</select>
</div>
<{/section}>
▼JavaScript
<script type="text/javascript">
<!--
function option_change(oid, p){
if(p==1){
var n = $("#s" + oid + "1")[0].selectedIndex;
$("#s" + oid + "2")[0].selectedIndex=n;
}
else if(p==2) {
var n = $("#s" + oid + "2")[0].selectedIndex;
$("#s" + oid + "1")[0].selectedIndex=n;
}
}
// -->
</script >