orderform.sub.php 파일에서 특정 카테고리만 카드결제 아이콘 노출 안시키는 방법
본문
영카트 업데이트 후 특정 카테고리만 카드결제 선택 버튼 안나오게 하는 소스가 먹히지 않네요
$find_ca_id_50 = false;
for ($c=0; $row=sql_fetch_array($cart_re,FALSE); $c++) {
$item_sql = "select * from g5_shop_item where it_id = '{$row[it_id]}'";
$item_re = sql_fetch($item_sql);
$find_item_re = substr($item_re[ca_id], 0,2);
if($find_item_re == "50"){
$find_ca_id_50 = true;
break;
}
}
첫머리 부분에 이부분 하고
신용카드 선택 아이콘 부분에
// 신용카드 사용
if ($default['de_card_use']) {
if($find_ca_id_50 == false){
$multi_settle++;
echo '<input type="radio" id="od_settle_card" name="od_settle_case" value="신용카드" '.$checked.'> <label for="od_settle_card" class="lb_icon card_icon">신용카드</label>'.PHP_EOL;
$checked = '';
}
}
을 이렇게 코딩하여서 사용하였는데...
이 업데이트 이후에 노출이 되네요.. 뭐가 잘못 되었는지 고수분의 지도 부탁 드립니다.
<h3>결제수단</h3>
<?php
if (!$default['de_card_point'])
echo '<p id="sod_frm_pt_alert"><strong>무통장입금</strong> 이외의 결제 수단으로 결제하시는 경우 포인트를 적립해드리지 않습니다.</p>';
$find_ca_id_50 = false;
for ($c=0; $row=sql_fetch_array($cart_re,FALSE); $c++) {
$item_sql = "select * from g5_shop_item where it_id = '{$row[it_id]}'";
$item_re = sql_fetch($item_sql);
$find_item_re = substr($item_re[ca_id], 0,2);
if($find_item_re == "50"){
$find_ca_id_50 = true;
break;
}
}
$multi_settle = 0;
$checked = '';
$escrow_title = "";
if ($default['de_escrow_use']) {
$escrow_title = "에스크로<br>";
}
if ($is_kakaopay_use || $default['de_bank_use'] || $default['de_vbank_use'] || $default['de_iche_use'] || $default['de_card_use'] || $default['de_hp_use'] || $default['de_easy_pay_use'] || $default['de_inicis_lpay_use'] || $default['de_inicis_kakaopay_use']) {
echo '<fieldset id="sod_frm_paysel">';
echo '<legend>결제방법 선택</legend>';
}
// 카카오페이
if($is_kakaopay_use) {
$multi_settle++;
echo '<input type="radio" id="od_settle_kakaopay" name="od_settle_case" value="KAKAOPAY" '.$checked.'> <label for="od_settle_kakaopay" class="kakaopay_icon lb_icon">KAKAOPAY</label>'.PHP_EOL;
$checked = '';
}
// 무통장입금 사용
if ($default['de_bank_use']) {
$multi_settle++;
echo '<input type="radio" id="od_settle_bank" name="od_settle_case" value="무통장" '.$checked.'> <label for="od_settle_bank" class="lb_icon bank_icon">무통장입금</label>'.PHP_EOL;
$checked = '';
}
// 가상계좌 사용
if ($default['de_vbank_use']) {
$multi_settle++;
echo '<input type="radio" id="od_settle_vbank" name="od_settle_case" value="가상계좌" '.$checked.'> <label for="od_settle_vbank" class="lb_icon vbank_icon">'.$escrow_title.'가상계좌</label>'.PHP_EOL;
$checked = '';
}
// 계좌이체 사용
if ($default['de_iche_use']) {
$multi_settle++;
echo '<input type="radio" id="od_settle_iche" name="od_settle_case" value="계좌이체" '.$checked.'> <label for="od_settle_iche" class="lb_icon iche_icon">'.$escrow_title.'계좌이체</label>'.PHP_EOL;
$checked = '';
}
// 휴대폰 사용
if ($default['de_hp_use']) {
$multi_settle++;
echo '<input type="radio" id="od_settle_hp" name="od_settle_case" value="휴대폰" '.$checked.'> <label for="od_settle_hp" class="lb_icon hp_icon">휴대폰</label>'.PHP_EOL;
$checked = '';
}
// 신용카드 사용
if ($default['de_card_use']) {
if($find_ca_id_50 == false){
$multi_settle++;
echo '<input type="radio" id="od_settle_card" name="od_settle_case" value="신용카드" '.$checked.'> <label for="od_settle_card" class="lb_icon card_icon">신용카드</label>'.PHP_EOL;
$checked = '';
}
}
$easypay_prints = array();
답변 1
따로 쿼리하지 마시고
이미 장바구니를 쿼리하고 있으므로
배열 변수만 만들어서 수집하시는게 나을 것 같아요
https://github.com/gnuboard/youngcart5/blob/5.4.5.2/shop/orderform.sub.php#L83-L86
$find_ca_id = array();
for ($i=0; $row=sql_fetch_array($result); $i++)
{
// ca_id 수집
array_push($find_ca_id, $row['ca_id'], $row['ca_id2'], $row['ca_id3']);
// 합계금액 계산
배열값 정리, 카테고리 찾기
https://github.com/gnuboard/youngcart5/blob/5.4.5.2/shop/orderform.sub.php#L236
<?php
$find_ca_id = isset($find_ca_id) && is_array($find_ca_id)
? array_values(array_unique(array_filter($find_ca_id)))
: array();
print_r($find_ca_id);
$find_ca_id_50 = false;
foreach ($find_ca_id as $c) {
if (substr($c, 0, 2) === '50') {
$find_ca_id_50 = true;
break;
}
}
var_dump($find_ca_id_50);
?>
신용카드 출력 조건 추가
https://github.com/gnuboard/youngcart5/blob/5.4.5.2/shop/orderform.sub.php#L611
if ($default['de_card_use'] && $find_ca_id_50 === false) {