배송업체 여러개 선택 하게 기능 수정방법 정보
배송업체 여러개 선택 하게 기능 수정방법
본문
안녕하세요
프리랜서로 활동중인 비버팩토리입니다.
이번에 영카트 쓸일이 많다보니 고객님의 요청으로 배송 업체 여러개 설정 방법에 대해서 남겨봅니다.
/adm/shop_admin/configform.php
파일 접속합니다.
보면 배송업체라고 한 라인이 있습니다. 거기를 아래 소스코드로 변경해주세요.
<tr>
<th scope="row"><label for="de_delivery_company">배송업체</label></th>
<td>
<?php echo help("이용 중이거나 이용하실 배송업체를 선택하세요."); ?>
<?php echo get_delivery_company_checkbox($default['de_delivery_company']); ?>
</td>
</tr>
그리고나서 아래 함수를 옮겨주세요. (적절한곳에 옮겨주세요 혹은 따로 확장시켜서 옮겨주심됩니다. )
if(!function_exists('get_delivery_company_checkbox')) {
// 배송업체 리스트 얻기
function get_delivery_company_checkbox($company)
{
// 선택된 회사들을 배열로 처리 (콤마로 구분된 문자열이라면 분리)
$selected_companies = is_array($company) ? $company : explode(',', $company);
$checkbox = '';
// "없음" 체크박스
$checked = in_array('', $selected_companies) ? 'checked' : '';
$checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="" ' . $checked . '> 없음</label><br>' . PHP_EOL;
// "자체배송" 체크박스
$checked = in_array('자체배송', $selected_companies) ? 'checked' : '';
$checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="자체배송" ' . $checked . '> 자체배송</label><br>' . PHP_EOL;
// 설정된 배송 업체 목록 처리
$dlcomp = explode(")", str_replace("(", "", G5_DELIVERY_COMPANY));
for ($i = 0; $i < count($dlcomp); $i++) {
if (trim($dlcomp[$i]) == "") continue;
list($value, $url, $tel) = explode("^", $dlcomp[$i]);
$checked = in_array($value, $selected_companies) ? 'checked' : '';
$checkbox .= '<label><input type="checkbox" name="de_delivery_company[]" value="' . $value . '" ' . $checked . '> ' . $value . '</label><br>' . PHP_EOL;
}
return $checkbox;
}
}
이제는 백엔드로 넘어가도록 합니다.
/adm/shop_admin/configformupdate.php 파일 접근합니다.
$check_sanitize_keys = array( 여기 배열 변수로 이동합니다.
여기보면 //배송업체 라고 주석처리 된곳을 찾습니다.
거기부분을 주석처리 합니다. 혹은 이부분 삭제 하셔도됩니다.
//'de_delivery_company', //배송업체
이유는 필드에 콤마를 제거 되어서 에러가 납니다.
이러고 저장합니다. 나머진 훅을 사용하면됩니다.
run_event('shop_admin_configformupdate');
여기서 택배배송 필드를 저장하는 기능을 만들면됩니다. (이부분은 따로 입력 안하셔도 됩니다.)
add_event('shop_admin_configformupdate',function () {
global $g5;
if (isset($_POST['de_delivery_company']) && is_array($_POST['de_delivery_company'])) {
// 배열을 문자열로 변환
$delivery_company = implode(',', $_POST['de_delivery_company']);
} else {
// 아무 것도 선택 안 했을 경우
$delivery_company = '';
}
// DB에 업데이트
$sql = "UPDATE {$g5['g5_shop_default_table']}
SET de_delivery_company = '".sql_real_escape_string($delivery_company)."'
WHERE de_id = '1'";
sql_query($sql);
}, G5_HOOK_DEFAULT_PRIORITY, 0);
이부분은 예를들어 가나다, 마바사 이렇게 콤마로 분리시켜 디비에 저장하는 쿼리 입니다.
이거 그대로 사용하시면 됩니다. 문제시 댓글로 남겨주세요. 그리고 맘에 드시면 좋아요 한번씩 눌러주세요^^
읽어주셔서 감사합니다. 끝!
추천
1
1
댓글 0개